MathGroup Archive 2010

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: How to deal with this message?

  • To: mathgroup at
  • Subject: [mg112653] Re: How to deal with this message?
  • From: "David Park" <djmpark at>
  • Date: Fri, 24 Sep 2010 04:12:04 -0400 (EDT)

There is a way to smoothly handle branch cuts in analytic complex functions.
Riemann figured it out and of course it's now called a Riemann surface. On
the Riemann surface for a multivalued function, the function becomes
single-valued and continuous. As you move around the Riemann surface you can
continuously recover all the original multivalues. They just occur at
different places on the surface. Branch points are real, but branch lines
are artifacts and disappear on a Riemann surface.

So, can one represent this graphically with Mathematica? Yes, with the right
kind of dynamic graphic. We can try to plot a Riemann surface, say by
separately plotting the modulus and argument surfaces for the function.
However, one or both of these will have artifacts. A surface may cross
itself, or there may be a jump from one "edge" of a surface to another
"edge". (For example, plotting the real and imaginary surfaces for Sqrt[z]
you get two surfaces that each cross themselves, but they don't cross along
the same line so the Riemann surfaces doesn't actually cross itself.) Still,
such plots can be useful for visualizing the function, maybe as an adjunct
to the method I describe next.

Another method for the graphical representation of a complex function is a
vector plot. For each point in the complex plane attach a vector that
represents the complex value of the function. In principle, this is a method
of representing the four dimensions required for a complex function plot
because we have two dimensions in the plane and two dimensions in the
vectors. But if we tried a dense set of points the vectors would interfere
with each other so this is not practical. A more practical method is to use
a single point but drag it around to explore the complex function.

If you do this with regular Mathematica, say with the Sqrt[z], then the
vector will jump as the dragged point crosses the branch line. This is
because Mathematica doesn't know how to move on Riemann surfaces.
Presentations does have routines, Multivalues and CalculateMultivalues, that
do know how to follow a path on a Riemann surface. CalculateMultivalues
keeps track of the previous evaluation and uses a linear programming
assignment problem algorithm to associate the new values with the old
values. We only have to follow one of the values because the Riemann surface
eventually recovers all of them. With this, the function value (the vector)
varies smoothly as the point is moved around. There is no branch line or

For example, with Sqrt[z] you can drag the point around the origin, but you
will have to drag it around twice to get back to the original value. Drag it
around only once and the vector will point in the opposite direction. We are
moving on the Riemann surface without any artifacts but we can't actually
see the surface. We can only "see" it by its effects.

A more interesting function is 

f[z_] := Sqrt[z - 1] Power[z - I, (3)^-1] 

This function is portrayed in a paper Murray Eisenberg and I did,
"Visualizing Complex Functions with the Presentations Application" in The
Mathematica Journal. 

The function has branch points at 1 and I. The point must be dragged twice
around the branch point at 1 to recover its original value, and three times
around the branch point at I to recover the original value. If we look at
the close-in argument surface at 1 we will see three interleaved helical
surfaces. Circling the point 1 we will be on one of these surfaces. But the
three surfaces are all smoothly connected regions of the larger Riemann
surface, so if we take a detour around the point at I and then return to
circling 1 we will see that we are on another part of the Riemann surface
that gives different values, but repeats with two circuits. And if we take
another detour around the point I then we will be on the third part of the
surface, which again has different values but repeats with two circles.
Taking a fourth detour around I (always in the same direction) we will be
back to the original part of the Riemann surface. A similar picture emerges
from circling the branch point at I and taking detours around 1.

So it is possible to travel on a smooth path on function's Riemann surface
and obtain a smooth single valued function with no branch lines or other
artifacts. And many of these surfaces are beautiful and fun to explore in
this manner.

David Park
djmpark at  

From: Bill Rowe [mailto:readnews at] 

On 9/22/10 at 1:56 AM, olfa.mraihi at (olfa) wrote:

>Could someone help me to understand in simple terms this message
>(especially branch cuts and dependency on them) and how to find
>solution to avoid this message.

A function with a branch cut is one that exhibits a
discontinuity. For example, the square root function exhibits
such a discontinuity when fed complex values. That is

In[1]:= {Sqrt[-1 + 0.01 I], Sqrt[-1 - 0.01 I]}

Out[1]= {0.00499994 + 1.00001 I, 0.00499994 - 1.00001 I}

Many mathematical functions exhibit similar behavior for some
points in the complex plane.

As for avoiding problems with branch cuts, I've no way to
provide meaningful suggestions until you provided details of
what it is you are trying to do when you got the error message.

  • Prev by Date: Re: Calendar Recipe?
  • Next by Date: Re: Interpolate in polar coordinates or cartesian but on non-uniform grid
  • Previous by thread: Re: How to deal with this message?
  • Next by thread: Re: How to localize a symbol when using Manipulate?