MathGroup Archive 2009

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

Search the Archive

Re: Bug in Plot3D?

  • To: mathgroup at
  • Subject: [mg105225] Re: Bug in Plot3D?
  • From: Bill Rowe <readnews at>
  • Date: Wed, 25 Nov 2009 02:30:33 -0500 (EST)

On 11/24/09 at 5:51 AM, wellsoberlin at (SixWingedSeraph) wrote:

>The two plot commands in the notebook below should give identical
>outputs, but they don't.  The notebook is posted at

>a := 9; b := 18;

There is no reason I can see to use SetDelayed here.

>ff[x_, y_, z_] := x + y + z

>gg[x_, y_, z_] := 2*x - 2*y - z

>f[x_, y_] := z /. Solve[ff[x, y, z] == a, z]

Given you are plotting this function, you definitely should be
using Set ("=") instead of SetDelayed (":="). By using
SetDelayed you are telling Mathematica to solve for z every time
Plot supplies a new set of x, y points. This causes Mathematica
to do more work than necessary to create the plot.

>f[x, y]

>g[x_, y_] := z /. Solve[gg[x, y, z] == b, z]

>g[x, y]

>Plot3D[{-x - y + 9, 2*(x - y - 9)}, {x, 6, 10}, {y, -5, 1}...

>Plot3D[{f[x, y], g[x, y]}, {x, 6, 10}, {y, -5, 1}...

You are not plotting the same thing in both cases. That is:

In[14]:= {f[x, y], g[x, y]}

Out[14]= {{-x - y + 9}, {2 (x - y - 9)}}

which is not the same as

{-x - y + 9, 2 (x - y - 9)}

You can make things the same by redefining ff and gg to take the
first solution returned by Solve or by taking the first solution
when plotting

  • Prev by Date: Re: how to read in a number in hex and convert it to binary
  • Next by Date: Re: simple question
  • Previous by thread: Re: Bug in Plot3D?
  • Next by thread: Mathematica and LabelME