Evaluate, /., {{...}}, etc.
- To: mathgroup at smc.vnet.net
- Subject: [mg70719] Evaluate, /., {{...}}, etc.
- From: misha <iamisha1 at comcast.net>
- Date: Tue, 24 Oct 2006 02:24:31 -0400 (EDT)
I'm having trouble figuring out how either Evaluate works or /. works
(with the logical understanding of "or"), as well as the asymmetric
appearance of curly brackets {} in what appears to me to be analogous
conditions.
In the example below, I expect r1[x1_]:=Evaluate[x1/.solution1] to
produce a function r1 as a function of x1 from the equation provided by
solution1. Similar for r2. I notice that solution1 is {{x1 -> 5 -
x2/2}}, whereas solution2 is {x1 -> 10 - 2*x2}. Why "->" instead of "="
or "=="? Why two curly brackets in the first case {{...}} and only one
in the second case {...}?
More important,
r1 produces what I expect,
In[...]:= ?r1
Global`r1
r1[x2_]:={5 - x2/2}
while r2 does not.
In[...]:=?r2
Global'r2
r2[x1_]:=x2
I would expect the following
r2[x1_]:=10-2*x2
(i.e., since this problem is symmetric, firm 1's "reaction function"
(r1) should be symmetric w.r.t. firm 2's "reaction function" (r2).
Again, why curly brackets in one case, but not in the other?
Here is the full example (from
http://library.wolfram.com/infocenter/MathSource/551/):
p1[x1_,x2_] := 10 - b1 x1 - c x2
p2[x1_,x2_] := 10 - b2 x2 - c x1
profit1[x1_,x2_] := Evaluate[p1[x1,x2]*x1]
profit2[x1_,x2_] := Evaluate[p2[x1,x2]*x2]
solution1=Solve[D[profit1[x1,x2],x1]==0,x1][[1]]
solution2=Solve[D[profit2[x1,x2],x2]==0,x2][[1]]
r1[x2_] := Evaluate[x1/.solution1]
r2[x1_] := Evaluate[x2/.solution2]
c=b1
b1=b2=c=1
isoprofitLines=ContourPlot[profit1[x1,x2],{x1,0,7},{x2,0,7},ContourShading->False]
reactionCurves=ParametricPlot[{{r1[t],t},{t,r2[t]}},{t,0,7}]
Show[isoprofitLines,reactionCurves]