MathGroup Archive 2010

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

Search the Archive

FindRoot with parameterized interpolated function from NDSolve

  • To: mathgroup at smc.vnet.net
  • Subject: [mg110747] FindRoot with parameterized interpolated function from NDSolve
  • From: Ulvi Yurtsever <a at b.c>
  • Date: Sun, 4 Jul 2010 06:09:45 -0400 (EDT)

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[135]:= solnn =.

In[142]:= 
solnn[a_] := 
 NDSolve[{x'[t] == a *y[t], y'[t] == -x[t], x[0] == 1, y[0] == 0}, {x,
    y}, {t, 0, Pi}]

In[144]:= FindRoot[(x /. solnn[1][[1]])[t] - (y /. solnn[1][[1]])[
    t] == 0, {t, 2}]

Out[144]= {t -> 2.35619}


however:


FindRoot[{(x /. solnn[a][[1]])[t] - (y /. solnn[a][[1]])[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: Is it possible to query current plot range values (or have
  • Next by Date: Re: Mathematica Collect function
  • Previous by thread: JLink NaN Support
  • Next by thread: Re: FindRoot with parameterized interpolated function from NDSolve