Re: How to get plot Exclusions for a numerical function?
- To: mathgroup at smc.vnet.net
- Subject: [mg102573] Re: [mg102547] How to get plot Exclusions for a numerical function?
- From: "David Park" <djmpark at comcast.net>
- 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 line". 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 version. http://blackbook.mcs.st-and.ac.uk/~Peter/djmpark/html/ 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 comcast.net http://home.comcast.net/~djmpark/ From: asdf qwerty [mailto:bradc355113 at yahoo.com] 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?