MathGroup Archive 2009

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

Search the Archive

Re: How to get plot Exclusions for a numerical function?

  • To: mathgroup at
  • Subject: [mg102573] Re: [mg102547] How to get plot Exclusions for a numerical function?
  • From: "David Park" <djmpark at>
  • Date: Fri, 14 Aug 2009 06:00:43 -0400 (EDT)
  • References: <25597173.1250148938813.JavaMail.root@n11>

I'm not certain of what your final objective is here and whether what I have
to say is relevant, but I will give it a try. This involves some
functionality I have in the Presentations package.

A common problem in working with complex functions in Mathematica occurs
when they have multiple values. Then Mathematica just picks one value out of
a set and there is no attempt to maintain continuity of the value. That is,
the value that is picked may suffer sudden jumps when you cross a "branch

But, according to Riemann, these branch lines are just artifacts and you can
represent such a function as a continuous single valued function on a
Riemann surface. The Presentations package, among many other things, has a
section devoted to complex functions and complex function graphics. There we
have routines Multivalues and CalculateMultivalues. These keep a memory of
the last calculated value and when calculating the new values uses a linear
programming assignment problem algorithm to permute the new solutions to
minimize the 'distance' from the old solutions. This does involve being able
to write down a set of multivalue solutions in terms of some parameter (such
as position on a path in the complex plane).

There are various ways to use this. For example, one way to explore a
complex function is to represent z as a locator point in the complex plane.
Then attach a vector to the point to represent the value of the complex
function at the point. You could also give the digital value as another part
of the display. Then, as you move the point around, i.e. continuously trace
a path on the Riemann surface, the vector will change its length and angle.
It will be continuous without any branch lines or jumps in values. For
example, for the Sqrt[z] you can start at some point and the vector will
point in some direction. If you circle the branch point at the origin and
return to the original point the vector will point in the opposite
direction. You are at a different part of the Riemann surface. You have to
circle the origin twice to get back to where you started. The Riemann
surface is there, but somewhat invisible, you just see its effects. You can
explore fairly complicated surfaces in this way. For example, the values you
get in circling one branch point will depend on whether you have circled
another branch point. 

This can also be used, in some cases at least, in numerically solving
differential equations. Peter Lindsay at St. Andrew's University maintains
Presentations archives and there one example of this is the "NDSolve With
Multivalues" example. There is a Mathematica notebook as well as a PDF

If there is an infinite set of multivalues then this technique surely breaks
down although it might be worthwhile to work with a finite subset. Also,
there would be a problem if you can't write Mathematica expressions for the
set of multivalues.

David Park
djmpark at  

From: asdf qwerty [mailto:bradc355113 at] 

I have a complex analytic function that I'm computing numerically, and
it has branch cuts along arbitrary curves that I can't know
beforehand. Does anyone have any ideas on how I can get Exclusions-
like functionality from Plot3D for this case?

With the allowed form "Exclusions -> {{lhs = rhs, ineqs}, ...}", I
can't think of an easy way to do it numerically... maybe something
like "Exclusions -> {{True, <something clever>}}"? Has anyone tackled
this problem before?

  • Prev by Date: Re: Imposing boundary condition at infinity
  • Next by Date: Re: Re: Lisp Macros in Mathematica (Re: If Scheme is so
  • Previous by thread: Re: How to get plot Exclusions for a numerical function?
  • Next by thread: Re: Imposing boundary condition at infinity