COMPLEX ANALYSIS: Mathematica 4.1 Notebooks
(c) John H. Mathews, and
Russell W. Howell, 2002
Complimentary software to accompany our textbook:

COMPLEX ANALYSIS: for Mathematics and Engineering, 
4th Edition,  2001,  ISBN: 0-7637-1425-9
Jones & Bartlett Publishers, Inc.  
40 Tall Pine Drive, Sudbury, MA 01776  
Tele.  (800) 832-0034, FAX:  (508)  443-8000  
E-mail:  mkt@jbpub.com  
Internet:  http://www.jbpub.com/  
This free software is compliments of the authors.
John H. Mathews,   mathews@fullerton.edu 
Russell W. Howell,  howell@westmont.edu

CHAPTER 7  TAYLOR AND LAURENT SERIES

a = b = c = x = y = z = Z = 
                    0; 
Clear[a, A, b, c, f, f1, f2, g, h, i, lim1, lim2, L, L1, L2, L3, L4, 
        m, n, p, solset, S, SI, Sinf, S0, S7, S9, S11, S12, S13, S17, S21, 
        S22, S25, x, y, z, Z, Z1, Z2, Z3, Z4]; 
Needs["Graphics`ComplexMap`"]; 
Needs["Graphics`Colors`"];

Section 7.1	Uniform Convergence

Section 7.2	Taylor Series Representations

Section 7.3	Laurent Series Representations

Section 7.4  Singularities, Zeros and Poles

The point α is called a Singular Point, or singularity of the complex function  f(z) if  f  is not analytic at  z = α,  but every neighborhood  (Subscript[D, R]) (α)  of  α  contains at least one point at which  f(z)  is analytic.  For example, the function  f (z) = (1/(1  -  z))  is not analytic at  z = 1,  but is analytic for all other values of  z.  Thus the point  z = 1  is a singular point of  f(z).  As another example,  consider  g (z)  =  Log (z).  We saw in Section 5.2  that  g  is  analytic for all  z  except at the origin and at all points on the negative real-axis.  Thus, the origin and each point on the negative real axis is a singularity of  g (z)  =  Log (z).

	The point α is called a Isolated Singularity of the complex function  f(z)  if  f  is not analytic at  z = α,  but there exists a real number  R > 0  such that   f  is analytic everywhere in the punctured disk  \(\(D\_R\%*\) \((α)\)\).  Our function  f (z) = (1/(1  -  z))  has an isolated singularity at  z = 1.  However, for the function  g (z)  =  Log (z),  the singularity at  z = 0  (or in general for any point  z = -a  on the negative real-axis)  is a non-isolated singularity  for  g (z)  =  Log (z).   Functions with isolated singularities have a Laurent series, since the punctured disk  \(\(D\_R\%*\) \((α)\)\)  is the same as the annulus  A (r, R, α).   The logarithm function  g (z)  =  Log (z)  does not have a Laurent series at any point  z = -a  on the negative real-axis.  We now look at this special case of Laurent's theorem in order to classify three types of isolated singularities.

Definition 7.5 (Removable Singularity, Pole of order k, Essential Singularity), Page 290. Let f  have an isolated singularity at  α  with Laurent series expansion  

	f (z) = (∑_(n = -∞)^∞) 
                (Subscript[c, n]) (((z - α))^n)  valid for   z ∈ A (0, R, α).  

Then we distinguish the following types of singularities at  α.  

(i)  If  (Subscript[c, n]) = 0  for  n = -1, -2, -3,  ... ,  then we say that  f  has a removable singularity at  α.  

(ii)  If  k  is a positive integer such that  (Subscript[c, -k]) ≠ 0  and  (Subscript[c, n]) = 0  for  n = -k - 1, -k - 2, -k - 
        3,  ... ,  then we say that  f  has a pole of order k  at  α.  

(iii)  If  (Subscript[c, n]) ≠ 0  for infinitely many negative integers  n,  then we say that  f  has an essential singularity at  α.

Example of a Pole,  Page 291. The following example will help this concept. Consider the function f(z) = cot(z). The leading term in the Laurent series expansion S(z) is (1/z) and S(z) goes to ∞  as  z -> 0 in the same manner as cot(z).

Solution for a Pole, Page 291.

Remove[z]; 
Clear[f, lim, S, z]; 
f[z_]  =  Cot[z]; 
S[z_]  =  
        Normal[Series[f[z], {z, 0, 13}]]; 
lim = Limit[f[z], z -> 0]; 
Print["f[z] = ", f[z]]; 
Print[""]; 
Print["S[z] = ", S[z]]; 
Print[""]; 
Print["f[z] = ", 
        S[z], " - ..."]; 
Print[""]; 
\(\(Print[\*""\!\(lim\+\(z -> 0\)\) "", f[z], " = ", 
        lim];\)\ \)

The Laurent series for f(z) involves only (1/z) for negative powers of z. Hence,  f[z] = Cot[z]  has a simple pole at the origin.

We can use Mathematica to investigate how well the Laurent series is "converging" for real numbers.

\(
\(graph1\  = \ 
        Plot[{f[z], S[z]}, {z, 0.01, 3.1}, PlotStyle -> {Red, Green}, 
          DisplayFunction -> Identity];\)\ \ \)
graph2  =  
        Plot[{f[z], S[z]}, {z, -3.1, -0.01}, 
          PlotStyle -> {Red, Green}, 
          DisplayFunction -> Identity];  
Show[graph1, graph2, 
        PlotRange -> {{-3.1, 3.1}, {-10, 10}}, 
        Ticks -> {Range[-3, 3, 1], Range[-10, 10, 5]}, 
        DisplayFunction -> $DisplayFunction]; 
Print["The function  f[x] = ", f[x]]; 
Print["and series"]; 
Print["S[x] = ", S[x]];

We can use Mathematica to investigate the real and imaginary parts of  f[z] = Cot[z]  near the pole.

u[x_, y_] = 
        ComplexExpand[Re[f[x + I y]]]; 
v[x_, y_] = ComplexExpand[Im[f[x + I y]]]; 
Plot3D[u[x, y], {x, -0.1, 0.1}, {y, -0.1, 0.1}, 
        PlotRange -> {{-0.1, 0.1}, {-0.1, 0.1}, {-30, 
              60}}, 
PlotPoints -> 40, 
        BoxRatios -> {1, 1, 1}, Mesh -> False, 
        AxesLabel -> {"x", "y", ""}, 
        ViewPoint -> {-3, 3, 2}, Boxed -> False, 
        LightSources -> {{{4, 7, 20}, Red}, {{7, 10, 10}, 
              Green}, {{-13, -8, 15}, 
              Blue}}]; 
Print["u[x,y] = ", 
        Re[f[x  +  I y]]]; 
Print["       = ", u[x, y]];

Plot3D[
        v[x, y], {x, -0.1, 0.1}, {y, -0.1, 0.1}, 
        PlotRange -> {{-0.1, 0.1}, {-0.1, 0.1}, {-30, 
              60}}, 
PlotPoints -> 40, 
        BoxRatios -> {1, 1, 1}, Mesh -> False, 
        AxesLabel -> {"x", "y", ""}, 
        ViewPoint -> {-3, 3, 2}, Boxed -> False, 
        LightSources -> {{{4, 7, 20}, Red}, {{7, 10, 10}, 
              Green}, {{-13, -8, 15}, Blue}}]; 
Print["v[x,y] = ", 
        Im[f[x  +  I y]]]; 
Print["       = ", v[x, y]];

\(
\(Plot3D[
        Re[f[x\  + \ I\ y]], {x, \(-1\), 1}, {y, \(-1\), 1}, 
        PlotPoints -> {31, 
            31}, 
PlotRange -> {{\(-1\), 1}, {\(-1\), 
              1}, {\(-3\), 
              5}}, 
AxesLabel -> {"x", "y", ""}, ColorFunction -> Hue];\)\ \)
Print["u[x,y] = ", 
        Re[f[x  +  I y]]]; 
Print["       = ", u[x, y]];

\(
\(Plot3D[
        Im[f[x\  + \ I\ y]], {x, \(-1\), 1}, {y, \(-1\), 1}, 
        PlotPoints -> {31, 
            31}, 
PlotRange -> {{\(-1\), 1}, {\(-1\), 
              1}, {\(-3\), 
              5}}, 
AxesLabel -> {"x", "y", ""}, ColorFunction -> Hue];\)\ \)
Print["v[x,y] = ", 
        Im[f[x  +  I y]]]; 
Print["       = ", v[x, y]];

g1 = 
        ContourPlot[
          u[x, y], {x, -1, -0.00001}, {y, -1, 
            1}, 
PlotPoints -> 35, 
          ColorFunction -> Hue, 
          DisplayFunction -> Identity]; 
g2 = 
        ContourPlot[
          u[x, y], {x, 0.00001, 1}, {y, -1, 
            1}, 
PlotPoints -> 35, 
          ColorFunction -> Hue, 
          DisplayFunction -> Identity]; 
Show[g1, g2, AspectRatio -> 1, 
        DisplayFunction -> $DisplayFunction]; 
Print["u[x,y] = ", 
        Re[f[x  +  I y]]]; 
Print["       = ", u[x, y]];

g1 = 
        ContourPlot[
          v[x, y], {x, -1, 
            1}, {y, -1, -0.00001}, 
PlotPoints -> 35, ColorFunction -> Hue, 
          DisplayFunction -> Identity]; 
g2 = 
        ContourPlot[
          v[x, y], {x, -1, 1}, {y, 0.00001, 
            1}, 
PlotPoints -> 35, 
          ColorFunction -> Hue, 
          DisplayFunction -> Identity]; 
Show[g1, g2, AspectRatio -> 1, 
        DisplayFunction -> $DisplayFunction]; 
Print["v[x,y] = ", 
        Im[f[x  +  I y]]]; 
Print["       = ", v[x, y]];

Example of a Removable Singularity (i),  Page 291.  The function f (z) = ((sin (z))/z) has a removable singularity at z = 0.

Solution for a Removable Singularity (i), Page 291.

Enter the function  f[z] = Sin[z]/z and find the first few terms of the Laurent series in the punctured plane  0 < z.

Remove[z]; 
Clear[f, lim, S]; 
f[z_] = Sin[z]/z; 
S[z_]  =  
        Normal[Series[f[z], {z, 0, 13}]]; 
lim = Limit[f[z], z -> 0]; 
Print["f[z] = ", f[z]]; 
Print["f[0] = ", f[0]]; 
Print[""]; 
Print["S[z] = ", S[z]]; 
Print["S[0] = ", S[0]]; 
Print[""]; 
Print["From calculus we know that"]; 
\(\(Print[\*""\!\(lim\+\(x -> 0\)\) "", f[x], " = ", 
        Limit[f[x], x -> 0]];\)\ \)
Print[""]; 
Print["Extending to the complex plane, we have"]; 
Print["f[z] = ", S[z], " + ..."]; 
Print[""]; 
\(\(Print[\*""\!\(lim\+\(z -> 0\)\) "", f[z], " = ", 
        lim];\)\ \)

The Laurent series for f(z) contains only positive powers of z. Hence,  f[z] = Sin[z]/z  has a removable singularity at the origin.

We can use Mathematica to investigate how well the Laurent series is "converging" for real numbers.

Plot[{f[z], S[z]}, {z, -7, 7}, 
        PlotStyle -> {Red, 
            Green}, 
PlotRange -> {{-7, 
              7}, {-0.25, 
              1.05}}, 
Ticks -> {Range[-7, 7, 1], 
            Range[0, 1, (1/2)]}]; 
Print["The function  f[x] = ", f[x]]; 
Print["and series"]; 
Print["S[x] = ", S[x]];

We can use Mathematica to investigate the real and imaginary parts of  f[z] = Sin[z]/z near the removable singularity.

u[x_, y_] = 
        Together[
          ComplexExpand[Re[f[x + I y]], 
            TargetFunctions -> {Im, Re}]]; 
v[x_, y_] = 
        Together[
          ComplexExpand[Im[f[x + I y]], 
            TargetFunctions -> {Im, Re}]]; 
Plot3D[
        u[x, y], {x, -0.1, 0.1}, {y, -0.1, 
          0.1}, 
PlotPoints -> 40, 
        BoxRatios -> {1, 1, 1}, Mesh -> False, 
        AxesLabel -> {"x", "y", "s"}, 
        ViewPoint -> {-3, 3, 2}, Boxed -> False, 
        LightSources -> {{{4, 7, 20}, Red}, {{7, 10, 10}, 
              Green}, {{-13, -8, 15}, Blue}}]; 
Print["u[x,y] = ", 
        Re[f[x  +  I y]]]; 
Print["       = ", u[x, y]];

Plot3D[
        v[x, y], {x, -0.1, 0.1}, {y, -0.1, 
          0.1}, 
PlotPoints -> 40, 
        BoxRatios -> {1, 1, 1}, Mesh -> False, 
        AxesLabel -> {"x", "y", "s"}, 
        ViewPoint -> {-3, 3, 2}, Boxed -> False, 
        LightSources -> {{{4, 7, 20}, Red}, {{7, 10, 10}, 
              Green}, {{-13, -8, 15}, Blue}}]; 
Print["v[x,y] = ", 
        Im[f[x  +  I y]]]; 
Print["       = ", v[x, y]];

Plot3D[u[x, y], {x, -5, 5}, {y, -5, 5}, 
        PlotPoints -> {31, 
            31}, 
PlotRange -> {{-5, 5}, {-5, 
              5}, {-12, 
              15}}, 
AxesLabel -> {"x", "y", "\
"}, ColorFunction -> Hue]; 
Print["u[x,y] = ", 
        Re[f[x  +  I y]]]; 
Print["       = ", u[x, y]];

Plot3D[v[x, y], {x, -5, 5}, {y, -5, 5}, 
        PlotPoints -> {31, 
            31}, 
PlotRange -> {{-5, 5}, {-5, 
              5}, {-12, 
              15}}, 
AxesLabel -> {"x", "y", "\
"}, ColorFunction -> Hue]; 
Print["v[x,y] = ", 
        Im[f[x  +  I y]]]; 
Print["       = ", v[x, y]];

ContourPlot[
        u[x, y], {x, -4, 4}, {y, -4, 
          4}, 
PlotPoints -> 35, 
        AspectRatio -> 1, 
        ColorFunction -> Hue]; 
Print["u[x,y] = ", 
        Re[f[x  +  I y]]]; 
Print["       = ", u[x, y]];

ContourPlot[
        v[x, y], {x, -4, 4}, {y, -4, 
          4}, 
PlotPoints -> 35, 
        AspectRatio -> 1, 
        ColorFunction -> Hue]; 
Print["v[x,y] = ", 
        Im[f[x  +  I y]]]; 
Print["       = ", v[x, y]];

Example of a removable singularity (ii),  Page 291.  The function f (z) = ((cos (z)  -   1)/(z^2)) has a removable singularity at z = 0.

Solution for a removable singularity (ii) Page 291.

Enter the function  f[z] = ((Cos[z]  -  1)/(z^2)) and find the first few terms of the Laurent series in the punctured plane  0 < z.

Remove[z]; 
Clear[f, S]; 
f[z_]  =  ((Cos[z]  - 1)/(z^2)); 
S[z_]  =  
        Normal[Series[f[z], {z, 0, 11}]]; 
lim = Limit[f[z], z -> 0]; 
Print["f[z] = ", f[z]]; 
Print["f[0] = ", f[0]]; 
Print[""]; 
Print["S[z] = ", S[z]]; 
Print["S[0] = ", S[0]]; 
Print[""]; 
Print["From calculus we know that"]; 
\(\(Print[\*""\!\(lim\+\(x -> 0\)\) "", f[x], " = ", 
        Limit[f[x], x -> 0]];\)\ \)
Print[""]; 
Print["Extending to the complex plane, we have"]; 
Print["f[z] = ", S[z], " + ..."]; 
Print[""]; 
\(\(Print[\*""\!\(lim\+\(z -> 0\)\) "", f[z], " = ", 
        lim];\)\ \)

The Laurent series for f(z) contains only positive powers of z. Hence,  f[z] = ((Cos[z]  -  1)/(z^2))  has a removable singularity at the origin.

We can use Mathematica to investigate how well the Laurent series is "converging" for real numbers.

Plot[{f[z], S[z]}, {z, -7, 7}, 
        PlotStyle -> {Red, 
            Green}, 
PlotRange -> {{-7, 
              7}, {-0.55, 
              0.15}}, 
Ticks -> {Range[-6, 6, 2], 
            Range[-0.5, 0, 0.25]}]; 
Print["The function  f[x] = ", f[x]]; 
Print["and series"]; 
Print["S[x] = ", S[x]];

We can use Mathematica to investigate the real and imaginary parts of  f[z] = ((Cos[z]  -  1)/(z^2)) near the removable singularity.

u[x_, y_] = 
        FullSimplify[
          ComplexExpand[Re[f[x + I y]], 
            TargetFunctions -> {Im, Re}]]; 
v[x_, y_] = 
        FullSimplify[
          ComplexExpand[Im[f[x + I y]], 
            TargetFunctions -> {Im, Re}]]; 
Plot3D[
        u[x, y], {x, -0.1, 0.1}, {y, -0.1, 
          0.1}, 
PlotPoints -> 40, 
        BoxRatios -> {1, 1, 1}, Mesh -> False, 
        AxesLabel -> {"x", "y", "s"}, 
        ViewPoint -> {-3, 3, 2}, Boxed -> False, 
        LightSources -> {{{4, 7, 20}, Red}, {{7, 10, 10}, 
              Green}, {{-13, -8, 15}, Blue}}]; 
Print["u[x,y] = ", 
        Re[f[x  +  I y]]]; 
Print["= ", u[x, y]];

Plot3D[
        v[x, y], {x, -0.1, 0.1}, {y, -0.1, 
          0.1}, 
PlotPoints -> 40, 
        BoxRatios -> {1, 1, 1}, Mesh -> False, 
        AxesLabel -> {"x", "y", "s"}, 
        ViewPoint -> {-3, 3, 2}, Boxed -> False, 
        LightSources -> {{{4, 7, 20}, Red}, {{7, 10, 10}, 
              Green}, {{-13, -8, 15}, Blue}}]; 
Print["v[x,y] = ", 
        Im[f[x  +  I y]]]; 
Print["= ", v[x, y]];

\(
\(Plot3D[u[x, y], {x, \(-5\), 5}, {y, \(-5\), 5}, 
        PlotPoints -> {31, 
            31}, 
AxesLabel -> {"x", "y", ""}, ColorFunction -> Hue];\)\ \)
Print["u[x,y] = ", 
        Re[f[x  +  I y]]]; 
Print["= ", u[x, y]];

\(
\(Plot3D[v[x, y], {x, \(-5\), 5}, {y, \(-5\), 5}, 
        PlotPoints -> {31, 
            31}, 
AxesLabel -> {"x", "y", ""}, ColorFunction -> Hue];\)\ \)
Print["v[x,y] = ", 
        Im[f[x  +  I y]]]; 
Print["= ", v[x, y]];

ContourPlot[
        u[x, y], {x, -5, 5}, {y, -5, 
          5}, 
PlotPoints -> 35, 
        AspectRatio -> 1, 
        ColorFunction -> Hue]; 
Print["u[x,y] = ", 
        Re[f[x  +  I y]]]; 
Print["= ", u[x, y]];

ContourPlot[
        v[x, y], {x, -5, 5}, {y, -5, 
          5}, 
PlotPoints -> 35, 
        AspectRatio -> 1, 
        ColorFunction -> Hue]; 
Print["v[x,y] = ", 
        Im[f[x  +  I y]]]; 
Print["= ", v[x, y]];

Example of a pole of order 2,  Page 291.  The function f (z) = ((sin (z))/(z^3)) has a pole of order k = 2 at the origin.

Solution for a pole of order 2, Page 291.

Enter the function  f[z] = Sin[z]/(z^3) and find the first few terms of the Laurent series in the punctured plane  0 < z.

Remove[z]; 
Clear[f, lim, S]; 
f[z_] = Sin[z]/(z^3); 
S[z_]  =  
        Normal[Series[f[z], {z, 0, 11}]]; 
lim = Limit[f[z], z -> 0]; 
Print["f[z] = ", f[z]]; 
Print[""]; 
Print["S[z] = ", S[z]]; 
Print[""]; 
Print["f[z] = ", (1/(z^2)), 
        S[z] - (1/(z^2)), " - ..."]; 
Print[""]; 
\(\(Print[\*""\!\(lim\+\(z -> 0\)\) "", f[z], " = ", 
        lim];\)\ \)

The Laurent series for f(z) contains terms down to  (1/(z^2))  for negative powers of z. Hence,  f[z] = Sin[z]/(z^3) has a pole of order 2 at the origin.

We can use Mathematica to investigate how well the Laurent series is "converging" for real numbers.

Plot[{f[x], S[x]}, {x, -10, 10}, 
        PlotStyle -> {Red, 
            Green}, 
PlotRange -> {{-10, 10}, {0, 
              10}}, 
Ticks -> {Range[-10, 10, 2], 
            Range[0, 10, 5]}]; 
Print["The function  f[x] = ", 
        f[x]]; 
Print["and series"]; 
Print["S[x] = ", S[x]];

We can use Mathematica to investigate the real and imaginary parts of  f[z] = Sin[z]/(z^3) near the removable singularity.

u[x_, y_] = 
        FullSimplify[
          ComplexExpand[Re[f[x + I y]], 
            TargetFunctions -> {Im, Re}]]; 
v[x_, y_] = 
        FullSimplify[
          ComplexExpand[Im[f[x + I y]], 
            TargetFunctions -> {Im, Re}]]; 
Plot3D[
        u[x, y], {x, -0.1, 0.1}, {y, -0.1, 
          0.1}, 
PlotPoints -> 40, 
        BoxRatios -> {1, 1, 1}, Mesh -> False, 
        AxesLabel -> {"x", "y", ""}, 
        ViewPoint -> {-3, 3, 2}, Boxed -> False, 
        LightSources -> {{{4, 7, 20}, Red}, {{7, 10, 10}, 
              Green}, {{-13, -8, 15}, Blue}}]; 
Print["u[x,y] = ", 
        Re[f[x  +  I y]]]; 
Print["= ", u[x, y]];

\(
\(Plot3D[
        v[x, y], {x, \(-0.1\), 0.1}, {y, \(-0.1\), 
          0.1}, 
PlotPoints -> 40, 
        BoxRatios -> {1, 1, 1}, 
        Mesh -> 
          False, 
AxesLabel -> {"x", "y", ""}, ViewPoint -> {\(-3\), 3, 2}, Boxed -> False, 
        LightSources -> {{{4, 7, 20}, Red}, {{7, 10, 10}, 
              Green}, {{\(-13\), \(-8\), 15}, Blue}}];\)\ \)
Print["v[x,y] = ", 
        Im[f[x  +  I y]]]; 
Print["= ", v[x, y]];

Plot3D[u[x, y], {x, -1, 1}, {y, -1, 1}, 
        PlotPoints -> {31, 31}, 
        PlotRange -> {{-1, 1}, {-1, 1}, {-15, 
              20}}, 
AxesLabel -> {"x", "y", "\
"}, ColorFunction -> Hue]; 
Print["u[x,y] = ", 
        Re[f[x  +  I y]]]; 
Print["= ", u[x, y]];

Plot3D[v[x, y], {x, -1, 1}, {y, -1, 1}, 
        PlotPoints -> {31, 31}, 
        PlotRange -> {{-1, 1}, {-1, 1}, {-15, 
              20}}, 
AxesLabel -> {"x", "y", "\
"}, ColorFunction -> Hue]; 
Print["v[x,y] = ", 
        Im[f[x  +  I y]]]; 
Print["= ", v[x, y]];

ContourPlot[
        u[x, y], {x, -1, 1}, {y, -1, 
          1}, 
PlotPoints -> 55, 
        AspectRatio -> 1, 
        ColorFunction -> Hue]; 
Print["u[x,y] = ", 
        Re[f[x  +  I y]]]; 
Print["= ", u[x, y]];

ContourPlot[
        v[x, y], {x, -1, 1}, {y, -1, 
          1}, 
PlotPoints -> 54, 
        AspectRatio -> 1, 
        ColorFunction -> Hue]; 
Print["v[x,y] = ", 
        Im[f[x  +  I y]]]; 
Print["= ", v[x, y]];

Example of a simple pole,  Page 291.  The function f (z) = ((e^z)/z) has a simple pole at the origin.

Solution for a simple pole, Page 291.

Enter the function  f[z] = ((e^z)/z) and find the first few terms of the Laurent series in the punctured plane  0 < z.

Remove[z]; 
Clear[f, lim, S]; 
f[z_]  =  ((E^z)/z); 
S[z_]  =  
        Normal[Series[f[z], {z, 0, 8}]]; 
lim = Limit[f[z], z -> 0]; 
Print["f[z] = ", f[z]]; 
Print[""]; 
Print["S[z] = ", S[z]]; 
Print[""]; 
Print["f[z] = ", 
        S[z], " + ..."]; 
Print[""]; 
\(\(Print[\*""\!\(lim\+\(z -> 0\)\) "", f[z], " = ", 
        lim];\)\ \)

The Laurent series for f(z) involves only (1/z) for negative powers of z. Hence,  f[z] = ((e^z)/z) has a simple pole at the origin.

We can use Mathematica to investigate how well the Laurent series is "converging" for real numbers.

\(
\(graph1\  = \ 
        Plot[{f[z], S[z]}, {z, 0.01, 6.1}, PlotStyle -> {Red, Green}, 
          DisplayFunction -> Identity];\)\ \ \)
graph2  =  
        Plot[{f[z], S[z]}, {z, -6.1, -0.01}, 
          PlotStyle -> {Red, Green}, 
          DisplayFunction -> Identity];  
Show[graph1, graph2, 
        PlotRange -> {{-6.1, 6.1}, {-20, 50}}, 
        Ticks -> {Range[-6, 6, 1], Range[-20, 50, 10]}, 
        DisplayFunction -> $DisplayFunction]; 
Print["The function  f[x] = ", f[x]]; 
Print["and series"]; 
Print["S[x] = ", S[x]];

We can use Mathematica to investigate the real and imaginary parts of  f[z] = ((e^z)/z)  near the pole.

u[x_, y_] = 
        FullSimplify[
          ComplexExpand[Re[f[x + I y]], 
            TargetFunctions -> {Im, Re}]]; 
v[x_, y_] = 
        FullSimplify[
          ComplexExpand[Im[f[x + I y]], 
            TargetFunctions -> {Im, Re}]]; 
Plot3D[
        u[x, y], {x, -0.1, 0.1}, {y, -0.1, 
          0.1}, 
PlotRange -> {{-0.1, 
              0.1}, {-0.1, 0.1}, {-30, 
              60}}, 
PlotPoints -> 40, 
        BoxRatios -> {1, 1, 1}, Mesh -> False, 
        AxesLabel -> {"x", "y", ""}, 
        ViewPoint -> {-3, 3, 2}, Boxed -> False, 
        LightSources -> {{{4, 7, 20}, Red}, {{7, 10, 10}, 
              Green}, {{-13, -8, 15}, Blue}}]; 
Print["u[x,y] = ", 
        Re[f[x  +  I y]]]; 
Print["       = ", u[x, y]];

Plot3D[
        v[x, y], {x, -0.1, 0.1}, {y, -0.1, 0.1}, 
        PlotRange -> {{-0.1, 0.1}, {-0.1, 0.1}, {-30, 
              60}}, 
PlotPoints -> 40, 
        BoxRatios -> {1, 1, 1}, Mesh -> False, 
        AxesLabel -> {"x", "y", ""}, 
        ViewPoint -> {-3, 3, 2}, Boxed -> False, 
        LightSources -> {{{4, 7, 20}, Red}, {{7, 10, 10}, 
              Green}, {{-13, -8, 15}, Blue}}]; 
Print["v[x,y] = ", 
        Im[f[x  +  I y]]]; 
Print["       = ", v[x, y]];

\(
\(Plot3D[u[x, y], {x, \(-1\), 1}, {y, \(-1\), 1}, 
        PlotPoints -> {31, 
            31}, 
PlotRange -> {{\(-1\), 1}, {\(-1\), 
              1}, {\(-3\), 
              5}}, 
AxesLabel -> {"x", "y", ""}, ColorFunction -> Hue];\)\ \)
Print["u[x,y] = ", 
        Re[f[x  +  I y]]]; 
Print["       = ", u[x, y]];

\(
\(Plot3D[v[x, y], {x, \(-1\), 1}, {y, \(-1\), 1}, 
        PlotPoints -> {31, 
            31}, 
PlotRange -> {{\(-1\), 1}, {\(-1\), 
              1}, {\(-3\), 
              5}}, 
AxesLabel -> {"x", "y", ""}, ColorFunction -> Hue];\)\ \)
Print["v[x,y] = ", 
        Im[f[x  +  I y]]]; 
Print["       = ", v[x, y]];

g1 = 
        ContourPlot[
          u[x, y], {x, -1, -0.00001}, {y, -1, 
            1}, 
PlotPoints -> 35, 
          ColorFunction -> Hue, 
          DisplayFunction -> Identity]; 
g2 = 
        ContourPlot[
          u[x, y], {x, 0.00001, 1}, {y, -1, 
            1}, 
PlotPoints -> 35, 
          ColorFunction -> Hue, 
          DisplayFunction -> Identity]; 
Show[g1, g2, AspectRatio -> 1, 
        DisplayFunction -> $DisplayFunction]; 
Print["u[x,y] = ", 
        Re[f[x  +  I y]]]; 
Print["       = ", u[x, y]];

g1 = 
        ContourPlot[
          v[x, y], {x, -1, 
            1}, {y, -1, -0.00001}, 
PlotPoints -> 35, ColorFunction -> Hue, 
          DisplayFunction -> Identity]; 
g2 = 
        ContourPlot[
          v[x, y], {x, -1, 1}, {y, 0.00001, 
            1}, 
PlotPoints -> 35, 
          ColorFunction -> Hue, 
          DisplayFunction -> Identity]; 
Show[g1, g2, AspectRatio -> 1, 
        DisplayFunction -> $DisplayFunction]; 
Print["u[x,y] = ", 
        Im[f[x  +  I y]]]; 
Print["       = ", v[x, y]];

Examples of an essential singularity,  Page 291.  The function f (z) = (z^2) sin ((1/z)) has an essential singularity at the origin.

Solution for an essential singularity, Page 291.

Enter the function  f[z] = (z^2) Sin[(1/z)] and find the first few terms of the Laurent series in the punctured plane  0< | z | .

Remove[z]; 
Clear[g, h, p, S]; 
g[z_]  =  Sin[z]; 
S[z_]  =  Normal[Series[Sin[z], {z, 0, 17}]]; 
h[z_]  =  S[(1/z)]; 
f[z_]  =  (z^2) g[(1/z)]; 
p[z_]  =  Simplify[(z^2) h[z]]; 
lim0 = 
        Limit[f[z], z -> 0, 
          Direction -> -1]; 
lim1 = 
        Limit[f[z], z -> 0, 
          Direction -> -I]; 
lim2 = 
        Limit[f[z], z -> 0, 
          Direction -> 1]; 
lim3 = 
        Limit[f[z], z -> 0, 
          Direction -> I]; 
Print["f[z] = ", f[z]]; 
Print[""]; 
Print["p[z] = ", p[z]]; 
Print[""]; 
Print["f[z] = ... + ", p[z]]; 
Print[""]; 
\(\(Print[\*""\!\(lim\+\(z -> \(0\^+\)\)\) "", 
        f[z], " = ", lim0];\)\ \)
Print[""]; 
\(\(Print[\*""\!\(lim\+\(z -> \(I0\^+\)\)\) "", 
        f[z], " = ", lim1];\)\ \)
Print[""]; 
\(\(Print[\*""\!\(lim\+\(z -> \(0\^-\)\)\) "", 
        f[z], " = ", lim2];\)\ \)
Print[""]; 
\(\(Print[\*""\!\(lim\+\(z -> \(I0\^-\)\)\) "", 
        f[z], " = ", lim3];\)\ \)

The Laurent series for f(z) has "infinitely many" negative powers of z. Hence, f (z) = (z^2) sin ((1/z)) has an essential singularity at the origin. 

We can use Mathematica to investigate how well the Laurent series is "converging" for real numbers.

\(
\(graph1\  = \ 
        Plot[{f[z], p[z]}, {z, 0.0001, 0.5}, PlotStyle -> {Red, Green}, 
          DisplayFunction -> Identity];\)\ \ \)
graph2  =  
        Plot[{f[z], p[z]}, {z, -0.5, -0.0001}, 
          PlotStyle -> {Red, Green}, 
          DisplayFunction -> Identity];  
Show[graph1, graph2, 
        PlotRange -> {{-0.5, 0.5}, {-0.1, 0.1}}, 
        Ticks -> {Range[-0.5, 0.5, 0.5], Range[-0.1, 0.1, 0.1]}, 
        DisplayFunction -> $DisplayFunction]; 
Print["The function  f[x] = ", f[x]]; 
Print["and series"]; 
Print["S[x] = ", p[x]];

We can use Mathematica to investigate the real and imaginary parts of  f[z] = ((e^z)/z)  near the pole.

u[x_, y_] = 
        FullSimplify[
          ComplexExpand[Re[f[x + I y]], 
            TargetFunctions -> {Im, Re}]]; 
v[x_, y_] = 
        FullSimplify[
          ComplexExpand[Im[f[x + I y]], 
            TargetFunctions -> {Im, Re}]]; 
Plot3D[
        u[x, y], {x, -0.1, 0.1}, {y, -0.1, 
          0.1}, 
PlotRange -> {{-0.1, 
              0.1}, {-0.1, 0.1}, {-30, 
              60}}, 
PlotPoints -> 40, 
        BoxRatios -> {1, 1, 1}, Mesh -> False, 
        AxesLabel -> {"x", "y", ""}, 
        ViewPoint -> {-3, 3, 2}, Boxed -> False, 
        LightSources -> {{{4, 7, 20}, Red}, {{7, 10, 10}, 
              Green}, {{-13, -8, 15}, Blue}}]; 
Print["u[x,y] = ", 
        Re[f[x  +  I y]]]; 
Print["= ", u[x, y]];

Plot3D[
        v[x, y], {x, -0.1, 0.1}, {y, -0.1, 0.1}, 
        PlotRange -> {{-0.1, 0.1}, {-0.1, 0.1}, {-30, 
              60}}, 
PlotPoints -> 40, 
        BoxRatios -> {1, 1, 1}, Mesh -> False, 
        AxesLabel -> {"x", "y", ""}, 
        ViewPoint -> {-3, 3, 2}, Boxed -> False, 
        LightSources -> {{{4, 7, 20}, Red}, {{7, 10, 10}, 
              Green}, {{-13, -8, 15}, Blue}}]; 
Print["v[x,y] = ", 
        Im[f[x  +  I y]]]; 
Print["= ", v[x, y]];

\(
\(Plot3D[
        Re[f[x\  + \ I\ y]], {x, \(-0.1\), 
          0.099999}, {y, \(-0.1\), 
          0.099999}, 
PlotPoints -> {41, 41}, 
        PlotRange -> {{\(-0.1\), 0.1}, {\(-0.1\), 0.1}, {\(-5\), 
              5}}, 
AxesLabel -> {"x", "y", ""}, ColorFunction -> Hue];\)\ \)
Print["u[x,y] = ", 
        Re[f[x  +  I y]]]; 
Print["= ", u[x, y]];

\(
\(Plot3D[
        Im[f[x\  + \ I\ y]], {x, \(-0.1\), 
          0.099999}, {y, \(-0.1\), 
          0.099999}, 
PlotPoints -> {41, 
            41}, 
PlotRange -> {{\(-0.1\), 
              0.1}, {\(-0.1\), 0.1}, {\(-5\), 
              5}}, 
AxesLabel -> {"x", "y", ""}, ColorFunction -> Hue];\)\ \)
Print["v[x,y] = ", 
        Im[f[x  +  I y]]]; 
Print["= ", v[x, y]];

g1 = 
        ContourPlot[
          u[x, y], {x, -0.5, -0.00001}, {y, -0.5, 
            0.5}, 
PlotPoints -> 55, 
          ColorFunction -> Hue, 
          DisplayFunction -> Identity]; 
g2 = 
        ContourPlot[
          Re[f[x  +  I y]], {x, 0.00001, 0.5}, {y, -0.5, 
            0.5}, 
PlotPoints -> 55, 
          ColorFunction -> Hue, 
          DisplayFunction -> Identity]; 
Show[g1, g2, 
        PlotRange -> {{-0.52, 0.52}, {-0.52, 0.52}}, 
        AspectRatio -> 1, 
        DisplayFunction -> $DisplayFunction]; 
Print["u[x,y] = ", 
        Re[f[x  +  I y]]]; 
Print["= ", u[x, y]];

g1 = 
        ContourPlot[
          v[x, y], {x, -0.5, -0.00001}, {y, -0.5, 
            0.5}, 
PlotPoints -> 55, 
          ColorFunction -> Hue, 
          DisplayFunction -> Identity]; 
g2 = 
        ContourPlot[
          Im[f[x  +  I y]], {x, 0.00001, 0.5}, {y, -0.5, 
            0.5}, 
PlotPoints -> 55, 
          ColorFunction -> Hue, 
          DisplayFunction -> Identity]; 
Show[g1, g2, 
        PlotRange -> {{-0.52, 0.52}, {-0.52, 0.52}}, 
        AspectRatio -> 1, 
        DisplayFunction -> $DisplayFunction]; 
Print["v[x,y] = ", 
        Im[f[x  +  I y]]]; 
Print["= ", v[x, y]];

Definition 7.6 (Zero of order k), Page 292. A function  f(z)  analytic in  (Subscript[D, r]) (α)  is said to have a zero of order k  at the point  z = α  if and only if  (f^((n))) (α) = 0  for  n = 0, 1, 2,  ... , 
      k - 1,  and  (f^((k))) (α) ≠ 0.

A zero of order one is sometimes called a simple zero. We also speak about the Roots of an equation.

Theorem 7.10,  Page 292.  A function  f (z) analytic in (Subscript[D, R]) (α) has a zero of order  k  at the point  z = α  if and only if its Taylor series given by f (z) = (∑_(n = 0)^∞) 
                (Subscript[c, n]) (((z - α))^n) has (Subscript[c, 0]) = (Subscript[c, 1]) =  ...=(Subscript[c, k - 1]) = 
              0   and   (Subscript[c, k]) ≠ 0.

Proof of Theorem 7.10, see text Page 292.

Example 7.10,  Page 292.  Show that f (z) = z sin ((z^2)) has a zero of order k = 3 at z = 0.

Solution 7.10.

Enter the function  f[z] = z sin ((z^2))  and find the first few terms of the Maclaurin series.

Remove[z]; 
Clear[f, i, L, m, p, S]; 
f[z_]  =  z Sin[(z^2)]; 
S[z_]  =  Normal[Series[f[z], {z, 0, 23}]]; 
L  =  CoefficientList[S[z], z]; 
i = 1;   m  =  Length[L]; 
\(\(While[
        L[\([i]\)] == 0\  && \ i < m, 
\ \ term\  = \ z\^i; \ \ i = 
          i + 1];\)\ \ \)
fact  =  Simplify[S[z]/term]; 
p[z_]  =  term fact; 
Print["f[z] = ", f[z]]; 
Print[""]; 
Print["S[z] = ", 
        S[z], " + ..."]; 
Print[""]; 
Print["p[z] = ", term , "(", 
        fact, " + ...)"];

Thus, f (z) = z sin ((z^2)) has a zero of order k = 3 at z = 0.

Investigate the graph for real variables.

\(
\(Plot[f[x], {x, \(-2\), 2}, 
        PlotRange -> {{\(-2\), 2}, {\(-2\), 2}}, 
        Ticks -> {Range[\(-2\), 2, 1], Range[\(-4\), 4, 1]}, 
        PlotStyle -> Magenta];\)\ \ \)
Print["The function y = f[x] = ", 
        f[x]];

We can use Mathematica to investigate the real and imaginary parts and the absolute value of f[z] = z sin ((z^2)).

u[x_, y_] = 
        FullSimplify[
          ComplexExpand[Re[f[x + I y]], 
            TargetFunctions -> {Im, Re}]]; 
v[x_, y_] = 
        FullSimplify[
          ComplexExpand[Im[f[x + I y]], 
            TargetFunctions -> {Im, 
                Re}]]; 
w[x_, y_] = 
        FullSimplify[
          ComplexExpand[Abs[f[x + I y]], 
            TargetFunctions -> {Im, 
                Re}]]; 
\(\(Plot3D[u[x, y], {x, \(-1\), 1}, {y, \(-1\), 1}, 
        PlotPoints -> {21, 
            21}, 
PlotRange -> {{\(-1\), 1}, {\(-1\), 
              1}, {\(-4\), 
              4}}, 
AxesLabel -> {"x", "y", ""}, ColorFunction -> Hue];\)\ \)
Print["u[x,y] = ", 
        Re[f[x  +  I y]]]; 
Print["= ", u[x, y]];

\(
\(Plot3D[v[x, y], {x, \(-1\), 1}, {y, \(-1\), 1}, 
        PlotPoints -> {21, 
            21}, 
PlotRange -> {{\(-1\), 1}, {\(-1\), 
              1}, {\(-4\), 
              4}}, 
AxesLabel -> {"x", "y", ""}, ColorFunction -> Hue];\)\ \)
Print["v[x,y] = ", 
        Im[f[x  +  I y]]]; 
Print["= ", v[x, y]];

\(
\(Plot3D[w[x, y], {x, \(-1\), 1}, {y, \(-1\), 1}, 
        PlotPoints -> {21, 
            21}, 
PlotRange -> {{\(-1\), 1}, {\(-1\), 
              1}, {0, 5}}, 
AxesLabel -> {"x", "y", ""}, ColorFunction -> Hue];\)\ \)
Print["w[x,y] = ", 
        Abs[f[x  +  I y]]]; 
Print["= ", w[x, y]];

ContourPlot[
        Re[f[x  +  I y]], {x, -1, 1}, {y, -1, 
          1}, 
PlotPoints -> 35, 
        ColorFunction -> Hue]; 
Print["u[x,y] = ", 
        Re[f[x  +  I y]]]; 
Print["= ", u[x, y]];

ContourPlot[
        Im[f[x  +  I y]], {x, -1, 1}, {y, -1, 
          1}, 
PlotPoints -> 35, 
        ColorFunction -> Hue]; 
Print["v[x,y] = ", 
        Im[f[x  +  I y]]]; 
Print["= ", v[x, y]];

ContourPlot[
        Abs[f[x  +  I y]], {x, -1, 1}, {y, -1, 
          1}, 
PlotPoints -> 35, 
        ColorFunction -> Hue]; 
Print["w[x,y] = ", 
        Abs[f[x  +  I y]]]; 
Print["= ", w[x, y]];

Theorem 7.11,  Page 292.  Suppose f(z) is analytic in (Subscript[D, R]) (α).  Then f(z) has a zero of order k at the point z = α if and only if it can be expressed in the form f (z) = (((z - α))^k) g (z), where g(z) is analytic at z = α  and  g (α) ≠ 0.

Proof of Theorem 7.11, see text Page 292.

Corollary 7.4,  Page 293.  If  f(z)  and  g(z)  are analytic at  z = α,  and have zeros of orders  m  and  n,  respectively at  z = α, then their product  h (z) = f (z) g (z)  has a zero of order  m + n  at  z = α.

Example 7.11,  Page 293.  Show that f (z) = (z^3) sin (z) has a zero of order k = 4 at z = 0.

Solution 7.11.

Enter the function  f[z] = (z^3) Sin[z] and find the first few terms of the Maclaurin series.

Remove[z]; 
Clear[f, i, L, m, p, S]; 
f[z_]  =  (z^3) Sin[z]; 
S[z_]  =  Normal[Series[f[z], {z, 0, 16}]]; 
L  =  CoefficientList[S[z], z]; 
i = 1;   m  =  Length[L]; 
\(\(While[
        L[[i]] == 0\  && \ 
          i < m, 
\ \ \ term\  = \ z\^i; \ \ i = i + 1];\)\ \ \)
fact  =  Simplify[S[z]/term ]; 
p[z_]  =  term fact; 
Print["f[z] = ", f[z]]; 
Print[""]; 
Print["S[z] = ", 
        S[z], " + ..."]; 
Print[""]; 
Print["p[z] = ", term , "(", 
        fact, " + ...)"];

Thus, f (z) = (z^3) sin (z) has a zero of order k = 4 at z = 0.

Investigate the graph for real variables.

\(
\(Plot[f[x], {x, \(-2\), 2}, PlotRange -> {{\(-2\), 2}, {0, 4}}, 
        Ticks -> {Range[\(-2\), 2, 1], Range[0, 4, 1]}, 
        PlotStyle -> Magenta];\)\ \ \)
Print["The function y = f[x] = ", 
        f[x]];

We can use Mathematica to investigate the real and imaginary parts and the absolute value of f (z) = (z^3) sin (z).

u[x_, y_] = 
        FullSimplify[
          ComplexExpand[Re[f[x + I y]], 
            TargetFunctions -> {Im, Re}]]; 
v[x_, y_] = 
        FullSimplify[
          ComplexExpand[Im[f[x + I y]], 
            TargetFunctions -> {Im, 
                Re}]]; 
w[x_, y_] = 
        FullSimplify[
          ComplexExpand[Abs[f[x + I y]], 
            TargetFunctions -> {Im, 
                Re}]]; 
\(\(Plot3D[
        Re[f[x\  + \ I\ y]], {x, \(-1\), 1}, {y, \(-1\), 1}, 
        PlotPoints -> {21, 
            21}, 
PlotRange -> {{\(-1\), 1}, {\(-1\), 
              1}, {\(-4\), 
              1}}, 
AxesLabel -> {"x", "y", ""}, ColorFunction -> Hue];\)\ \)
Print["u[x,y] = ", 
        Re[f[x  +  I y]]]; 
Print["= ", u[x, y]];

\(
\(Plot3D[
        Im[f[x\  + \ I\ y]], {x, \(-1\), 1}, {y, \(-1\), 1}, 
        PlotPoints -> {21, 
            21}, 
PlotRange -> {{\(-1\), 1}, {\(-1\), 
              1}, {\(-2\), 
              2}}, 
AxesLabel -> {"x", "y", ""}, ColorFunction -> Hue];\)\ \)
Print["v[x,y] = ", 
        Im[f[x  +  I y]]]; 
Print["= ", v[x, y]];

\(
\(Plot3D[
        Abs[f[x\  + \ I\ y]], {x, \(-1\), 1}, {y, \(-1\), 1}, 
        PlotPoints -> {21, 
            21}, 
PlotRange -> {{\(-1\), 1}, {\(-1\), 
              1}, {0, 5}}, 
AxesLabel -> {"x", "y", ""}, ColorFunction -> Hue];\)\ \)
Print["w[x,y] = ", 
        Abs[f[x  +  I y]]]; 
Print["= ", w[x, y]];

ContourPlot[
        Re[f[x  +  I y]], {x, -1, 1}, {y, -1, 
          1}, 
PlotPoints -> 35, 
        ColorFunction -> Hue]; 
Print["u[x,y] = ", 
        Re[f[x  +  I y]]]; 
Print["= ", u[x, y]];

ContourPlot[
        Im[f[x  +  I y]], {x, -1, 1}, {y, -1, 
          1}, 
PlotPoints -> 35, 
        ColorFunction -> Hue]; 
Print["v[x,y] = ", 
        Im[f[x  +  I y]]]; 
Print["= ", v[x, y]];

ContourPlot[
        Abs[f[x  +  I y]], {x, -1, 1}, {y, -1, 
          1}, 
PlotPoints -> 35, 
        ColorFunction -> Hue]; 
Print["w[x,y] = ", 
        Abs[f[x  +  I y]]]; 
Print["= ", w[x, y]];

Theorem 7.12,  Page 294.  A function f(z) analytic in the punctured disk \(\(D\_R\^*\) \((α)\)\) has a pole of order k at z = α if and only if it can be expressed in the form 

			f (z) = ((h (z))/(((z  -  α))^k)), 

where h(z) is analytic at z = α  and  h (α) ≠ 0.

Proof of Theorem 7.12, see text Page 294.

Corollaries 7.5-7.8 are useful in determining the order of a zero or a pole. The proofs follow easily from Theorems 7.10 and 7.12 and are left as exercises.

Corollary 7.5,  Page 295.  If f(z) is analytic and has a zero of order k at the point  z = α, then g (z) = (1/(f (z))) has a pole of order k at z = α.

Corollary 7.6,  Page 295. If f(z) has a pole of order  k  at the point  z = α, then g (z) = (1/(f (z))) has a removable singularity at z = α.  If we define g (α) = 0,  then g(z) has a zero of order k at z = α.

Corollary 7.7,  Page 295.  If  f(z)  and  g(z)  have poles of orders  m  and  n,  respectively at the point  z = α, then their product  h (z) = f (z) g (z)  has a pole of order  m + n  at  z = α.

Corollary 7.8,  Page 295.  Let  f(z)  and  g(z)  be analytic with  zeros of orders  m  and  n,  respectively at  z = α.  Then their quotient h (z) = ((f (z))/(g (z)))  has the following behavior:

(i)  If  m > n,  then  h(z)  has a removable singularity at  z = α.   If we define  h (α) = 0,  then  h(z)  has a zero of order  m - n  at  z = α. 

(ii)  If  m < n,  then  h(z)  has a pole of order  n - m  at  z = α. 

(iii)  If  m = n,  then  h(z)  has a removable singularity  at  z = α,  and can be defined so that  h(z)  is analytic at  z = α,  by  h (α) = (lim_(z  ->  α))  h (z).

Example 7.12,  Page 295.  Locate the zeros and poles of  h (z) = Tan[z]/z,  and determine their order.

Solution 7.12.

Enter the function  h[z] = Tan[z]/z and find the first few terms of the Maclaurin series.

Remove[z]; 
Clear[h, i, S]; 
h[z_]  =  Tan[z]/z; 
S[z_]  =  Normal[Series[h[z], {z, 0, 13}]]; 
Print["h[z] = ", h[z]]; 
Print[""]; 
Print["S[z] = ", S[z]]; 
Print[""]; 
Print["h[z] = ", 
        S[z], " + ..."];

Thus, h (z) = Tan[z]/z has a removable singularity at z = 0.

Now look for the zeros of  h[x].

Print["  h[z] = ", h[z]]; 
\(\(For[k = \(-5\), 
        k ≤ \(-1\), \(k++\), 
\ \ \ Print["h[", 
          k, " π] = ", 
          h[k\ π]]\ ];\)\ \)
\(\(For[k = 1, 
        k ≤ 5, \(k++\), 
\ \ \ Print["h[", 
          k, " π] = ", 
          h[k\ π]]\ ];\)\ \)

Or we could consider the following method of investigation.

Print["h[x] = ", h[x] ]; 
Print["h[n π] = ", 
        h[n π] ]; 
Print["h[n π] = ", 
        Simplify[h[n π], Element[n, Integers]] ];

Thus, h (z) = Tan[z]/z has simple zeros at  \(z = \(n\ π\ \ for\ \ n = \(±1\)\), \(±2\),  ... \).  

Now consider the other singular points.

Print["    h[z] = ", h[z]]; 
\(\(For[i = \(-4\), 
        i <= 5, \(i++\), 
Print["h[", \(2  i - 1\)\/2, " π] = ", 
Limit[h[z], 
            z -> \(\((2  i - 1)\) π\)\/2]\ ]\ ];\)\ \)

Or we could consider the following method of investigation.

Print["h[x] = ", h[x] ]; 
\(\(Print[\*""h[(2n+1) \!\(π\/2\)] = "", 
        h[\((2  n + 1)\)\ π\/2]\ ];\)\ \)
\(\(Print[\*""h[(2n+1) \!\(π\/2\)] = "", 
        Simplify[h[\((2  n + 1)\)\ π\/2], 
          Element[n, Integers]]\ ];\)\ \)

Hence,  h (z) = Tan[z]/z has simple poles at  z = (((2  n - 1) π)/2)  where n is an integer.

Investigate the graph for real variables.

\(
\(Plot[h[x], {x, \(-3\) π, 3  π}, 
        PlotRange -> {{\(-3\) π, 3  π}, {\(-10\), 10}}, 
        Ticks -> {Range[\(\(-7\) π\)\/2, \(7  π\)\/2, π], 
            Range[\(-10\), 10, 5]}, 
        PlotStyle -> Magenta];\)\ \ \)
Print["The function y = h[x] = ", 
        h[x]];

We can use Mathematica to investigate the real part, imaginary part and absolute value of  h (z) = Tan[z]/z.

u[x_, y_] = 
        FullSimplify[
          ComplexExpand[Re[h[x + I y]], 
            TargetFunctions -> {Im, 
                Re}]]; 
v[x_, y_] = 
        FullSimplify[
          ComplexExpand[Im[h[x + I y]], 
            TargetFunctions -> {Im, 
                Re}]]; 
w[x_, y_] = 
        FullSimplify[
          ComplexExpand[Abs[h[x + I y]], 
            TargetFunctions -> {Im, 
                Re}]]; 
\(\(Plot3D[
        u[x, y], {x, \(-6\), 6}, {y, \(-6\), 
          6}, 
PlotPoints -> {41, 41}, 
        PlotRange -> {{\(-6\), 6}, {\(-6\), 6}, {0, 
              0.15}}, 
ViewPoint -> {4, 4, 1}, 
        ClipFill -> 
          None, 
AxesLabel -> {"x", "y", ""}, ColorFunction -> Hue];\)\ \)
Print["Re[", h[z], "] = ", 
        u[x, y]];

\(
\(Plot3D[
        u[x, y], {x, \(-6\), 6}, {y, \(-6\), 
          6}, 
PlotPoints -> {41, 41}, 
        PlotRange -> {{\(-6\), 6}, {\(-6\), 6}, {0, 
              2}}, 
ViewPoint -> {4, 4, 1}, 
        ClipFill -> 
          None, 
AxesLabel -> {"x", "y", ""}, ColorFunction -> Hue];\)\ \)
Print["Re[", h[z], "] = ", 
        u[x, y]];

\(
\(Plot3D[
        v[x, y], {x, \(-6\), 6}, {y, \(-6\), 
          6}, 
PlotPoints -> {41, 41}, 
        PlotRange -> {{\(-6\), 6}, {\(-6\), 6}, {\(-0.15\), 
              0.15}}, 
ViewPoint -> {4, 2, 2}, 
        ClipFill -> 
          None, 
AxesLabel -> {"x", "y", ""}, ColorFunction -> Hue];\)\ \)
Print["Im[", h[z], "] = ", 
        v[x, y]];

\(
\(Plot3D[
        v[x, y], {x, \(-6\), 6}, {y, \(-6\), 
          6}, 
PlotPoints -> {41, 41}, 
        PlotRange -> {{\(-6\), 6}, {\(-6\), 6}, {\(-1\), 
              1}}, 
ViewPoint -> {4, 2, 2}, 
        ClipFill -> 
          None, 
AxesLabel -> {"x", "y", ""}, ColorFunction -> Hue];\)\ \)
Print["Im[", h[z], "] = ", 
        v[x, y]];

\(
\(Plot3D[
        w[x, y], {x, \(-6\), 6}, {y, \(-6\), 
          6}, 
PlotPoints -> {41, 41}, 
        PlotRange -> {{\(-6\), 6}, {\(-6\), 6}, {0, 
              0.2}}, 
ViewPoint -> {4, 4, 1}, 
        ClipFill -> 
          None, 
AxesLabel -> {"x", "y", ""}, ColorFunction -> Hue];\)\ \)
Print["Abs[", h[z], "] = ", 
        w[x, y]];

\(
\(Plot3D[
        w[x, y], {x, \(-6\), 6}, {y, \(-6\), 
          6}, 
PlotPoints -> {41, 41}, 
        PlotRange -> {{\(-6\), 6}, {\(-6\), 6}, {0, 
              2}}, 
ViewPoint -> {4, 4, 1}, 
        ClipFill -> 
          None, 
AxesLabel -> {"x", "y", ""}, ColorFunction -> Hue];\)\ \)
Print["Abs[", h[z], "] = ", 
        w[x, y]];

Example 7.13,  Page 296.  Locate the poles of g (z) = (1/(5  (z^4)  +  26  (z^2)  +  5)), and specify their order.

Solution 7.13.

Enter the function  g[z] = (1/(5  (z^4)  +  26  (z^2)  +  5)) and find roots of the polynomial in the denominator.

Remove[z, Z]; 
Clear[g, solset]; 
g[z_]  =  (1/(5  (z^4)  +  26  (z^2)  +  5)); 
solset  =  Solve[Denominator[g[z]] == 0, z]; 
Print["g[z] = ", g[z]]; 
Print["The poles are located at:"]; 
Print[solset];

Evaluate g[z] at the poles.

(Subscript[Z, 1])  =  
        (Subscript[solset, [[1, 1, 2]]]); 
(Subscript[Z, 2])  =  
        (Subscript[solset, [[2, 1, 2]]]); 
(Subscript[Z, 3])  =  
        (Subscript[solset, [[3, 1, 2]]]); 
(Subscript[Z, 4])  =  
        (Subscript[solset, [[4, 1, 2]]]); 
Print["g[z] = ", g[z]]; 
Print["g[", (Subscript[Z, 1]), "] = ", 
        Limit[g[z], z -> (Subscript[Z, 1])]]; 
Print["g[", (Subscript[Z, 2]), "] = ", 
        Limit[g[z], z -> (Subscript[Z, 2])]]; 
Print["g[", (Subscript[Z, 3]), "] = ", 
        Limit[g[z], z -> (Subscript[Z, 3])]]; 
Print["g[", (Subscript[Z, 4]), "] = ", 
        Limit[g[z], z -> (Subscript[Z, 4])]];

Thus g (z) = (1/(5  (z^4)  +  26  (z^2)  +  5)) has four simple poles.

We can use Mathematica to investigate the absolute value of  g (z) = (1/(5  (z^4)  +  26  (z^2)  +  5)).

u[x_, y_] = 
        FullSimplify[
          ComplexExpand[Re[g[x + I y]], 
            TargetFunctions -> {Im, 
                Re}]]; 
v[x_, y_] = 
        FullSimplify[
          ComplexExpand[Im[g[x + I y]], 
            TargetFunctions -> {Im, 
                Re}]]; 
w[x_, y_] = 
        FullSimplify[
          ComplexExpand[Abs[g[x + I y]], 
            TargetFunctions -> {Im, 
                Re}]]; 
Plot3D[
        u[x, y], {x, -3, 3}, {y, -3, 
          3}, 
PlotPoints -> {41, 41}, 
        PlotRange -> {{-3, 3}, {-3, 3}, {-0.05, 
              0.4}}, 
ClipFill -> None, 
        AxesLabel -> {"x", "y", ""}, 
        ColorFunction -> Hue]; 
Print["u[x,y] = ", 
        Re[f[x  +  I y]]]; 
Print["= ", u[x, y]];

ContourPlot[
        u[x, y], {x, -3, 3}, {y, -3, 
          3}, 
PlotPoints -> 75, 
        ColorFunction -> Hue]; 
Print["u[x,y] = ", 
        Re[f[x  +  I y]]]; 
Print["= ", u[x, y]];

Plot3D[u[x, y], {x, -3, 3}, {y, -3, 3}, 
        PlotPoints -> 
          55, 
PlotRange -> {{-3, 3}, {-3, 
              3}, {0, 0.4}}, BoxRatios -> {1, 1, 1}, Mesh -> False, 
        AxesLabel -> {"x", "y", ""}, 
        ViewPoint -> {-3, 3, 2}, Boxed -> False, 
        LightSources -> {{{4, 7, 20}, Red}, {{7, 10, 10}, 
              Green}, {{-13, -8, 15}, Blue}}]; 
Print["u[x,y] = ", 
        Re[f[x  +  I y]]]; 
Print["= ", u[x, y]];

Plot3D[
        v[x, y], {x, -3, 3}, {y, -3, 
          3}, 
PlotPoints -> {41, 41}, 
        PlotRange -> {{-3, 3}, {-3, 3}, {-0.05, 
              0.4}}, 
ClipFill -> None, 
        AxesLabel -> {"x", "y", ""}, 
        ColorFunction -> Hue]; 
Print["v[x,y] = ", 
        Im[f[x  +  I y]]]; 
Print["= ", v[x, y]];

ContourPlot[
        v[x, y], {x, -3, 3}, {y, -3, 
          3}, 
PlotPoints -> 75, 
        ColorFunction -> Hue]; 
Print["v[x,y] = ", 
        Im[f[x  +  I y]]]; 
Print["= ", v[x, y]];

Plot3D[v[x, y], {x, -3, 3}, {y, -3, 3}, 
        PlotPoints -> 
          55, 
PlotRange -> {{-3, 3}, {-3, 
              3}, {0, 0.4}}, BoxRatios -> {1, 1, 1}, Mesh -> False, 
        AxesLabel -> {"x", "y", ""}, 
        ViewPoint -> {-3, 3, 2}, Boxed -> False, 
        LightSources -> {{{4, 7, 20}, Red}, {{7, 10, 10}, 
              Green}, {{-13, -8, 15}, Blue}}]; 
Print["v[x,y] = ", 
        Im[f[x  +  I y]]]; 
Print["= ", v[x, y]];

Plot3D[
        w[x, y], {x, -3, 3}, {y, -3, 
          3}, 
PlotPoints -> {41, 41}, 
        PlotRange -> {{-3, 3}, {-3, 3}, {0, 
              0.4}}, 
ClipFill -> None, 
        AxesLabel -> {"x", "y", ""}, 
        ColorFunction -> Hue]; 
Print["w[x,y] = ", 
        Abs[f[x  +  I y]]]; 
Print["= ", w[x, y]];

ContourPlot[
        w[x, y], {x, -3, 3}, {y, -3, 
          3}, 
PlotPoints -> 75, 
        ColorFunction -> Hue]; 
Print["w[x,y] = ", 
        Abs[f[x  +  I y]]]; 
Print["= ", w[x, y]];

Plot3D[w[x, y], {x, -3, 3}, {y, -3, 3}, 
        PlotPoints -> 
          55, 
PlotRange -> {{-3, 3}, {-3, 
              3}, {0, 0.4}}, BoxRatios -> {1, 1, 1}, Mesh -> False, 
        AxesLabel -> {"x", "y", ""}, 
        ViewPoint -> {-3, 3, 2}, Boxed -> False, 
        LightSources -> {{{4, 7, 20}, Red}, {{7, 10, 10}, 
              Green}, {{-13, -8, 15}, Blue}}]; 
Print["w[x,y] = ", 
        Abs[f[x  +  I y]]]; 
Print["= ", w[x, y]];

Example 7.14,  Page 296.  Locate the zeros and poles of g (z) = ((π cot (π z))/(z^2)), and determine their order.

Solution 7.14.

Enter the function  g[z] = ((π Cot[π z])/(z^2)) and find roots of the polynomial in the denominator.

Remove[z]; 
Clear[g, S]; 
g[z_]  =  ((π Cot[π z])/(z^2)); 
S[z_]  =  Normal[Series[g[z], {z, 0, 9}]]; 
Print["g[z] = ", g[z]]; 
Print[""]; 
Print["S[z] = ", S[z]]; 
Print[""]; 
Print["g[z] = ", 
        S[z], " + ..."];

Thus g (z) = ((π cot (π z))/(z^2)), has a pole of order  n = 3  at  z = 0.

Now consider the other singularities.

Print["g[z] = ", 
        g[z]]; 
For[k = -5, 
        k ≤ -1, k++, 
Print["g[", 
            k, "] = ", 
            Limit[g[z], z -> k]];  ]; 
For[k = 1, 
        k ≤ 
          5, k++, 
Print["g[", k, "] = ", 
            Limit[g[z], z -> k]];  ];

Or we could consider the following method of investigation.

Print["g[x] = ", g[x] ]; 
Print["g[n] = ", g[n] ]; 
Print["g[n] = ", 
        Simplify[g[n], Element[n, Integers]] ];

Thus g (z) = ((π cot (π z))/(z^2)) has simple poles at z = ±1, ±2,   ... .  

Investigate the graph for real variables.

\(
\(Plot[g[x], {x, \(-3\), 3}, 
        PlotRange -> {{\(-3\), 3}, {\(-10\), 10}}, 
        Ticks -> {Range[\(-3\), 3, 1], Range[\(-10\), 10, 5]}, 
        PlotStyle -> Magenta];\)\ \ \)
Print["The function y = g[x] = ", 
        g[x]];

We can use Mathematica to investigate the real part, imaginary part, and absolute value of  g (z) = ((π cot (π z))/(z^2)).

u[x_, y_] = 
        FullSimplify[
          ComplexExpand[Re[g[x + I y]], 
            TargetFunctions -> {Im, 
                Re}]]; 
v[x_, y_] = 
        FullSimplify[
          ComplexExpand[Im[g[x + I y]], 
            TargetFunctions -> {Im, 
                Re}]]; 
w[x_, y_] = 
        FullSimplify[
          ComplexExpand[Abs[g[x + I y]], 
            TargetFunctions -> {Im, 
                Re}]]; 
Plot3D[
        Re[g[x  +  I y]], {x, -3, 3}, {y, -3, 
          3}, 
PlotPoints -> {41, 41}, 
        PlotRange -> {{-3, 3}, {-3, 3}, {-0.5, 
              0.5}}, 
ClipFill -> None, 
        AxesLabel -> {"x", "y", ""}, 
        ColorFunction -> Hue]; 
Print["u[x,y] = ", 
        Re[g[x  +  I y]]]; 
Print["= ", u[x, y]];

ContourPlot[
        u[x, y], {x, -3, 3}, {y, -3, 
          3.01}, 
PlotPoints -> 75, 
        ColorFunction -> Hue]; 
Print["u[x,y] = ", 
        Re[g[x  +  I y]]]; 
Print["= ", u[x, y]];

Plot3D[
        Re[g[x  +  I y]], {x, -3, 3}, {y, -3, 3}, 
        PlotPoints -> 
          55, 
PlotRange -> {{-3, 3}, {-3, 
              3}, {0, 5}}, BoxRatios -> {1, 1, 1}, Mesh -> False, 
        AxesLabel -> {"x", "y", ""}, 
        ViewPoint -> {-3, 3, 2}, Boxed -> False, 
        LightSources -> {{{4, 7, 20}, Red}, {{7, 10, 10}, 
              Green}, {{-13, -8, 15}, Blue}}]; 
Print["u[x,y] = ", 
        Re[g[x  +  I y]]]; 
Print["= ", u[x, y]];

Plot3D[
        Im[g[x  +  I y]], {x, -3, 3}, {y, -3, 
          3}, 
PlotPoints -> {41, 41}, 
        PlotRange -> {{-3, 3}, {-3, 3}, {-0.5, 
              0.5}}, 
ClipFill -> None, 
        AxesLabel -> {"x", "y", ""}, 
        ColorFunction -> Hue]; 
Print["v[x,y] = ", 
        Im[g[x  +  I y]]]; 
Print["= ", v[x, y]];

ContourPlot[
        v[x, y], {x, -3, 3}, {y, -3, 
          3.01}, 
PlotPoints -> 75, 
        ColorFunction -> Hue]; 
Print["v[x,y] = ", 
        Im[g[x  +  I y]]]; 
Print["= ", v[x, y]];

Plot3D[
        Im[g[x  +  I y]], {x, -3, 3}, {y, -3, 3}, 
        PlotPoints -> 
          55, 
PlotRange -> {{-3, 3}, {-3, 
              3}, {0, 5}}, BoxRatios -> {1, 1, 1}, Mesh -> False, 
        AxesLabel -> {"x", "y", ""}, 
        ViewPoint -> {-3, 3, 2}, Boxed -> False, 
        LightSources -> {{{4, 7, 20}, Red}, {{7, 10, 10}, 
              Green}, {{-13, -8, 15}, Blue}}]; 
Print["v[x,y] = ", 
        Im[g[x  +  I y]]]; 
Print["= ", v[x, y]];

Plot3D[
        Abs[g[x  +  I y]], {x, -3, 3}, {y, -3, 
          3}, 
PlotPoints -> {41, 41}, 
        PlotRange -> {{-3, 3}, {-3, 3}, {0, 
              5}}, 
ViewPoint -> {4, 4, 1}, 
        ClipFill -> None, AxesLabel -> {"x", "y", ""}, 
        ColorFunction -> Hue]; 
Print["w[x,y] = ", 
        Abs[g[x  +  I y]]]; 
Print["= ", w[x, y]];

ContourPlot[
        w[x, y], {x, -3, 3}, {y, -3, 
          3.01}, 
PlotPoints -> 75, 
        ColorFunction -> Hue]; 
Print["w[x,y] = ", 
        Abs[g[x  +  I y]]]; 
Print["= ", w[x, y]];

Plot3D[
        Abs[g[x  +  I y]], {x, -3, 3}, {y, -3, 3}, 
        PlotPoints -> 
          55, 
PlotRange -> {{-3, 3}, {-3, 
              3}, {0, 5}}, BoxRatios -> {1, 1, 1}, Mesh -> False, 
        AxesLabel -> {"x", "y", ""}, 
        ViewPoint -> {-3, 3, 2}, Boxed -> False, 
        LightSources -> {{{4, 7, 20}, Red}, {{7, 10, 10}, 
              Green}, {{-13, -8, 15}, Blue}}]; 
Print["w[x,y] = ", 
        Abs[g[x  +  I y]]]; 
Print["= ", w[x, y]];

Section 7.4  Exercises for Singularities, Zeros and Poles
See textbook page 238.

Section 7.5  Exercises for Singularities, Zeros, and Poles
See textbook page 296.

Section 7.5	Applications of Taylor and Laurent Series

GO TO  THE  Table of Contents