$$ \newcommand{\bint}{\displaystyle{\int\hspace{10.4pt}\Large\mathit{8}}} $$
Mapping a double cover of the complex plane to a torus
Note: A Mathematica notebook of this topic in the form of a slideshow was presented at the 2017 Wolfram Tech conference and is available for download. The slide show includes an animation of bending the doublecover into a torus. Please note the file is over 350Mb due to the large amount of graphics and will take a bit to load. Once loaded into Mathematica, again, the slide show will take about a minute to set up before being available to run. Attempting to run the show before this time will result in a "Mathematica not responding" message. Give it time and the message will go away. Link to slide show here: Mapping a double cover to a torus
In this section we describe how to map a double cover of the complex plane onto a genus 1 Riemann surface, a torus. We will use the following.
In the first plot at the left, we have a small section of the real part of the function $\displaystyle g(z)=\frac{A}{\sqrt{(1z^2)(k^2z^2)}}$ which is analytic and doublevalued for all values of $z$ except at the branch points. We will use the first plot as the icon of the double cover as we map two copies of the complex plane to the torus and remember $g(z)$ is actually made up of a real and imaginary part extending in all directions over the complex plane out to infinity. Next, we use a set of SchwarzChristoffel transformations to map the covers to the rectangular region in the $\zeta$ plane shown in the center plot which we call the $\zeta$cover. We then continuously contort the $\zeta$cover into the torus show in the third plot. The covers are colorcoded for each halfplane. For example, the blue surface of $g(z)$ in the first plot is mapped to the blue rectangle in the $\zeta$cover, and then this rectangle is mapped to the blue quartersection of the torus in the third plot.
Mapping of the double cover to the $\zeta$plane is done with the SchwarzChristoffel transformation and it is this transformation we need to study next.

SchwarzChristoffel Transformation
Suppose that P is a polygon with vertices $w_1,\cdots,w_k$ in the anticlockwise direction,with corresponding right turns of angles $\theta_1\pi,\cdots,\theta_k \pi$ respectively, where $−1 < \theta_1, \cdots, \theta_k< 1$. Then there exists a function of the form $$ \zeta(z)=A \int_0^z (wx_1)^{\theta_1}\cdots (wx_k)^{\theta_k} dw+B $$ where $A,B\in \mathbb{C}$ that maps the upper half plane H onetoone and conformally onto the interior of P,with $\zeta(x_1) = w_1, \cdots, \zeta(x_k) = w_k$.
And in our particular application, we wish to map the upper half plane to the rectangle
with $$p=\int_0^{\pi} \frac{1}{2+\cos(t)}dt. $$
And starting at the point $\pi/2+ip$ and going counterclockwise we make left turns of $\pi/2$, we then have $\theta_i=\pi/2$ and we can choose $x_1=1, x_2=1, x_3=k, x_4=k$ with $k$ real and $k>1$. We then have $$ \zeta(z)=A\int_0^z \frac{1}{\sqrt{(1w^2)(k^2w^2)}}dw+B. $$
The constant B is a translation so for now, we set it to zero and then later move the polygon as needed by adjusting B. Our objective now is to find constants A and k, such that f(z) maps the upper halfplane to the rectangle described above. These can be determined by considering the four simultaneous integral equations: $$\begin{align} A\int_0^{k} \frac{dt}{\sqrt{(1t^2)(k^2t^2)}}&=\pi/2+ip \\ A\int_0^{1} \frac{dt}{\sqrt{(1t^2)(k^2t^2)}}&=\pi/2\\ A\int_0^{1} \frac{dt}{\sqrt{(1t^2)(k^2t^2)}}&=\pi/2 \\ A\int_0^{k} \frac{dt}{\sqrt{(1t^2)(k^2t^2)}}&=\pi/2+ip \end{align} $$
Looking at (3) we have immediately, $$\begin{equation} \displaystyle A=\frac{\pi}{2 \int_0^1 \frac{dt}{\sqrt{(1t^2)(k^2t^2)}}}. \end{equation} $$ And if we subtract (3) from (4) we obtain $\displaystyle A\int_1^{k} \frac{dt}{\sqrt{(1t^2)(k^2t^2)}}=ip$. Using this expression and (3) we can write: $$ \frac{1}{p}\int_1^k \frac{dt}{\sqrt{(t^21)(k^2t^2)}}=\frac{2}{\pi} \int_0^1 \frac{dt}{\sqrt{(1t^2)(k^2t^2)}} $$ and numerically solve for $k$ and then using (5), solve for A. Keep in mind the integrals are improper (and convergent) and we need to integrate over an analyticallycontinuous path between the singular points. Usually, this is over the principal branch.
The following Mathematica code computes these values:
rhoMax = NIntegrate[1/(2 + Cos[a]), {a, 0, \[Pi]}]; myf1[a_?NumericQ] := NIntegrate[1/rhoMax 1/Sqrt[(t^2  1) (a^2  t^2)], {t, 1, a}] myf2[a_?NumericQ] := NIntegrate[2/\[Pi] 1/Sqrt[(1  t^2) (a^2  t^2)], {t, 0, 1}] thek = a /. FindRoot[myf1[a]  myf2[a] == 0, {a, 2}] bigA = 1/myf2[thek]
From which we find $A\approx 1.53126$ and $k\approx 1.6984$
We want to take a closer look at the real part of $g(z)$ shown in the first plot. We can do this using the 3Drendering program AFRENDER in the menu. After selecting the program, readers should first review the short help function, then from the function list, choose the function $2.34476w^2(1z^2)(2.88435z^2)$.
Readers will note two versions of the function. One has an "H" in front of the name. This signifies "holomorphic" branches. Selecting this version of the function gives the user the option of selecting branches from each halfplane of the function to construct a holomorphic branch. The halfplanes are given as four "rings" to choose from: two rings for the upper plane and two for the lower. In order to see one version of a holomorphic branch, choose the following ring and branch configuration from the ring menu:
Holomorphic branch selections Ring Ring Branches 1 0,0,1 2 1,1,0 3 0,1,1 4 1,0,0 
Integrating over a halfplane
Although Mathematica has builtin functions to compute a SchwarzChristoffef integral in terms of EllipticF, we obtain a more complete understanding of integrating over multivalued functions if we design our own algorithm to compute this integral. We already have the technique to do so from earlier sections of this site: we form the associated differential equation, solve it via NDSolve, then integrate the solution over the desired path. And having the ability to plot the solution path over the real or imaginary surface of a cover, gives us an intuitive confidence that we are integrating over the correct surface of this multivalued function. Readers are encouraged to review the section on plotting algebraic functions for a review of this method.
The following Mathematica code computes the value of the integral for z=1+i over the blue upper halfplane:
(* express function in it's algebraic form *) theA = 1.5312624348967; theK = 1.6983963730242; theFunction = theA^2  (1  z^2) (theK^2  z^2) w^2; (* integrate to 1+1 i over the blue covering (the principalvalued \ root *) thez[t_] := t + t I; tend = 1; (* the choice of \[Sqrt](k^2) will determine which cover to integrate \ over *) theroots = w /. NSolve[theFunction == 0 /. z > thez[0]]; wstart = theroots[[2]]; wDeriv = w'[ t] == (((D[theFunction, z]/D[theFunction, w]) (D[thez[t], t])) /. {w > w[t], z > thez[t]}); myazsol = First[NDSolve[{wDeriv, w[0] == wstart}, w, {t, 0, tend}]]; myCentralTrace[t_] = Evaluate[Flatten[w[t] /. myazsol]]; blueTrace = ParametricPlot3D[{Re[z], Im[z], Re[myCentralTrace[t]]} /. z > t + t I, {t, 0, 1}, PlotStyle > Red] (* now integrate the solution over the path of integration *) n1 = NIntegrate[myCentralTrace[t] D[thez[t], t], {t, 0, tend}] zetaBluePoint = Graphics[{Blue, PointSize[0.015], Point[{Re[n1], Im[n1]}]}]; zetaBluePointTranslated = Graphics[{Blue, PointSize[0.015], Point[{Re[n1 + \[Pi]/2], Im[n1]}]}]; (* as a check of the computations, compare the results to EllipticF *) ellipticValue = N[theA/theK EllipticF[ArcSin[thez[tend]], 1/theK^2]]; Print["Value by integration: ", n1]; myk = NIntegrate[1/(2 + Cos[t]), {t, 0, \[Pi]}] Print["EllipticF value: ", ellipticValue];
We obtain $\zeta_b(1+i)=0.492972 + 0.970237i$

Plotting the integration results to the $\zeta$plane
We can then integrate over a grid of points for each halfplane cover, that is, over the red, blue, green and yellow covers. And then map the values of $\zeta(z)=\xi+\eta i$ in the $\zeta$plane with one addition: we need to translate the values by $\pm \pi/2$. This is illustrated in the next plot where we have also plotted the mapping of the ramified contour around the singular point z=1 and also the mappings for z=1+i over the red and blue sheets as the red and blue points in their corresponding red and blue sections of the plot. The red and blue points illustrate an important point of this mapping: for each value of z in the zplane, there are two distinct points in the $\zeta$plane. This is the beginning of resolving a doublevalued function into a single valued function of the points in the $\zeta$plane and then of the points $p$, over the torus.

Bending the $\zeta$cover into a torus
We now wish to map the $\zeta$cover into a torus. If we are given the equations of the torus in the xyzplane by $$ \begin{align*} x(\alpha,\phi)=[R+\rho \cos(\alpha)]\cos(\phi) \\ y(\alpha,\phi)=[R+\rho \cos(\alpha)]\sin(\phi) \\ z(\alpha,\phi)=\rho \sin(\alpha) \end{align*} $$ where R is the radius of the torus from its center to the center of the tube and $\rho$ is the radius of the tube, then the mapping from $\xi$ and $\eta$ in the $\zeta$ plane to $\alpha$ and $\phi$ is given by $$ \begin{align*} \xi &= \phi \\ \eta &= \int_ 0^{\alpha}\frac {\rho} {R + \rho \cos(t)}dt \end{align*} $$ so that as $\alpha$ and $\phi$ both vary from $\pi$ to $\pi$, $\xi$ varies from $\pi$ to $\pi$ and $\eta$ varies from $0$ to $p$ where $$ p=\int_ 0^{\pi}\frac {\rho} {R + \rho \cos(t)}dt $$
A plot of this mapping onto the torus can be viewed with AFRender. Choose 'Torus' and then drop down the ring table and check the contour box to illustrate the contours over the torus.

Characterizing contours over the torus
Now that we can map the double cover onto the torus, we wish to study how various contours in the $z$plane are mapped and to attempt to identify equivalent contours, that is contours homomorphic to one another. However, before we begin traversing through the function branch sheets, we should determine the monodromies or branch cycles around each singular point. This is relatively easily accomplished by forming the azmithual equation (see earlier sections) and following a circular path around a singular point. We then check the winding numbers for paths to return to their starting points within numerical accuracy. This is of course not a rigorous determination of monodromy and can lead to errors, but for relatively wellbehaved functions even of high degree, the method has proven to be very successful by comparing the subsequent numerical results to expected results such as with the Residue Theorem. The result of this analysis leads to a monodromy or branch table which gives a list of the singular points followed by the branch cycles. For a singlecycle we have the notation of $\{k\}$ which is a root number associated with the cycle. For a $2$cycle, we would obtain $\{k,j\}$ and so forth for the remaining cycles. When we do this, we obtain the following: $$ \left( \begin{array}{cccc} 1 & 1.0000000 & \begin{array}{cc} \{1,2\} \\ \end{array} & \\ 2 & 1.0000000 & \begin{array}{cc} \{1,2\} \\ \end{array} & \\ 3 & 1.6983964 & \begin{array}{cc} \{1,2\} \\ \end{array} & \\ 4 & 1.6983964 & \begin{array}{cc} \{1,2\} \\ \end{array} & \\ 5 & \infty & \begin{array}{c} \{\{1\},\{2\}\} \\ \end{array} & \\ \end{array} \right) $$ From the table, we see the function fullyramifies into $2$cycle branches at the four finite singular points. This means of course that a closed analyticallycontinuous path over the double cover, $g(z)$ around each of these points will have a winding number of $2$.
Now consider the contours in Figure 4. These contours can be seen over the torus with AFRender. Choose Torus from the function list, then open the controls and choose contours. The contour numbers in the dropdown list correspond to the numbers in Figure 4 and show how each of the contours in Figure 4 is mapped to the torus.

First Contour (shown as the pink contours in Figure 5 below)
In the first contour we let $z(t)=1+1/2 \cos(t)+i/2\sin(t)$ and construct the azimuthal equation: $$ \frac{dw}{dt}=\frac{\frac{\partial F}{\partial z}}{\frac{\partial F}{\partial w}}\frac{dz}{dt} $$ and numerically solve the IVP for some initial condition on the contour for $t$ ranging from $0$ to $4\pi$. This contour, wrapping around the point $z=1$ over the double cover is shown below.
The solution of the IVP results in a function $w(t)$ which represents the value of $g(z)$ over the contour. A careful study of the path of that solution shows that it trajects over the four halfplanes of the function in the order blue, yellow, red and green which is mostly visible in this plot:
The path of the solution $w(t)$ then necessitates using each of the four SchwarzChristoffel transforms to map the path to the $\zeta$cover: The results of those calculations are shown in following plot. Each contour over the colorcoded halfplane is mapped to the corresponding quartercircle in the $\zeta$cover: the path over the blue halfsheet is mapped to the quartercircle in the blue section of the $\zeta$cover. Likewise for the yellow, red and green paths.
Mapping each of these contours in the $\zeta$cover onto the torus yields a simple closed contour circling around $1$ on the torus as the blue,yellow, red and green contours shown in Figure 7 although the red and yellow contours are behind the plot. This contour is also depicted as the pink contour over the torus in AFRender: Choose Torus from the function dropdown menu, then open the controls and select Contours/Contour 1. We then can see one of the marvels of Riemann surfaces: a path in the $z$plane which wraps around a point multiple times is unraveled into a simple closed contour of winding number 1 over the torus. Note how the pink contour over the torus encloses the point labeled "1". The other singular points, 1, k,k and infinity are also labeled on the torus.
The (approximate) Puiseux expansion around this pole is $$w_2(z)\approx \frac{0.788734i}{\sqrt{z}}0.221343 i\sqrt{z}0.5177i z^{3/2}0.500565i z^{5/2}+\cdots$$
and from previous sections we know $$\bint w_2(z)dz=0$$

No comments:
Post a Comment