FW: Re: Release questi
- To: mathgroup at smc.vnet.net
- Subject: [mg9496] FW: [mg9410] Re: [mg9366] Release questi
- From: Ersek_Ted%PAX1A at mr.nawcad.navy.mil
- Date: Sat, 8 Nov 1997 23:04:28 -0500
- Sender: owner-wri-mathgroup at wolfram.com
I intended to send this to the mathgroup yeasterday. I think I only sent it to Alan Hayes, and not the mathgroup. ---------------------------------------------- Alan Hayes wrote a very good duscussion of Plot evaluation. His message included: ---------------------------------------------- | |**** Why have this HoldAll feature? **** Here is an example in its |favour (from Cameron Smith & Nancy Blachman, The Mathematica Graphics |Guidebook) | |In[16]:= h[x_/;x<0]:= -1 |In[17]:= h[x_]:= 1 |In[18]:= Plot[h[x],{x,-1,1}]; |If we force h[x] to evaluate immediately then it becomes simply 1 |In[19]:= Plot[Evaluate[h[x]],{x,-1,1}]; | I would rather give Plot the HoldRest Attribute using the following commands: In[5]:= ClearAttributes[Plot, HoldAll]; SetAttributes[Plot, HoldRest]; Of course this will cause the plot above to come out wrong. But on the other hand all the troublesome examples Alan gave (listed below) work just fine without using Evaluate, Release or any other extra steps. As Alan pointed out they produce error messages and no useable graphics with the default Plot Attributes. In[6]:= f=x^3; g=-x^3; Plot[D[f,x],{x,0,1}] In[7]:= rl=a->2; Plot[{f,a g}/.rl,{x,0,1}] In[8]:= fg={f,g}; Plot[fg,{x,0,1}] One point Alan didn't mention is that the next command takes my computer 12.79 Seconds to evaluate when Plot has the HoldAll Attribute. When Plot has HoldRest instead it takes only 1.54 Seconds. In[9]:= fun=1/2+Sum[(-1)^n 2 Cos[(2 n+1)Pi t]/((2n+1)Pi),{n,0,20}]; Plot[fun, {t, -1, 3}]//Timing Note: If Plot has the HoldAll Attribute you can use Plot[ Evaluate[fun], {t, -1, 3}] to produce a plot in about 1.5 Seconds. Ted Ersek ersek_ted%pax1a at mr.nawcad.navy.mil