Re: Using rules from Solve
- To: mathgroup at smc.vnet.net
- Subject: [mg33698] Re: Using rules from Solve
- From: "Allan Hayes" <hay at haystack.demon.co.uk>
- Date: Mon, 8 Apr 2002 03:04:27 -0400 (EDT)
- References: <a8m2vj$oag$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
"postman" <post_12 at hotmail.com> wrote in message news:a8m2vj$oag$1 at smc.vnet.net... > Hey All: > I appreciate any help with the following. I have a working solution, > but don't understand why my first attempt failed. I'm using Solve to > generate solutions to a set of simultaneous equations (the mass action > equations in chemistry), then want to use the resulting solutions to > calculate numerical values for specific values of the parameters. > > KdEqn={Kd==R*L/RL, RT=RL+R} > > Solve[KdEqn,RL,{RF}] gives me a rule, > > {{RL->L*RT/(Kd+L)}} > > and Replace[RL,Flatten[Solve[KdEqn,RL,{RF}]]] gives an expression > > L*RT/(Kd+L) > > that looks like what I would type on the right hand side of a > function: > > Rl[L_] := L*RT/(Kd+L) > > The problem is that > > Rl[L_] := Replace[RL,Flatten[Solve[KdEqn,RP]{Rf}]] > > fails; Rl[1] does not substitute the value "1" for "L". However, > > Rl[L_] = Replace[RL,Flatten[Solve[KdEqn,RP]{Rf}]] > > works as I want. Why does the := construct fail here? > > Thanks for any help! > It seems that Rf should be R, but the crucial point is that with Rl[L_] := Replace[RL,Flatten[Solve[KdEqn,RP]{R}]] the rule is stored with the right side unevaluated, whereas with Rl[L_] = Replace[RL,Flatten[Solve[KdEqn,RP]{R}]] the right side is evaluated before the rule is stored. This is the main difference between SetDelayed (:=) and Set (=) -- Allan --------------------- Allan Hayes Mathematica Training and Consulting Leicester UK www.haystack.demon.co.uk hay at haystack.demon.co.uk Voice: +44 (0)116 271 4198 Fax: +44 (0)870 164 0565