COMPLEX ANALYSIS: Maple Worksheets, 2001
(c) John H. Mathews Russell W. Howell
mathews@fullerton.edu howell@westmont.edu
Complimentary software to accompany the textbook:
COMPLEX ANALYSIS: for Mathematics & Engineering, 4th Ed, 2001, ISBN: 0-7637-1425-9
Jones and Bartlett Publishers, Inc., 40 Tall Pine Drive, Sudbury, MA 01776
Tele. (800) 832-0034; FAX: (508) 443-8000, E-mail: mkt@jbpub.com, http://www.jbpub.com/
CHAPTER 8 RESIDUE THEORY
Section 8.4 Improper Integrals of Rational Functions
An important application of the theory of residues is the evaluation of certain types of improper integrals. Let
be a continuous function of the real variable
on the interval
. Recall from calculus that the improper integral
over
is defined by
, provided that the limit exists.
If
is defined for all real
, then the integral of
over
is defined by
=
+
, provided that the limit exists.
Load Maple's "residue" procedure.
Make sure this is done only ONCE during a Maple session.
> readlib(residue):
Example 8.13, Page 323.
Evaluate
.
>
f:='f': F:='F': x:='x':
f := x -> x:
g := int(f(x),x):
`F(x) ` = f(x);
`G(x) = `, int(F(x),x) = int(f(x),x);
>
limit(int(F(x),x=-R..R), R=infinity) = int(f(x),x=-infinity..infinity);
int(F(x),x) = int(f(x),x);
lim := limit(int(f(x),x=-R..R),R=infinity):
limit(int(F(x),x=-R..R), R=infinity) = lim;
Definition 8.2: Cauchy principal value
Let
be a continuous real valued function for all
.
The
Cauchy principal value
(P.V.) of the integral
is defined by
provided that the limit exists.
Example 8.14, Page 323.
Evaluate the integral
.
>
f:='f': F:='F': z:='z':
f := z -> 1/(z^2 + 1):
`f(z) ` = f(z);
Find the singularities of
.
>
Zn := sort([solve(denom(f(z))=0, z)]):
`For f(z) ` = f(z);
`The singularities are:`;
z1 := subs(z=Zn[1],z): z[1] = z1;
z2 := subs(z=Zn[2],z): z[2] = z2;
Which poles lie in the upper half plane ?
>
print(`0 < `,Im(z[1]), ` `, Im(z1)>0, evalb(evalf(Im(z1))>0));
print(`0 < `,Im(z[2]), ` `, Im(z2)>0, evalb(evalf(Im(z2))>0));
Remark. Sometimes Maple will form the list of values in a different order.
It is always necessary to visually inspect the above results before proceeding.
Compute the residue at
.
> r1 := residue(f(z), z=z1): `Res[f`,z1,`] ` = r1;
The value of the integral is computed by the residue calculus:
>
`F(x)` = f(x);
val := 2*Pi*I*r1:
print(int(F(x),x=-infinity..infinity) = val);
Or, we can evaluate the integral with anti-derivatives:
>
F:='F': g:='g': G:='G':
g := z -> subs(Z=z,int(f(Z),Z)):
`F(x) ` = f(x);
`G(x) = `, int(F(x),x) = g(x);
`G(-oo)` = simplify(g(-infinity)),` and `,
`G(oo)` = simplify(g(infinity));
`G(oo) - G(-oo)` = g(infinity) - g(-infinity);
`G(oo) - G(-oo)` = simplify(g(infinity) - g(-infinity));
val := int(f(x),x=-infinity..infinity):
print(int(F(x),x=-infinity..infinity) = val);
The above answer is correct too.
If
, where
and
are polynomials, then
is called a
rational function
. You probably learned techniques in calculus to integrate certain types of rational functions. We now show how to use the residue theorem to obtain the Cauchy principal value of the integral of
over
.
Theorem 8.3
Let
where
and
are polynomials, of degree
and
, respectively.
If
for all real
and
, then
,
where
,
, ...,
are the poles of
that lie in the upper half plane.
Example 8.15, Page 325.
Use the residue calculus to evaluate the integral
.
>
f:='f': F:='F': z:='z':
f := z -> 1/((z^2 + 1)*(z^2 + 4)):
`f(z) ` = f(z);
Find the singularities of
.
>
Zn := sort([solve(denom(f(z))=0, z)]):
`For f(z) ` = f(z);
`The singularities are:`;
z1 := subs(z=Zn[1],z): z[1] = z1;
z2 := subs(z=Zn[2],z): z[2] = z2;
z3 := subs(z=Zn[3],z): z[3] = z3;
z4 := subs(z=Zn[4],z): z[4] = z4;
Which poles lie in the upper half plane?
>
print(`0 <`,Im(z[1]),` `, Im(z1)>0, evalb(evalf(Im(z1))>0));
print(`0 <`,Im(z[2]),` `, Im(z2)>0, evalb(evalf(Im(z2))>0));
print(`0 <`,Im(z[3]),` `, Im(z3)>0, evalb(evalf(Im(z3))>0));
print(`0 <`,Im(z[4]),` `, Im(z4)>0, evalb(evalf(Im(z4))>0));
Remark. Sometimes Maple will form the list of values in a different order.
It is always necessary to visually inspect the above results before proceeding.
Compute the residues at
and
.
>
r1 := residue(f(z), z=z1): `Res[f`,z1,`] ` = r1;
r3 := residue(f(z), z=z3): `Res[f`,z3,`] ` = r3;
The value of the integral is computed by the residue calculus:
>
`F(x)` = f(x);
val := 2*Pi*I*(r1 + r3):
print(int(F(x),x=-infinity..infinity) = val);
Or, we can evaluate the integral with anti-derivatives:
>
g := z -> subs(Z=z,int(f(Z),Z)):
`F(x) ` = f(x);
`G(x) =`, int(F(x),x) = g(x);
`G(-oo)` = simplify(g(-infinity)),` and `,
`G(oo)` = simplify(g(infinity));
`G(oo) - G(-oo)` = g(infinity) - g(-infinity);
`G(oo) - G(-oo)` = simplify(g(infinity) - g(-infinity));
val2 := int(f(x),x=-infinity..infinity):
print(int(F(x),x=-infinity..infinity) = val2);
The above answer is correct too.
Example 8.16, Page 325.
Use the residue calculus to evaluate the integral:
.
>
f:='f': F:='F': z:='z':
f := z -> 1/(z^2 + 4)^3:
`f(z) ` = f(z);
Find the singularities of
.
>
Zn := sort([solve(denom(f(z))=0, z)]):
`For f(z) ` = f(z);
`The singularities are:`;
z1 := subs(z=Zn[1],z): z[1] = z1;
z2 := subs(z=Zn[2],z): z[2] = z2;
z3 := subs(z=Zn[3],z): z[3] = z3;
z4 := subs(z=Zn[4],z): z[4] = z4;
z5 := subs(z=Zn[5],z): z[5] = z5;
z6 := subs(z=Zn[6],z): z[6] = z6;
Which poles lie in the upper half plane?
>
print(`0 <`,Im(z[1]),` `,Im(z1)>0, evalb(evalf(Im(z1))>0));
print(`0 <`,Im(z[2]),` `,Im(z2)>0, evalb(evalf(Im(z2))>0));
print(`0 <`,Im(z[3]),` `,Im(z3)>0, evalb(evalf(Im(z3))>0));
print(`0 <`,Im(z[4]),` `,Im(z4)>0, evalb(evalf(Im(z4))>0));
print(`0 <`,Im(z[5]),` `,Im(z5)>0, evalb(evalf(Im(z5))>0));
print(`0 <`,Im(z[6]),` `,Im(z6)>0, evalb(evalf(Im(z6))>0));
Remark. Sometimes Maple will form the list of values in a different order.
It is always necessary to visually inspect the above results before proceeding.
Compute the residue at
.
> r1 := residue(f(z), z=z1): `Res[f`,z1,`] ` = r1;
The value of the integral is computed by the residue calculus:
>
`F(x)` = f(x);
val := 2*Pi*I*r1:
print(int(F(x),x=-infinity..infinity) = val);
Or, we can evaluate the integral with anti-derivatives:
>
G:='G':
g := z -> subs(Z=z,int(f(Z),Z)):
`F(x) ` = f(x);
`G(x) = `, int(F(x),x) = g(x);
print(`Now do the above computation with limits!`);
g1 := limit(g(z),z=-infinity):
g2 := limit(g(z),z= infinity):
Limit(G(x), x=-oo) = g1;
Limit(G(x), x=+oo) = g2;
`G(-oo) = ` = g1;
`G(oo) = ` = g2;
`G(oo) - G(-oo) = ` = g2 - g1;
val2 := int(f(x),x=-infinity..infinity):
print(int(F(x),x=-infinity..infinity) = val2);
The above answer is correct too.
End of Section 8.4.