RE: Problem with transformation rules in Plot

*To*: mathgroup at smc.vnet.net*Subject*: [mg48521] RE: [mg48498] Problem with transformation rules in Plot*From*: "David Park" <djmp at earthlink.net>*Date*: Fri, 4 Jun 2004 04:49:39 -0400 (EDT)*Sender*: owner-wri-mathgroup at wolfram.com

Alain, The problem occurs because Plot has the Attribute HoldFirst. But I am not certain of the exact sequence of internal evaluations that causes the problem. In any case, you can easily circumvent the problem by evaluating the first argument. Plot[{f[x], g[x]} /. {a -> 1} // Evaluate, {x, 0, 1}] David Park djmp at earthlink.net http://home.earthlink.net/~djmp/ From: Alain Cochard [mailto:alain at geophysik.uni-muenchen.de] To: mathgroup at smc.vnet.net Hello. I would be grateful if someone could explain to me the following behavior (i.e., is it normal? why?), or point me to a relevant part of a manual: Mathematica 4.0 for Linux Copyright 1988-1999 Wolfram Research, Inc. -- Motif graphics initialized -- In[1]:= f[x_]:=a x ; g[x_]:=2 a x ; In[2]:= Plot[ f[x]/.{a->1} , {x,0,1}] (* Fine *) Out[2]= -Graphics- In[3]:= {f[x],g[x]}/.{a->1} Out[3]= {x, 2 x} (* Fine, just checking *) In[4]:= Plot[{f[x],g[x]}/.{a->1} , {x,0,1}] Plot::plnr: {f[x], g[x]} /. {a -> 1} is not a machine-size real number at x = -8 4.16667 10 . Plot::plnr: {f[x], g[x]} /. {a -> 1} is not a machine-size real number at x = 0.040567. Plot::plnr: {f[x], g[x]} /. {a -> 1} is not a machine-size real number at x = 0.0848088. General::stop: Further output of Plot::plnr will be suppressed during this calculation. Out[4]= -Graphics- (* So the question is: why does it work for f[x] alone, and not for f[x] and g[x]? *) (* The following works fine, but is there a better workaround? *) In[5]:= data={a->1} ; Plot[{ f[x]/.data , g[x]/.data }, {x,0,1}] Many thanks in advance, Alain Cochard