MathGroup Archive 2002

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Using rules from Solve


"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






  • Prev by Date: Re: [Q]: huge number, ciphers after decimal point?
  • Next by Date: Re: Optional
  • Previous by thread: Using rules from Solve
  • Next by thread: RE: Using rules from Solve