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

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
-- 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}]