Re: Extracting functions from Solve
- To: mathgroup at smc.vnet.net
- Subject: [mg7057] Re: Extracting functions from Solve
- From: Dick Zacher <dick at loc3.tandem.com>
- Date: Sat, 3 May 1997 22:04:49 -0400 (EDT)
- Organization: Tandem Computers
- Sender: owner-wri-mathgroup at wolfram.com
mark christopher haase wrote:
>
> How may I extract and define as functions the solutions derived from
> Solve?
>
> E.g., Solve[x^2+y^2==1,y], I would like to define two functions f1 and
> f2 that are the solutions to this.
>
You could do it this way:
(* Solve the equations *)
In[1]:=
solution = Solve[x^2 + y^2 == 1, y]
Out[1]=
{{y -> -Sqrt[1 - x^2]}, {y -> Sqrt[1 - x^2]}}
(* Define functions based on the two solutions *)
In[2]:=
f1 = Function[ x, Evaluate[ y /. solution[[1]] ] ]
Out[2]=
Function[x, -Sqrt[1 - x^2]]
In[3]:=
f2 = Function[ x, Evaluate[ y /. solution[[2]] ] ]
Out[3]=
Function[x, Sqrt[1 - x^2]]
(* Now test the functions *)
In[4]:=
f1[z]
Out[4]=
-Sqrt[1 - z^2]
In[5]:=
f2[z]
Out[5]=
Sqrt[1 - z^2]
Or, if you were feeling playful, or were expecting to have to do this
repeatedly, you could define a function to make the functions for you.
An example:
In[6]:=
makeAFunction[soln_,yy_,xx_,fun_]:=
(fun=Map[Function[xx, Evaluate[yy /.#]]&,soln])
In[7]:=
SetAttributes[makeAFunction,HoldRest]
In[8]:=
makeAFunction[solution,y,x,g]
Out[8]=
{Function[x, -Sqrt[1 - x^2]], Function[x, Sqrt[1 - x^2]]}
In[9]:=
g[[1]][z]
Out[9]=
-Sqrt[1 - z^2]
In[10]:=
g[[2]][z]
Out[10]=
Sqrt[1 - z^2]
--
-----------------------------
Dick Zacher
Performance Engineering Dept., Tandem Computers
zacher_dick at tandem.com phone: 408-285-5746 fax: 408-285-7079