[Date Index]
[Thread Index]
[Author Index]
Re: Simple question
*To*: mathgroup at smc.vnet.net
*Subject*: [mg28540] Re: Simple question
*From*: "Allan Hayes" <hay at haystack.demon.co.uk>
*Date*: Wed, 25 Apr 2001 19:21:48 -0400 (EDT)
*References*: <9c5nhm$itb@smc.vnet.net>
*Sender*: owner-wri-mathgroup at wolfram.com
Urijah:
First, the use of rules
soln=Solve[{x^2+y^2\[Equal]4, x+y\[Equal]0},{x,y}]
{{x -> -Sqrt[2], y -> Sqrt[2]}, {x -> Sqrt[2], y -> -Sqrt[2]}}
This gives the two solutions for the pair x and y --- that's why we need a
list of lists.
The replacement rule form lets us put the solutions into expressions
x+y^2/.soln
{2 - Sqrt[2], 2 + Sqrt[2]}
The first number comes from the first solution, the second one from the
second solution.
If we want to use only the first solution we can get its list of rules out:
firstsoln = soln[[1]]
{x -> -Sqrt[2], y -> Sqrt[2]}
x+y^2/.firstsoln
2 - Sqrt[2]
Now for the interpolation functonsThe following example, taken from the
HelpBrowser entry for NDSolve, finds the functions x, and y that satisfy the
equations.
Let's take some points on the sine curve:
data = Table[{t, Sin[t]},{t,0.,6, .2}]
{{0., 0.}, {0.2, 0.198669}, {0.4, 0.389418}, {0.6, 0.564642}, {0.8,
0.717356},
{1., 0.841471}, {1.2, 0.932039}, {1.4, 0.98545}, {1.6, 0.999574},
{1.8, 0.973848}, {2., 0.909297}, {2.2, 0.808496}, {2.4, 0.675463},
{2.6, 0.515501}, {2.8, 0.334988}, {3., 0.14112}, {3.2, -0.0583741},
{3.4, -0.255541}, {3.6, -0.44252}, {3.8, -0.611858}, {4., -0.756802},
{4.2, -0.871576}, {4.4, -0.951602}, {4.6, -0.993691}, {4.8, -0.996165},
{5., -0.958924}, {5.2, -0.883455}, {5.4, -0.772764}, {5.6, -0.631267},
{5.8, -0.464602}, {6., -0.279415}}
Make an interpolation function going through these points
sn=Interpolation[data]
InterpolatingFunction[]
Check that it does interpolate
{sn[.2], sn[.4]}
{0.198669, 0.389418}
It is define for all numbers between 0 and 6, for example
sn[1.23]
0.942472
Compare with
Sin[1.23]
0.942489
Plot sn:
Plot[sn[t],{t,0,6}];
<picture deleted>
Differentiate sn
cs[t_]=D[sn[t],t]
InterpolatingFunction[][t]
Plot[cs[t],{t,0,6}]
<picture deleted>
Differentiate cs -- a different way --- we should get -sn
ssn = cs'
(InterpolatingFunction[])'[#1] &
Plot[ssn[t],{t,0,6}]
<picture deleted>
soln = NDSolve[{x'[t] == y[t], y'[t] == -0.01*y[t] - Sin[x[t]], x[0] == 0,
y[0] == 2.1}, {x, y}, {t, 0, 100}]
{{x -> InterpolatingFunction[], y -> InterpolatingFunction[]}}
solution gives the unique solution.
Take it out
firstsoln = soln[[1]]
{x -> InterpolatingFunction[], y -> InterpolatingFunction[]}
Now let's plot the solution.
xy[t_]={x[t],y[t]}/.soln
{{InterpolatingFunction[][t], InterpolatingFunction[][t]}}
This replaces x with the function that is on the right of
x\[Rule]InterpolatingFunction[{{0.,100.}},<>], and replaces y with the
function on the right of y\[Rule]InterpolatingFunction[{{0.,100.}},<>]
If I replace t with 1.2 then the functions will evaluate
xy[t]/.t\[Rule]1.2
{{2.0674, 1.17637}}
Similarly, if I define t = 1.2
t=1.2
1.2
Then this value is used
fs
{{2.0674, 1.17637}}
Now we can plot the solution (don't worry about the warning message that you
will get)
ParametricPlot[xy[t],{t,0,100}];
<picture deleted>
All that is going on here is that ParametricPlot is assigning numerical
values to t, so the it evaluates as we saw, and using these to draw the
graph.
The HelpBrowser does this more directly:
ParametricPlot[Evaluate[{x[t],y[t]}/.soln],{t,0,100}];
--
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
"Urijah Kaplan" <uak at sas.upenn.edu> wrote in message
news:9c5nhm$itb at smc.vnet.net...
> I'm new to Mathematica, and I'm using it to solve numerical differential
> equations. I get answers like{{x -> InterpolatingFunction[{{0., 50.}},
> "<>"], y -> InterpolatingFunction[{{0., 50.}}, "<>"]}} How do I use them?
> The help files say I can treat them as a regular function, but I'm not
sure
> how I can set it in a x[t] form, and then pick my values of t. Can anyone
> help me?
>
>
> --Urij
ah
> Kaplan
>
>
>
Prev by Date:
**Re: how to be as efficient as Mean[list] - efficient summing of function applied to list**
Next by Date:
**Getting stylized text with a palette button**
Previous by thread:
**Simple question**
Next by thread:
**4.0 student Version decoding error**
| |