Unexpected behavior of Plot3D
- To: mathgroup at smc.vnet.net
- Subject: [mg116505] Unexpected behavior of Plot3D
- From: Alexey <lehin.p at gmail.com>
- Date: Thu, 17 Feb 2011 05:19:50 -0500 (EST)
Hello,
According to the documentation for Plot3D, combination of options
PlotPoints -> 25 and MaxRecursion -> 0 should result in computing a
rectangular grid of values of the function with dimensions 25x25. In
some cases it seems to be true:
In[1]:=
Reap[Plot3D[Sin[x y], {x, 0, Pi}, {y, 0, Pi}, PlotPoints -> 25,
MaxRecursion -> 0,
EvaluationMonitor :> Sow[{x, y}]]][[2, 1]] // Length
Out[1]= 625
But if we call the same function through a definition, say f[x_, y_] =
Sin[x y], we get unexpected and enormous increasing of the number of
evaluations of the function:
In[1]:= f[x_, y_] = Sin[x y];
pts = Reap[
Plot3D[f[x, y], {x, 0, Pi}, {y, 0, Pi}, PlotPoints -> 25,
MaxRecursion -> 0, EvaluationMonitor :> Sow[{x, y}]]][[2, 1]];
pts // Length
ListPlot[pts]
Union[pts, SameTest -> (Abs[Norm[#1 - #2]] < 10^-7 &)] // Length
Out[3]= 2500
Out[4]= - Graphics -
Out[5]= 625
As you can see the most of the points differ from each other with norm
< 10^-7. These points are so close that cannot be discerned by eye
from each other and obviously do not improve the plot.
So I'm wondering what is the reason for such behavior? Is there a way
to switch it off?