       RE: Re: NSolve with varying parameter

• To: mathgroup at smc.vnet.net
• Subject: [mg18837] RE: [mg18719] Re: [mg18692] NSolve with varying parameter
• From: "Ersek, Ted R" <ErsekTR at navair.navy.mil>
• Date: Thu, 22 Jul 1999 08:19:45 -0400
• Sender: owner-wri-mathgroup at wolfram.com

```Carl Woll wrote a fabulous solution on how to get InterpolatingFunctions
that solve a system of equations.  See [mg18719] Re: [mg18692] NSolve with
varying parameter
(17 July, 1999).

I noticed Carl's solution can be simplified a bit (see below).
I will use the same example Carl used, but slightly change some notation.
Suppose we wanted to solve the equations:

t^2==x[t]^2 + y[t]^2
y[t]==x[t]^2

In many applications the variables are a function of time.  So I think it's
easier to grasp when we use (t) instead of (a).  Notice I have (x, y)
depending on (t) from the very beginning.

- The way I solve it below (f, g) are only functions of (t).

- The Diff Eqs and BCs are shown at Out below.
----------------------------------

In:=
f[t_] := x[t]^2 + y[t]^2 - t^2;
g[t_] := y[t] - x[t]^2;
eqs={f'[t]==0, g'[t]==0, f==0, g==0}

Out=
{-2*t + 2*x[t]*x'[t] + 2*y[t]*y'[t] == 0,
-2*x[t]*x'[t] + y'[t] == 0,
-1 + x^2 + y^2 == 0,
-x^2 + y == 0}

In:=
soln=NDSolve[eqs,{x,y},{t,0,1}]

Out=
{{x->InterpolatingFunction[{{0.,1.}},<>],
y->InterpolatingFunction[{{0.,1.}},<>]},
{x->InterpolatingFunction[{{0.,1.}},<>],
y->InterpolatingFunction[{{0.,1.}},<>]},
{x->InterpolatingFunction[{{0.,1.}},<>],
y->InterpolatingFunction[{{0.,1.}},<>]},
{x->InterpolatingFunction[{{0.,1.}},<>],
y->InterpolatingFunction[{{0.,1.}},<>]}}

---------------------------------------------
Below I provide non-trivial code to make nice plots of
the real and imaginary parts of x[t] and y[y] for the
first of four solutions.

In:=
x1=x/.soln[];
y1=y/.soln[];

Block[{\$DisplayFunction=Identity},
p1=Plot[Re[x1[t]],{t,0,1},PlotLabel->"Real Part of x"];
p2=Plot[Im[x1[t]],{t,0,1},PlotLabel->"Imaginary Part of x"];
p3=Plot[Re[y1[t]],{t,0,1},PlotLabel->"Real Part of y"];
p4=Plot[Im[y1[t]],{t,0,1},PlotLabel->"Imaginary Part of y"];
];
Show[GraphicsArray[{{p1,p2},{p3,p4}},
GraphicsSpacing -> 0.2,ImageSize->{550,380}]];

(* Graphics Not Shown *)

------------------
Regards,
Ted Ersek
ersektr at navair.navy.mil

```

• Prev by Date: Re: InputStream in version 3 vs version 4
• Next by Date: Re: implcit plot with undefined expression
• Previous by thread: Re: NSolve with varying parameter