Tim Large suggested to me a new idea of how to render meromorphic functions on the complex plane. Basically, we draw the surface of the Earth on the Riemann sphere (the codomain of the function), and colour each point on the complex plane according to the image of that point under the function.

Excited by this prospect, I set to work programming it. The simplest function is the identity function, which gives the following complex plot (apologies for the blurry polar regions; I used a relatively low-resolution image):

Zeros of functions are rendered as copies of Antarctica. For example, the function f(z) = (z/2)^7 − 1 has seven roots, and thus seven Antarcticas, positioned at the vertices of a regular heptagon of circumradius 2.

It has seven-fold symmetry about the origin since it is a polynomial function of z^7. Similarly, the function f(z) = z^3 has three-fold symmetry, as we can see below:

Note that the Antarctica in the centre of this plot has three protrusions, rather than just one, due to it being a triple root. This allows one to very easily observe the multiplicity of a root in such a visualisation of the complex plane. For instance, the polynomial f(z) = (z/2 − 1)^2(z/2 + 1)^3 is shown below:

### Functions other than polynomials

So far, all of our functions have been polynomials. Other functions, such as sine and cosine, are more interesting due to the infinity of roots:

There are visible copies of Antarctica at −π, 0 and π. The cosine function is the same, but shifted slightly. The two-fold rotational symmetry means that it is an even function:

We can have more bizarre functions, such as the Gamma function, which have many poles (points mapped to infinity).

The *Weierstrass elliptic function* has a regular lattice of poles, together with two interleaved lattices of zeros. These appear as Arctic tundras and Antarcticas, respectively.

Unfortunately, the poles are rendered poorly due to the texture functionality in Mathematica (it doesn’t realise that the map should be treated as a sphere). I could rectify the situation by using the Image command instead of the RegionPlot, but this would require the use of compiled functions which are not supported on the Wolfram Demonstrations Project.

### Non-meromorphic functions

Note that all of the things we’ve seen so far are *conformal maps*, which preserve angles and orientations. This is a property of all meromorphic complex functions, and means that shapes aren’t locally distorted. If we choose a function which is analytic in the *conjugate* of z, such as inversion in the circle of radius 2 (f(z) = 4/z*), then the orientations are reversed:

We can tell that this is an anticonformal map, since the British Isles (and everything else!) have been reflected. Worse still are maps which are neither conformal nor anticonformal, since you get weird distortion effects. For example, the absolute value function just has the positive real line as its image, and circles around the origin are mapped to the same value. This creates a ‘target’, where the outermost green band is the intersection of England with the Greenwich Meridian, revolved into an annulus:

Similarly, Re(z) creates vertical lines, and Im(z) creates horizontal lines.

i think the caption for “A complex polynomial with a double root at 1 and a triple root at -1” is wrong. Both the image and the equation suggest that the roots are actually at 2 and -2.

Oh, yes, you’re right of course. I’ll amend it now.

This gives new meaning to the phrase “pole of a meromorphic function”!

Indeed!

These maps also show critical points as centers of local rotational symmetry: 2-fold for a zero of the derivative of degree 1, 3-fold for degree 2, and so forth. There’s a (simple) critical point between the two roots of the degree-5 polynomial, for example.

Oh, wow, that’s an interesting observation. So, for a polynomial (z-a)(z-b)(z-c) = 0, where a, b and c are complex numbers corresponding to vertices of a non-equilateral triangle, you’ll get centres of local 2-fold rotational symmetry positioned at the foci of the Steiner inellipse.

This changed my life.

Thank you. These pictures offer amazing insights into the orders of zeros and poles, the local mapping, single and double periodicity, invariance under rotation, and the spherical nature of meromorphic maps.

I want to see how these pictures would look on the sphere, and I am curious to see the Riemann zeta function.

Would you be willing to share the code?

Sure. Do you have Wolfram Mathematica? (I can always render the Riemann zeta function myself, if you want.)

This is great. I do have access to Mathematica.

Excellent. I’ve e-mailed you the notebook containing code for a planar rendering of the zeta function and a spherical rendering of a rational function (using the texture commands in Mathematica 8).

Theoretically, this approach could be adapted to texture other Riemann surfaces, but I’ve only experimented with the plane and sphere so far.