RE: problems with ContourPlot
- To: mathgroup at smc.vnet.net
- Subject: [mg33630] RE: [mg33616] problems with ContourPlot
- From: "Curt Fischer" <cfisher at bio.titech.ac.jp>
- Date: Thu, 4 Apr 2002 19:39:46 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
-----Original Message----- From: Harald von der Osten-Woldenburg [mailto:hvdosten at lb.netic.de] To: mathgroup at smc.vnet.net Subject: [mg33630] [mg33616] problems with ContourPlot Hi out there, if I try this: a := 0.5; b := 0.5; c := 0.5; y := 0.0; ContourPlot[(x*(x - a) + y*y + z*z)/ (Sqrt[(x*x + y*y + z*z) ** 3]* Sqrt[((x - a) ** 2 + y*y + z*z) ** 3]) - ((x - a)*(x - a - b -c) + y*y + z*z)/ (Sqrt[((x - a) ** 2 + y*y + z*z) ** 3]* Sqrt[((x - a - b - c) ** 2 + y*y + z*z) ** 3]) - (x*(x - a -b) + y*y + z*z)/ (Sqrt[(x*x + y*y + z*z) ** 3]* Sqrt[((x - a - b) ** 2 + y*y + z*z) ** 3]) + ((x - a - b)*(x - a - b - c) + y*y + z*z)/(Sqrt[((x - a - b) ** 2 + y*y + z*z) ** 3]* Sqrt[((x - a - b - c) ** 2 + y*y + z*z) ** 3]), {x, -1, 1}, {z, 0, 1}, Contours -> {0, 1, 5, 10, 50, 100}, ContourShading -> False] I receive the error-messages: [ ...Expression... ] is not a machine-size real number at {x, z} = {-1.,0.} ContourGraphics::"ctpnt": "The contour is attempting to traverse a cell in which some of the points have not evaluated to numbers, and it will be dropped." General::"stop": "Further output of (ContourGraphics :: "ctpnt") will be suppressed during this calculation." Because I compiled this also with Fortran I know that there are also results in the range up to 10^6. Is this too much for ContourPlot? Or did I some crazy things.... ?? At (-1,0.) I cannot find any singularity... Thank you very much for any small hint. Harry ------------ Dear Harry, Your problem is that Mathematica uses the ** operator for noncommutative multiplication. Thus Mathematica cannot numerically evaluate your formulae. If you meant ** to represent exponentiation, the character ^ is used instead. The following code had no errors and output a graph on my machine: ClearAll[a,b,c,y]; a := 0.5; b := 0.5; c := 0.5; y := 0.0; ContourPlot[(x*(x - a) + y*y + z*z)/ (Sqrt[(x*x + y*y + z*z)^3]* Sqrt[((x - a) ^2 + y*y + z*z)^3]) - ((x - a)*(x - a - b-c) + y*y + z*z)/ (Sqrt[((x - a)^2 + y*y + z*z)^3]* Sqrt[((x - a - b - c)^2 + y*y + z*z)^3]) - (x*(x - a -b)+ y*y + z*z)/ (Sqrt[(x*x + y*y + z*z)^3]* Sqrt[((x - a - b)^2 + y*y + z*z)^3]) + ((x - a - b)* (x - a - b - c) + y*y +z*z)/ (Sqrt[((x - a - b)^2 + y*y + z*z)^3]* Sqrt[((x - a - b - c) ^ 2 + y*y + z*z)^3]), {x, -1, 1}, {z, 0, 1}, Contours -> {0, 1, 5, 10, 50, 100}, ContourShading -> False] Also, unless you are doing it for a specific reason, it is generally better to assign simple constants using the "immediate assignment" operator = rather than := which is the delayed evaluation assignment operator. For your example here, though, it didn't matter one way or the other. Curt Fischer Tokyo Institute of Technology Dept. of Bioengineering