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?