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 6 COMPLEX
INTEGRATION
Section 6.3 The Cauchy-Goursat
Theorem
The Cauchy-Goursat theorem states that within certain domains the integral of an analytic function over a simple closed contour is zero. An extension of this theorem will allow us to replace integrals over certain complicated contours with integrals over contours that are easy to evaluate. We will show how to use the technique of partial fractions together with the Cauchy-Goursat theorem to evaluate certain integrals. In Section 6.4 we will see that the Cauchy-Goursat theorem implies that an analytic function has an antiderivative. To start with, we need to introduce a few new concepts.
We saw in Section 1.6 that each
simple closed contour
divides the plane into two domains.
One domain is bounded and is called the
interior
of
, and the other domain is unbounded
and is called the
exterior
of
. This result is known as the Jordan
Curve Theorem.
Reall that a domain
is a connected open set. In
particular, if
and
are any pair of points in
, then they can be joined by a curve
that lies entirely in
. A domain
is said to be
simply connected
if it has the property that any
simple closed contour
contained in
has its interior contained in
. In other words, there are no
"holes'' in a simply connected domain. A domain that is not simply
connected is said to be a
multiply connected
domain .
Let the simple closed contour
have the parametrization
, for
a
t
b. If
is parametrized so that the interior
of
is kept on the left as
moves around
, then we say that
is oriented in the
positive
(counterclockwise) sense; otherwise,
is oriented
negatively
. If
is positively oriented, then
is negatively oriented.
Green's theorem, an important result from the calculus of real variables, tells us how to evaluate the line integral of real-valued functions.
Theorem 6.4 (Green's Theorem)
Let
be a simple closed contour with
positive orientation, and let
be the domain that forms the
interior of
.
If
and
are continuous and have continuous
partial derivatives at all points on
and
, then
.
We are now ready to state the main result of this section.
Theorem 6.5 (Cauchy-Goursat
Theorem) Let
be analytic in a simply connected
domain
.
If
is a simple closed contour that lies
in
, then
.
Load Maple's "redidue"
procedure.
Make sure this is done only ONCE during a Maple session.
> readlib(residue):
Example 6.12, Page 229.
Let us recall that
,
, and
, where n is a positive
integer, are all entire functions and have continuous derivatives.
For illustration set
,
and choose the contour to be the unit circle
:
with positive orientation.
The Cauchy-Goursat theorem implies that for any simple closed contour
we have:
(a)
,
(b)
,
(c)
(a)
First, consider
, which can be verified with the
computation:
> dz
:='dz':f:='f':F:='F':g:='g':t:='t':T:='T':z:='z':Z:='Z':z1:='z1':
f := z -> exp(z):
`f(z) ` = f(z);
z := t -> exp(I*t):
`C: z(t) ` = z(t);
`f(z(t)) ` = f(z(t));
z1 := t -> subs(T=t,diff(z(T), T)):
`dz = z '(t) dt ` = z1(t), `dt`;
Int(f(z),z=C..``) = Int(f(z(t))*z1(t),t=0..2*pi);
`The anti-derivative is:`;
g := t -> simplify(subs(T=t,int(f(z(T))*z1(T), T))):
`g(t) ` = g(t);
g1 := g(2*Pi):
g0 := g(0):
`g(2*Pi) ` = expand(g1),` and `,`g(0) ` = expand(g0);
`g(2*Pi) - g(0) ` = expand(g1 - g0);
Int(f(z),z=C..``) = expand(g1 - g0);
![]()
![]()
![]()

![]()
![]()
![]()
![]()

(b)
Second,
, c
an be verified with the
computation:
> dz
:='dz':f:='f':F:='F':g:='g':t:='t':T:='T':z:='z':Z:='Z':z1:='z1':
f := z -> cos(z):
`f(z) ` = f(z);
z := t -> exp(I*t):
`C: z(t) ` = z(t);
`f(z(t)) ` = f(z(t));
z1 := t -> subs(T=t,diff(z(T), T)):
`dz = z '(t) dt ` = z1(t), `dt`;
Int(f(z),z=C..``) = Int(f(z(t))*z1(t),t=0..2*pi);
`The anti-derivative is:`;
g := t -> simplify(subs(T=t,int(f(z(T))*z1(T), T))):
`g(t) ` = g(t);
g1 := g(2*Pi):
g0 := g(0):
`g(2*Pi) ` = expand(g1),` and `,`g(0) ` = expand(g0);
`g(2*Pi) - g(0) ` = expand(g1 - g0);
Int(f(z),z=C..``) = expand(g1 - g0);
![]()
![]()
![]()

![]()
![]()
![]()
![]()

(c)
Third,
, c
an be verified with the
computation:
> dz
:='dz':f:='f':F:='F':g:='g':t:='t':T:='T':z:='z':Z:='Z':z1:='z1':
f := z -> z^5:
`f(z) ` = f(z);
z := t -> exp(I*t):
`C: z(t) ` = z(t);
`f(z(t)) ` = f(z(t));
z1 := t -> subs(T=t,diff(z(T), T)):
`dz = z '(t) dt ` = z1(t), `dt`;
Int(f(z),z=C..``) = Int(f(z(t))*z1(t),t=0..2*pi);
`The anti-derivative is:`;
g := t -> simplify(subs(T=t,int(f(z(T))*z1(T), T))):
`g(t) ` = g(t);
g1 := g(2*Pi):
g0 := g(0):
`g(2*Pi) ` = expand(g1),` and `,`g(0) ` = expand(g0);
`g(2*Pi) - g(0) ` = expand(g1 - g0);
Int(f(z),z=C..``) = expand(g1 - g0);
![]()
![]()
![]()

![]()
![]()
![]()
![]()

We want to be able to replace
integrals over certain complicated contours with integrals that are
easy to evaluate. If
is a simple closed contour that can
be "continuously deformed" into another simple closed contour
without passing through a point
where
is not analytic, then the value of
the contour integral of
over
is the same as the value of the
integral of
over
. To be precise, we state the
following result.
Theorem 6.6 (Deformation of Contour)
Let
and
be two simple closed positively
oriented contours such that
lies interior to
.
If
is analytic in a domain
that contains both
and
and the region between them, then
.
We now state an important result that is implied by the deformation of contour theorem. This result will occur several times in the theory to be developed and is an important tool for computations. You may want to compare the proof of this corollary with your solution to Exercise 6.2.23.
Corollary 6.1
Let
denote a fixed complex value. If
is a simple closed contour with
positive orientation such that
lies interior to
, then
=
,
and
=
, where
is any integer except
.
Extra Eample, Page 232.
Let
denote a fixed complex value. If
is a
simple closed contour with positive orientation such that
lies interior to
, then
(a)
and
(b)
, where
is an integer.
For illustration,
we use a circle of radius
centered at
.
(a)
Show that
.
> dz
:='dz':f:='f':F:='F':g:='g':t:='t':
T:='T':z:='z':Z:='Z':z0:='z0':z1:='z1':
f := z -> 1/(z - z0):
`f(z) ` = f(z);
z := t -> z0 + exp(I*t):
`C: z(t) ` = z(t);
`f(z(t)) ` = f(z(t));
z1 := t -> subs(T=t,diff(z(T), T)):
`dz = z '(t) dt ` = z1(t), `dt`;
Int(f(z),z=C..``) = Int(f(z(t))*z1(t),t=0..2*pi);
`The anti-derivative is:`;
g := t -> simplify(subs(T=t,int(f(z(T))*z1(T), T))):
`g(t) ` = g(t);
g1 := g(2*Pi):
g0 := g(0):
`g(2*Pi) ` = expand(g1),` and `,`g(0) ` = expand(g0);
`g(2*Pi) - g(0) ` = expand(g1 - g0);
Int(f(z),z=C..``) = expand(g1 - g0);
![]()
![]()
![]()

![]()
![]()
![]()
![]()

(b)
Show that
For illustration,
we use a circle of radius
centered at
.
> dz
:='dz':f:='f':F:='F':g:='g':t:='t':
T:='T':z:='z':Z:='Z':z0:='z0':z1:='z1':
f := z -> 1/(z - z0)^5:
`f(z) ` = f(z);
z := t -> z0 + exp(I*t):
`C: z(t) ` = z(t);
`f(z(t)) ` = f(z(t));
z1 := t -> subs(T=t,diff(z(T), T)):
`dz = z '(t) dt ` = z1(t), `dt`;
Int(f(z),z=C..``) = Int(f(z(t))*z1(t),t=0..2*pi);
Int(f(z),z=C..``) = Int(simplify(f(z(t))*z1(t)),t=0..2*pi);
`The anti-derivative is:`;
g := t -> simplify(subs(T=t,int(f(z(T))*z1(T), T))):
`g(t) ` = g(t);
g1 := g(2*Pi):
g0 := g(0):
`g(2*Pi) ` = expand(g1),` and `,`g(0) ` = expand(g0);
`g(2*Pi) - g(0) ` = expand(g1 - g0);
Int(f(z),z=C..``) = expand(g1 - g0);
![]()

![]()


![]()
![]()
![]()
![]()

The deformation of contour theorem
is an extension of the Cauchy-Goursat theorem to a doubly connected
domain in the following sense. Let
be a domain that contains
and
and the region between them. Then
the contour
is a parametrization of the boundary
of the region
that lies between
and
so that the points of
lie to the left of
as a point
moves around
. Hence
is a positive orientation of the
boundary of
, and Theorem 6.6 implies that
.
We can extend Theorem 6.6 to multiply connected domains with more than one "hole." The proof, which is left for the reader, involves the introduction of several cuts and is similar to the proof of Theorem 6.6.
Theorem 6.7 (Extended Cauchy-Goursat Theorem)
Let
be simple closed positively oriented
contours with the property that
lies interior to C for
and the set of interior to
has no points in common with the set
interior to
if
. Let
be analytic on a domain
that contains all the contours and
the region between C and
, then
.
Example 6.14, Page 233.
Show that
,
where
is the circle
:
taken with positive orientation.
> f:='f': F:='F':
z:='z':
f := z -> 2*z/(z^2 + 2):
`f(z) ` = f(z);
First, split the function up into
partial fractions involving linear terms in the denominators. Don't
worry
about the subroutine. It splits
up into partial fractions. The
result will be an equivalent function
.
The list of terms added to form
have singularities in the same order
in the list of points
.
> Zn :=
sort([solve(denom(f(z))=0, z)]):
Rn := array(1..nops(Zn)):
Sn := array(1..nops(Zn)):
F1 := 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;
F1 := F1 + Rn[i]/(z-Zn[i])^p;
od:
Z := array(1..nops(F1)):
R := array(1..nops(F1)):
S := array(1..nops(F1)):
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);
`f(z) ` = F1;
print(`singularities =`, Z);
![]()
![]()
Determine which singularities lie
inside
:
.
>
print(z[1]=Z[1],
abs(z[1])<2, evalb(evalf(abs(Z[1]))<2));
print(z[2]=Z[2], abs(z[2])<2,
evalb(evalf(abs(Z[2]))<2));
![]()
Since both singularities lie
inside
, add the corresponding term in
the
sum forming
times constant in the numerator that
term times
.
> val :=
2*Pi*I*numer(S[1]) + 2*Pi*I*numer(S[2]):
Int(f(z),z=C..``) = val;

Example 6.15, Page 234.
Show that
,
where
is the circle
:
taken with positive orientation.
> f:='f': F:='F':
z:='z':
f := z -> 2*z/(z^2 + 2):
`f(z) ` = f(z);
First, split the function up into
partial fractions involving linear terms in the denominators. Don't
worry
about the subroutine. It splits
up into partial fractions. The
result will be an equivalent function
.
The list of terms added to form
have singularities in the same order
in the list of points
> Zn :=
sort([solve(denom(f(z))=0, z)]):
Rn := array(1..nops(Zn)):
Sn := array(1..nops(Zn)):
F1 := 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;
F1 := F1 + Rn[i]/(z-Zn[i])^p;
od:
Z := array(1..nops(F1)):
R := array(1..nops(F1)):
S := array(1..nops(F1)):
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);
`f(z) ` = F1;
print(`singularities =`, Z);
![]()
![]()
Determine which singularities lie
inside
:
.
>
print(z[1]=Z[1],
abs(z[1]-I)<2,
evalb(evalf(abs(Z[1]-I))<1));
print(z[2]=Z[2], abs(z[2]-I)<2,
evalb(evalf(abs(Z[2]-I))<1));
![]()
Since only the first singularity
lies inside
, add the first term in the sum
forming
times constant in the numerator that
term times
.
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.
> val :=
2*Pi*I*numer(S[1]):
Int(f(z),z=C..``) = val;

Example 6.16, Page 234.
Show that
,
where
is the figure eight shown in the
text on page 135.
> f:='f': F:='F':
z:='z':
f := z -> (z - 2)/(z^2 - z):
`f(z) ` = f(z);
First, split the function up into
partial fractions involving linear terms in the denominators. Don't
worry
about the subroutine. It splits
up into partial fractions. The
result will be an equivalent function
.
The list of terms added to form
have singularities in the same order
in the list of points
> Zn :=
sort([solve(denom(f(z))=0, z)]):
Rn := array(1..nops(Zn)):
Sn := array(1..nops(Zn)):
F1 := 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;
F1 := F1 + Rn[i]/(z-Zn[i])^p;
od:
Z := array(1..nops(F1)):
R := array(1..nops(F1)):
S := array(1..nops(F1)):
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);
`f(z) ` = F1;
print(`singularities =`, Z);
![]()
![]()
Determine which singularities
corresponds to the contour
and
. The second term will
correspond
to the singularity at
used with contour
and the first term corresponds to
the singularity at
used with contour
. Since
has positive orientation, we add the
second term in the sum forming
times constant in the numerator of
that term times
. And since the
has negative orientation,
we subtract the first term in the sum forming
times constant in the numerator of
that term times
.
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.
> val :=
2*Pi*I*numer(S[2]) - 2*Pi*I*numer(S[1]):
Int(f(z),z=C..``) = val;

End of Section 6.3.