The essence of complex analysis

[August 10, 2020]

Rapid-fire non-rigorous intuitions for calculus on complex numbers. Not an introduction to the subject.


1. The complex plane

Calculus on \(\bb{C}\) is more-or-less just calculus on \(\bb{R}^2\), under the substitutions:

\[\begin{aligned} i &\lra R \\ a + bi & \lra (a + R b) \hat{x} = a \hat{x} + b \hat{y} \end{aligned}\]

Where \(R\) is the “rotation operator”. The identity \(\cos \theta + i \sin \theta = e^{i \theta}\) follows from applying the exponential map to \(R\) as the generator of rotations. If I had my way we would not use complex numbers ever and would just learn the subject as ‘calculus using rotation operators’ to avoid a proliferation of things that seem like magic.

The one way that \(\bb{C}\) is more than just \(\bb{R}^2\) is that there is a definition of multiplying two vectors:

\[(a + b i) (c + d i) = (ac - bd) + (ad + bc) i\]

The best way I know to interpret this is like this. The correspondence \(a + bi \Ra (a + R b) \hat{x}\) suggests that we interpret a complex number as an operator that is understood to ‘act on’ the \(\hat{x}\) basis vector. In this sense both adding and multiplying complex numbers are natural operations: adding them applies both operations to \(\hat{x}\) and adds the result; multiplying them applies them sequentially.

\[[(a + b R) \circ (c + d R) ](\hat{x}) = [(ac - bd) + (ad + bc) R] (\hat{x})\]

This model is especially appealing because it is easy to extend to higher dimensions.

So we want to do calculus on these operators on \(\bb{R}^2\). We start by identifying derivatives and differential forms. The differentials of the coordinate vectors are:

\[\begin{aligned} dz &= dx + i dy \\ d\bar{z} &= dx - i dy \end{aligned}\]

The partial derivatives are for some reason given the name Wirtinger derivatives:

\[\begin{aligned} \p_z &= \frac{1}{2}(\p_x - i \p_y) \\ \p_{\bar{z}} &= \frac{1}{2}(\p_x + i \p_y) \end{aligned}\]

Note that the signs are swapped, compared to the forms, and factors of \(\frac{1}{2}\) have appeared. These are necessary because of the requirement that that \(\p_z (z) = \p_{\bar{z}} (\bar{z}) = 1\). In an alternate universe both sides might be given \(\frac{1}{\sqrt{2}}\) factors instead.

There are other parameterizations of \(\{ z, \bar{z} \}\) in terms of \(\bb{R}^2\) coordinates. The most common choice is polar coordinates: \(z = re^{i \theta}\) and \(\bar{z} = r e^{-i \theta}\). Then the forms are:

\[\begin{aligned} dz &= e^{i \theta} (dr + i r d \theta) \\ d\bar{z} &= e^{-i \theta} (dr - i r d \theta) \end{aligned}\]

Then the partial derivatives would be:

\[\begin{aligned} \p_z &= \frac{e^{-i \theta}}{2} (\p_r - \frac{i}{r} \p_\theta) \\ \p_{\bar{z}} &= \frac{e^{i \theta}}{2} (\p_r + \frac{i}{r} \p_\theta) \end{aligned}\]

Although these don’t come up very much. Note that any function that explicitly uses \(r\) or \(\theta\) has a \(\bar{z}\) dependency unless they cancel it out somehow, since both \(r\) and \(\theta\) do:

\[\begin{aligned} r &= \sqrt{z \bar{z}} \\ \theta &= - \frac{i}{2} \log \frac{z}{\bar{z}} \end{aligned}\]

2. Holomorphic functions

Perhaps we want to do calculus on complex numbers, and take derivatives of functions of \(z\). Being complex differentiable means that \(f(z)\) has a derivative that is itself a complex number: \((f_x, f_y) \in \bb{C}\) (when regarded as part of \(\bb{R}^2\)).

The Cauchy-Riemann equations tell you when a complex function \(f(z) = u(x+iy) + i v(x + iy)\) is complex-differentiable:

\[\begin{aligned} u_x = v_y\\ u_y = - v_x \end{aligned}\]

In fact, the equations express the idea that \(f\) has no derivative with respect to \(\bar{z}\):

\[\begin{aligned} \p_{\bar{z}} f(z) &= \frac{1}{2} (f_x + i f_y) \\ &\propto u_x + i v_x + i u_y - v_y \\ &= (u_x - v_y) + i (v_x + u_y) \\ &= 0 + i 0 \end{aligned}\]

As long as \(f\) is continuous and this condition is true in a region \(D\), operations on \(f(z)\) essentially work like they would for one-variable functions in \(z\). For instance \(\p_z (z^n) = n z^{n-1}\).

While \(z\) seems like a 2-dimensional variable, there’s only one ‘degree of freedom’ in the derivative of a complex function. \(f'(z)\) has to be a simple complex number, which rotates and scales tangent vectors uniformly (a conformal map):

\[f(z + dz) \approx f(z) + f'(z) dz = f(z) + re^{i\theta} dz\]

Functions which are complex-differential at every point within a region are called holomorphic in that region for some reason. A function \(f(z)\) that is holomorphic (or ‘regular’?) in a region \(D\) is extremely well-behaved:

  • \(f\) is infinitely complex-differentiable
  • and \(f\) is ‘complex analytic’, ie equal to its Taylor series in \(z\) throughout \(D\). The series around any particular point converges within the largest circular disk that stays within \(D\).
  • and \(f\) is locally invertible, ie \(f^{-1}(w + dw) \approx z + 1/f'(z) dw\) exists and is holomorphic in the neighborhood of \(z = f(w)\).
  • its antiderivatives exist, and its integrals along any closed contour vanishes: \(\oint_C f(z) dz = 0\).
  • the data of \(f\) in \(D\) is fully determined by its values on the boundary of the region, or on any one-dimensional curve within \(D\), or on some nontrivial subregion of \(D\).

The general theme is that holomorphic/analytic functions generally act like one-dimensional functions and all of the calculus is really easy on them. This tends to be true much more than it is for 1d calculus.

If two analytic functions defined on different regions agree on an overlapping region, they are in a sense the ‘same function’. This lets you analytically continue a function by finding other functions which agree on a particular line or region. An easy case is to ‘glue together’ Taylor expansions around different points to go around a divergence.

Most 1d functions like \(e^x\) and \(\sin x\) have holomorphic complex versions like \(e^z\) and \(\sin z\) that are analytic everywhere. Discontinuous functions like \(\|z\|\) or \(\log z = i \theta \ln r\), or functions that include an explicit or implicity \(\bar{z}\) dependency, fail to be analytic somewhere.

Complex differentiability fails at singularities. We categorize the types:

  • poles of order \(n\), around which \(f(z) \sim 1/z^n\), which are ‘well-behaved’ singularities. Around these there’s a region where \(1/f\) is analytic. ‘Zeros’ and ‘poles’ are dual in the sense that \(f \sim z^n\) at zeroes and \(f \sim 1/z^n\) at poles.
  • removable singularities: singularities that can be removed by redefinition, probably because they’re an indeterminate form. The canonical example is \(\sin(z)/z\) which is repaired by defining \(\sin(0)/0 = 1\). In a sense these are not singularities at all.
  • essential singularities: singularities which oscillate infinitely rapidly near a point, such that they are in a sense too complicated to handle. \(\sin(1/z)\) or \(e^{1/z}\) are the canonical examples. They all look like this, oscillating infinitely: Great Picard’s Theorem (what a name) says that near an essential singularity the function takes every value infinitely times, except possibly one.

Poles are much more interesting than the other two.

3. Residues

No one would really care about complex analysis except for, well, analysts, were it not for one suspicious fact about the complex derivative:

\[\p_{\bar{z}} \frac{1}{z} \neq 0\]

Make sure you see that that’s a \(\bar{z}\)-derivative. For some reason, \(z^n\) for only \(n=-1\) has a certain kind of divergence at \(z=0\). It looks like a 2d delta function distribution:

\[\p_{\bar{z}} \frac{1}{z} = 2 \pi i \delta (z, \bar{z})\]

This is intrinsically related to the fact that we’re doing calculus in 2d. In 3d a similar property holds for \(1/z^2\), and in 1d it’s \(\p_x \log x = \frac{1}{x} + i \pi \delta(x)\) that has the delta term.

This is equivalent to saying that the contour integral (integral on a closed path) of \(1/z\) around the origin is non-zero:

\[\begin{aligned} \oint \frac{1}{z} dz &= \oint \frac{e^{i \theta} dr + ir e^{i\theta} d \theta }{r e^{i \theta}} \\ &= \oint \frac{dr}{r} + i d \theta \\ &= 2 \pi i \end{aligned}\]

It’s clear why this non-zero contour only holds for \(z^{-1}\): for any other \(z^n\), the \(d \theta\) term is still a non-constant function of \(\theta\), so its values on each end cancel out. For \(n=-1\), though, the \(d \theta\) just counts the total change in angle.

The delta-function version follows from Stoke’s theorem. Since the contour integral gives the same value on any path as long as it circles \(z=0\), the divergence must be fully located at that point:

\[\begin{aligned} \oint_{\p D} \frac{1}{z} dz &= \iint_D d(\frac{dz}{z}) \\ 2\pi i &= \iint_D \p_{\bar{z}} \frac{1}{z} d \bar{z} \^ dz \\ \p_{\bar{z}} \frac{1}{z} &\equiv 2 \pi i \delta(z, \bar{z}) \end{aligned}\]

A function that is holomorphic except at a set of poles is called meromorphic (‘mero-‘ is Greek, meaning ‘part’ or ‘fraction’). If we integrate a meromorphic function around a region \(D\) the result only contains contributions from the \(\frac{1}{z}\) terms. Around each order-1 pole at \(z_k\), \(f(z_k) \sim f_{-1} \frac{1}{z_k} + f^{*}(z_k)\) where \(f^{*}\) has no \(z^{-1}\) term. The \(f_{-1}\) values at each pole are for some reason called residues, and:

\[\int_{\p D} f(z) dz = 2 \pi i \sum_{z_k} I(\p D, z_k) \text{Res} (f, z_k)\]

Where \(I(\p D, z_k)\) gives the winding number around the order-1 pole (+1 for single positive rotation, -1 for a single negative rotation, etc).

This makes integration of analytic functions around closed contours really easy; you can often just eyeball them:

\[\oint_{\p D} \frac{1}{z-a} dz = 2\pi i 1_{a \in D}\]

Multiplying and dividing powers of \((z-a)\) and then integrating around a curve containing \(a\) allows you to extract any term in the Taylor series of \(f(z)\) around \(a\):

\[f_n = f^{(n)}(z)_{z=a} = \frac{n!}{2 \pi i} \oint f(z) (z-a)^{n-1} dz\]

This is called Cauchy’s Integral Theorem. When negative terms are present the Taylor series is instead called a Laurent Series.

\[\begin{aligned} f(z) &\approx \sum f_n \frac{(z-a)^n}{n!} \\ &= \ldots + \frac{f_{-1}}{z} + f_0 + f_{1} z + f_2 \frac{z^2}{2!} + \ldots \end{aligned}\]

In particular the value at \(z=a\) is fully determined by the contour integral with \((z-a)^{- 1}\):

\[f(a) = f_0 = \frac{1}{2 \pi i} \oint \frac{f(z)}{z-a} dz\]

You can, of course, formulate this whole thing in terms of \(f(\bar{z})\) and \(\frac{dz}{\bar{z}}\) instead. If a function isn’t holomorphic in either \(z\) or \(\bar{z}\), you can still do regular \(\bb{R}^2\) calculus in two variables \(f(z, \bar{z})\), although I’m not sure how you would deal with poles.

There is a duality between zeroes and poles of meromorphic functions – in the region of a pole of a function \(f\), the function behaves like \(\frac{1}{g}\) where \(g\) is an analytic function. In general a meromorphic function can be written as \(f= \frac{h}{g}\) where \(g,h\) are analytic, with the zeroes of \(g\) corresponding to the poles of \(f\).

4. Integral tricks

Laurent series and the ‘calculus of Residues’ gives rise to a whole slew of integration tricks.

Closed integrals of a function with a Laurent series can be eyeballed using the Cauchy integral formula:

\[\begin{aligned} \oint_{r=1} \frac{1}{z(z-2)} dz &= \frac{1}{2} \oint_{r=1} \frac{1}{z-2} - \frac{1}{z} dz \\ &= 2 \pi i \frac{1}{2} (-1) \\ &= - \pi i \end{aligned}\]

Integrals along the real line \(\int_{-\infty}^{\infty}\) can often be computed by ‘closing the contour’ at \(+ r \infty\). This is especially easy if the integrand vanishes at \(r=\infty\), but also helps if it’s just easier to integrate there.

\[\begin{aligned} \int_{-\infty}^{\infty} \frac{1}{1 + x^2} dx &= \int_{r = -\infty}^{r = \infty} \frac{dz}{1 + z^2} + \int_{\theta=0, \, r=\infty}^{\theta=\pi, \, r=\infty} \frac{dz}{1 + z^2} \\ &= \oint \frac{1}{z - i} \frac{1}{z + i} dz \\ &= 2 \pi i \text{Res}(z=i, \frac{1}{z - i} \frac{1}{z + i}) \\ &= 2\pi i \frac{1}{2i} \\ &= \pi \end{aligned}\]

Here we closed the contour around the upper-half plane, upon which the integrand is \(0\) due to the \(r^2 \ra \infty\). One pole is the upper-half plane and one is in the lower. The winding number around the upper is \(+1\) and the residue is \(\frac{1}{z+i}\) evaluated at \(z=i\), or \(1/2i\). If we had used the lower half-plane the winding number would have been \(-1\) and the residue \(-1/2i\), so the result is independent of how we closed the contour. This method gives the answer very directly without having to remember that \(\int \frac{dx}{1 + x^2} = \tan^{-1} x\) or anything like that.

Note that this wouldn’t work if the pole was on the path of integration, as in \(\int_{-\infty}^{+\infty} \frac{1}{x} dx\). This integral is the Cauchy Principal Value and is in a sense an indefinite form like \(0/0\) whose value depends on the context. More on that another time.

Many other integrals are solvable by choosing contours that are amenable to integration. Often choices that keep \(r\) or \(\theta\) constant are easiest. See Wikipedia on contour integration for many examples.

5. Topological concerns

There are some tedious things you have to account for when considering functions of \(z\).

First, the \(\theta\) variable is discontinuous, since \(\theta = 0\) and \(\theta = 2\pi\) refer to the same point. This means that inverting a function of \(\theta\) will produce a multi-valued function:

\[\log e^{i \theta} = i \theta + 2 \pi i k_{\in \bb{Z}}\]

Smoothly varying \(\theta = \int d \theta\) of course will just continue to tick up: \(2\pi, 4\pi, 6\pi\), etc. But the \(\log\) function itself appears to have a discontinuity of \(2\pi i\) at \(\theta = 0\).

When dealing with these multi-valued functions you can consider \(\theta = 0\) as a ‘branch point’ – a place where the function becomes multi-valued. But to be honest the whole theory of branch points isn’t very interesting if you aren’t a mathematician. I prefer to just think of all math being done modulo \(2 \pi\), or, if you need the discontinuity to count because you’re doing contour integrals, just get over the idea that functions can’t have multiple path-dependent values and don’t demand it have a unique inverse.

Another topological interest in \(\bb{C}\): if you ‘join together’ the points at infinity in every direction by defining a symbol \(\infty\) such that \(1/0 = \infty\), you get the “extended complex plane” or the Riemann sphere, since it is topologically shaped like a sphere. Most of the things that seem like they should be true involving \(\infty\) are true in this case. For example, the asymptotes of \(\frac{1}{z}\) on either size of \(\| z \| = 0\) really do connect at infinity and come back on the other side.

The Riemann sphere is topologically like a sphere, but acts like a projective plane, which is a bit unintuitive. (This corresponds rather to a half sphere where antipodal points are considered equivalent). Particularly, it kinda seems like \(+r\) and \(-r\) should be different points, rather than the ‘same’ infinity. There is probably a resolution to this using oriented projective geometry, defining the back half of the sphere as a second copy of \(\bb{C}\) and conjoining the two at \(\infty e^{i \theta} \lra -\infty e^{i\theta}\), but that’s not worth pursuing further here.

Complex analytic functions map the Riemann sphere to itself in some way. For instance, \(z \mapsto \frac{1}{z}\) swaps \(0\) and \(\infty\) and the rest of the sphere comes along for a ride. Powers of \(z\) cause the mapping to be \(m:n\) – so \(z^2\) maps two copies of the sphere to one copy, while \(z^{1/2}\) maps one copy to two copies, hence becoming multi-valued. The möbius transformations, functions of the form \(\frac{az + b}{cz + d}\) with \(ad-bc \neq 0\), are the invertible holomorphic transformations of the Riemann sphere. They comprise dilations, rotations, reflections, and inversaion of \(\bb{C}\).

6. Convergence concerns

Although Laurent series capture the properties of complex analytic functions well, they still only work within a definite radius of convergence, given by the distance to the closest pole. Sometimes we can expand around other points to work around this. A common choice is expanding around \(z=\infty\), by creating a series in \(1/z\) instead:

\[\frac{1}{1-z} = \begin{cases} 1 + z + z^2 + \ldots & \| z \| < 1 \\ -\frac{1}{z} - \frac{1}{z^2} - \frac{1}{z^3} - \ldots & \| z \| > 1 \end{cases}\]

Amusingly, you can keep changing the point you expand around to ‘go around’ a pole, producing an analytic continuation outside the radius of the initial Taylor series.

Complex Taylor series diverge for the same reasons that real ones do, but the choices of radius make a lot more sense in complex analysis than they do in real analysis: they are the distance to the closest singularity (for instance, \(\frac{1}{1 + x^2}\) around \(x=0\) has radius of convergence \(r=1\) since there are poles at \(\pm i\)).

The simpelst way to show that a series converges is to show that the series still converges if \(z\) is replaced with \(r = \|z\|\), since

\[f(z) = a_0 + a_1 z + a_2 z^2 + \ldots \leq f(r) = a_0 + a_1 r + a_2 r^2 + \ldots\]

After all, the phases of the \(z\) terms can only serve to reduce the sums of the magnitudes.

We know that geometric series \(1 + x + x^2 + \ldots\) converge only if \(x < 1\). This means that \(\sum a_n r^n\) definitely converges if the terms look like \(\sqrt[n]{\| a_n r^n \|} = \sqrt[n]{\| a_n \| } r \lt 1\), which gives the root test for convergence:

\[R = \frac{1}{\lim_{n \ra \infty} \sup \sqrt[n]{\| a_n \| }} > 0\]

If \(R = 0\) the series still might converge (depending on what the phases of \(a_n\) do!); if \(r > R\) it definitely doesn’t. If \(R = \infty\) then the series converges for all finite \(\|z\|\) and is called an ‘entire’ function, which is a weird name.

The root test is the most powerful of the simple convergence tests, because it hits exactly on the property that \(\sum \| a_n \| r^n\) converges if it’s less than a geometric sum \(\sum x^n\). Other tests ‘undershoot’ this property; for instance the ratio test says that

\[\| \frac{a_n r^n }{a_{n+1} r^{n+1}} \| = \| \frac{a_n}{a_{n+1}} \| \frac{1}{r} < \| \frac{x^n}{x^{n+1}} \| = 1\]

This captures the idea that the series does converge if its successive ratios are less than that of a geometric series, but fails if the terms look like \(x + x + x^2 + x^2 + x^3 + x^3 + \ldots\) or something.

7. Global Laurent Series

This is my own idea for making divergence of Laurent series more intuitive.

Laurent series coefficients are derivatives of the function evaluated at a particularly point, like \(f^{(n)}(z=0)\), such that a whole Laurent series is

\[f(z) = \ldots + f^{(-2)}(0) \frac{2! }{z^2} - f^{(-1)}(0) \frac{1!}{z} + f(0) + f^{(1)} z + f^{(2)}(0) \frac{z^2}{2!} + \ldots\]

Suppose that for some reason the Cauchy forms of computing derivatives and ‘inverse’ derivatives are the ‘correct’ way to compute these values:

\[\begin{aligned} f(0) &= \frac{1}{2\pi i} \oint_{C} \frac{f(z) dz}{z} \\ \frac{f^{(n)}(0)}{n!} &= \frac{1}{2\pi i} \oint_{C} \frac{f(z) dz}{z^{n+1}} \\ (-1)^n n! f^{(-n)}(0) &= \frac{1}{2\pi i}\oint_{C} z^{n-1} f(z) dz \\ \end{aligned}\]

Where \(C\) is a circle of radius \(R\) around \(z=0\). Then some handwaving leads to an alternate characterization of divergent series. For most calculations \(\p_z f(0)\) is independent of the choice of \(C\), but for a function with a pole away from the origin, they are not. Consider \(f(z) = \frac{1}{1-z}\), and let \(C\) be the positively oriented circle of fixed radius \(R\). Then:

\[\begin{aligned} f_R(0) &= \frac{1}{2\pi i}\oint_{C} \frac{1}{(z)(1-z)} dz \\ &= \frac{1}{2\pi i}\oint_{C} \frac{1}{z} + \frac{1}{1-z} dz \\ &=\text{Res}_C (z=0, \frac{1}{z} - \frac{1}{z-1}) + \text{Res}_C (z=1, \frac{1}{z} - \frac{1}{z-1}) \\ &= 1 - H(R-1) \\ \end{aligned}\]

Where \(H\) is a step function \(H(x) = 1_{x > 0}\). The value of \(f(0)\) changes depending on the radius we ‘measure’ it at. The derivative and integral terms show the same effect, after computing some partial fractions:

\[\begin{aligned} f_R'(0) &= \frac{1}{2\pi i}\oint_{C} \frac{1}{(z^2)(1-z)} dz \\ &= \frac{1}{2\pi i}\oint_{C} \frac{1}{z} + \frac{1}{z^2} - \frac{1}{z-1} dz \\ &= 1 - H(R-1) \\ f^{(-1)}_R(0) &= \frac{1}{2\pi i}\oint_{C}\frac{- 1}{z-1} dz \\ &=-H(R-1) \end{aligned}\]

In total we get, using \(H(x) = 1 - H(-x)\):

\[f^{(n)}_R(0) = \begin{cases} H(1-R) & n \geq 0 \\ - H(R-1) & n < 0 \end{cases}\]

Which gives the ‘real’ Laurent series as:

\[\frac{1}{1-z} = - (\; \ldots + z^{-2} + z^{-1}) H(\|z\| - 1) + (1 + z + z^2 + \ldots) H(1 - \|z\|)\]

The usual entirely-local calculations of \(f'(z)\), etc miss the ‘global’ property: that the derivative calculations fail to be valid beyond \(R=1\), and a whole different set of terms become non-zero, which correspond to expansion around \(z=\infty\).

Which if you ask me is very elegant, and very clearly shows why the radius of convergence of the conventional expansion around \(z=0\) is the distance to the closest pole. Of course it is a bit circular, because to get this we had to choose to use circles \(C\) to measure derivatives, but that’s ok.

Anyway, in summary, please use \(\bb{R}^2\) instead of \(\bb{C}\) if you can. Thanks.