       Re: FindRoot with parameterized interpolated function from NDSolve

• To: mathgroup at smc.vnet.net
• Subject: [mg110754] Re: FindRoot with parameterized interpolated function from NDSolve
• From: Patrick Scheibe <pscheibe at trm.uni-leipzig.de>
• Date: Mon, 5 Jul 2010 06:00:56 -0400 (EDT)

Hi,

try to localize everything:

solnn[a_?NumericQ, xx_?NumericQ] :=
Module[{x, y, t},
Subtract @@
Through[({x, y} /.
First@NDSolve[{x'[t] == a*y[t], y'[t] == -x[t], x == 1,
y == 0}, {x, y}, {t, 0, Pi}])[xx]]
]

FindRoot[solnn[1, t], {t, 2}]
FindRoot[{solnn[a, t] == 0, a - 1 == 0}, {{a, 0}, {t, 2}}]

and the world is beautiful again.

Cheers
Patrick

PS: Read the error-messages carefully and you understand the bad things
that happen with your t when it's not localized.

PPS: People who use a at b.c as mail-address won't get an answer next time.

On Sun, 2010-07-04 at 06:09 -0400, Ulvi Yurtsever wrote:
> I have an interpolated function obtained
> as the solution to a system of ODEs via NDSOlve.
> The system and the solution depend on a number
> of parameters. I then want to plug this function into
> FindRoot to find the numerical solution of a system
> of equations which depend on both the dependent variable
> of the ODEs and the parameters. Mathematica barfs at
> the use of parameters as in the following example:
>
> First, what works as expected:
>
>
> In:= solnn =.
>
> In:=
> solnn[a_] :=
>  NDSolve[{x'[t] == a *y[t], y'[t] == -x[t], x == 1, y == 0}, {x,
>     y}, {t, 0, Pi}]
>
> In:= FindRoot[(x /. solnn[])[t] - (y /. solnn[])[
>     t] == 0, {t, 2}]
>
> Out= {t -> 2.35619}
>
>
> however:
>
>
> FindRoot[{(x /. solnn[a][])[t] - (y /. solnn[a][])[t] == 0,
>   a - 1 == 0}, {{a, 0}, {t, 2}}]
>
>
> produces, instead of the expected
>
> {a->1., t->2.355619},
>
> lots of error messages to the effect that NDSolve has encountered non-
> numerical initial values etc
>
> Is there any  other way to use FindRoot for the purpose I am trying to
> use it?
>

• Prev by Date: Re: Display/manipulating numeric values inside a DynamicModule[]
• Next by Date: Re: FindRoot with parameterized interpolated function from NDSolve
• Previous by thread: Re: FindRoot with parameterized interpolated function from NDSolve
• Next by thread: Re: FindRoot with parameterized interpolated function from NDSolve