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.2 Calculation of Residues
The calculation of a Laurent series expansion is tedious in most circumstances. Since the residue at
involves only the coefficient
in the Laurent expansion, we seek a method to calculate the residue from special information about the nature of the singularity at
.
If
has a removable singularity at
, then
for
. Therefore if
is a removable singularity, then
. The following theorem gives methods for evaluating residues at poles.
Theorem 8.2 (Residues at Poles)
(i)
If
has a simple pole at
, then
Res[f,
] =
.
(ii)
If
has a pole of order
at
, then
Res[f,
] =
.
(iii)
If
has a pole of order
at
, then
Res[f,
] =
.
Load Maple's "residue" procedure.
Make sure this is done only ONCE during a Maple session.
> readlib(residue):
Example 8.4, Page 311.
Find the residue of
at
.
>
f:='f': z:='z':
f := z -> Pi*cot(Pi*z)/z^2:
`f(z) ` = f(z);
The function
has a pole of order
at
.
Next, the residue at
is determined using derivatives:
>
`z^3 f(z) ` = z^3 * f(z);
D1 := diff(z^3 * f(z), z):
D2 := factor(diff(z^3 * f(z), z$2)):
L := 1/2! * limit(D2, z=0):
Diff(z^3*`f(z)`,z) = D1;
Diff(z^3*`f(z)`,z$2) = D2;
Limit(Diff(z^3*`f(z)`,z$2),z=0)/2! = L;
We compare this with Maple's residue procedure for computing residues.
>
`f(z) ` = f(z);
`Res[f,0] ` = residue(f(z), z=0);
Which is the coefficient of
in the Laurent series expansion for
.
>
`f(z) ` = f(z);
`f(z) ` = series(f(z), z=0, 7);
Example 8.5, Page 312.
Use residues to integrate
around
:
.
>
f:='f': F:='F': z:='z':
f := z -> 1/(z^4 + z^3 - 2*z^2):
`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;
Find out which singularities lie within a circle
.
>
print(abs(z[1]) ,`< 3 `, abs(z1)<3, evalb(evalf(abs(z1))<3));
print(abs(z[2]) ,`< 3 `, abs(z2)<3, evalb(evalf(abs(z2))<3));
print(abs(z[3]) ,`< 3 `, abs(z3)<3, evalb(evalf(abs(z3))<3));
print(abs(z[4]) ,`< 3 `, abs(z4)<3, evalb(evalf(abs(z4))<3));
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;
r2 := residue(f(z), z=z2): `Res[f`,z2,`] ` = r2;
r4 := residue(f(z), z=z4): `Res[f`,z4,`] ` = r4;
The value of the integral is computed by using the residue calculus:
>
`f(z)` = f(z);
val := 2*Pi*I*(r1 + r2 + r4):
Int(f(z),z=C..``) = val;
Example 8.6, Page 312.
Use residues to integrate
around
:
.
>
f:='f': F:='F': z:='z':
f := z -> 1/(z^4 + 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;
Find out which singularities lie within a circle
.
>
print(abs(z[1]-1),`< 2 `,abs(z1-1)<2, evalb(evalf(abs(z1-1))<2));
print(abs(z[2]-1),`< 2 `,abs(z2-1)<2, evalb(evalf(abs(z2-1))<2));
print(abs(z[3]-1),`< 2 `,abs(z3-1)<2, evalb(evalf(abs(z3-1))<2));
print(abs(z[4]-1),`< 2 `,abs(z4-1)<2, evalb(evalf(abs(z4-1))<2));
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
and
.
>
r1 := residue(f(z), z=z1): `Res[f`,z1,`] ` = r1;
r2 := residue(f(z), z=z2): `Res[f`,z2,`] ` = r2;
The value of the integral is computed by using the residue calculus:
>
val := 2*Pi*(r1 + r2):
Int(f(z),z=C..``) = val;
Example 8.8, Page 314.
Find the partial fraction expansion of
.
>
f:='f': z:='z':
f := z -> (3*z + 2)/(z*(z - 1)*(z - 2)):
Zn := sort([solve(denom(f(z))=0, z)]):
Rn := array(1..nops(Zn)):
Sn := array(1..nops(Zn)):
F := 0:
for i from 1 to nops(Zn) do
if i=1 then p:=1 fi;
if 1<i and Zn[i-1]=Zn[i] then
p := p+1 else p := 1 fi;
Rn[i] := residue((z-Zn[i])^(p-1)*f(z), z=Zn[i]);
Sn[i] := Rn[i]/(z-Zn[i])^p;
F := F + Rn[i]/(z-Zn[i])^p;
od:
Z := array(1..nops(F)):
R := array(1..nops(F)):
S := array(1..nops(F)):
p := 1:
for i from 1 to nops(Zn) do
if Sn[i]<>0 then
Z[p]:=Zn[i]; R[p]:=Rn[i]; S[p]:=Sn[i]; p:=p+1 fi;
od:
`f(z) ` = f(z);
print(`Singularities of f(z)`, Z);
`f(z) ` = F;
Compare this with Maple's "parfrac" procedure for the partial fraction expansion.
>
`f(z) ` = f(z);
`f(z) ` = convert(f(z), parfrac, z);
Example 8.9, Page 315.
Find the partial fraction expansion of
.
>
f:='f': z:='z':
f := z -> (z^2 + 3*z + 2)/(z^2 *(z - 1)):
Zn := sort([solve(denom(f(z))=0, z)]):
Rn := array(1..nops(Zn)):
Sn := array(1..nops(Zn)):
F := 0:
for i from 1 to nops(Zn) do
if i=1 then p:=1 fi;
if 1<i and Zn[i-1]=Zn[i] then
p := p+1 else p := 1 fi;
Rn[i] := residue((z-Zn[i])^(p-1)*f(z), z=Zn[i]);
Sn[i] := Rn[i]/(z-Zn[i])^p;
F := F + Rn[i]/(z-Zn[i])^p;
od:
Z := array(1..nops(F)):
R := array(1..nops(F)):
S := array(1..nops(F)):
p := 1:
for i from 1 to nops(Zn) do
if Sn[i]<>0 then
Z[p]:=Zn[i]; R[p]:=Rn[i]; S[p]:=Sn[i]; p:=p+1 fi;
od:
`f(z) ` = f(z);
print(`Singularities of f(z)`, Z);
`f(z) ` = F;
Compare this with Maple's "parfrac" procedure for the partial fraction expansion.
>
`f(z) ` = f(z);
`f(z) ` = convert(f(z), parfrac, z);
An Extra Example, Page 314.
Find the partial fraction expansion of
.
>
f:='f': z:='z':
f := z -> 1/(z^4 - 1):
Zn := sort([solve(denom(f(z))=0, z)]):
Rn := array(1..nops(Zn)):
Sn := array(1..nops(Zn)):
F := 0:
for i from 1 to nops(Zn) do
if i=1 then p:=1 fi;
if 1<i and Zn[i-1]=Zn[i] then
p := p+1 else p := 1 fi;
Rn[i] := residue((z-Zn[i])^(p-1)*f(z), z=Zn[i]);
Sn[i] := Rn[i]/(z-Zn[i])^p;
F := F + Rn[i]/(z-Zn[i])^p;
od:
Z := array(1..nops(F)):
R := array(1..nops(F)):
S := array(1..nops(F)):
p := 1:
for i from 1 to nops(Zn) do
if Sn[i]<>0 then
Z[p]:=Zn[i]; R[p]:=Rn[i]; S[p]:=Sn[i]; p:=p+1 fi;
od:
`f(z) ` = f(z);
print(`Singularities of f(z)`, Z);
`f(z) ` = F;
Compare this with Maple's "parfrac" procedure for the partial fraction expansion.
>
`f(z) ` = f(z);
`f(z) ` = convert(f(z), parfrac, z);
Notice that Maple does not expand the quadratic term involving
.
End of Section 8.2.