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.