Re: NDSolve Errors: icfail and ntdv
- To: mathgroup at smc.vnet.net
- Subject: [mg77356] Re: NDSolve Errors: icfail and ntdv
- From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
- Date: Thu, 7 Jun 2007 03:50:59 -0400 (EDT)
- Organization: Uni Leipzig
- References: <f463bs$o2f$1@smc.vnet.net>
- Reply-to: kuska at informatik.uni-leipzig.de
Hi, if you have a system of differential equations Mathematica trys to bring the system in an explicit form so that one get equations {Derivative[1][Lc][t]==.., Derivative[1][Ls][t]==.., Derivative[1][ms][t]==.., Derivative[1][rs][t]==.., Derivative[1][\[Rho]s][t]==.., Derivative[2][Lc][t]==.., Derivative[2][Ls][t]==..} if this can't be done Mathematica try to solve the implicit equations. Fot the implicit equations it is so, that the initial conditions you gave, must fullfill the implicit equations at t=0. And in your case that is not true because deqn = {Derivative[2][Lc][t] == g*(1 - \[Rho]d/\[Rho]w), Derivative[1][rs][ t] == ((8*\[Alpha]*rs[t]^2 - rc[t]^2)/(4*rs[t]))* Derivative[1][Ls][t] + (rc[t]^2/(4*rs[t]))*Derivative[1][Lc][t], Derivative[1][Ls][t] == (1/(2*\[Alpha]))*Derivative[1][rs][t], Derivative[2][Ls][ t] + (((\[Kappa]*(24/(rs[t]*Derivative[1][Ls][t]) + 4/(rs[t]*Derivative[1][Ls][t])^(1/3)) + 14.9/(rs[t]*Derivative[1][Ls][t])^0.78)*(rs[t]* Derivative[1][Ls][t])^2 + 40*((3*\[Kappa] + 2)/(rs[t]*Derivative[1][Ls][t])) + 15*\[Kappa] + 10)/ ((1 + \[Kappa])*(5 + (rs[t]* Derivative[1][Ls][t])^2)))*((Pi*\[Rho]w*rs[t]^2)/(2* ms[t]))*Derivative[1][Ls][t]^2 - (1 - \[Rho]w/\[Rho]s[t])*g == 0, Derivative[1][ms][t] == 8*Pi*\[Alpha]*\[Rho]w*Derivative[1][Ls][t]*rs[t]^2 + Pi*\[Rho]d* rc[t]^2*(Derivative[1][Lc][t] - Derivative[1][Ls][t]), Derivative[1][\[Rho]s][ t] == (3/(4*Pi*rs[t]^3))* Derivative[1][ms][t] - ((9*ms[t])/(4*Pi*rs[t]^4))* Derivative[1][rs][t]}; and init = {ms[0] == (4/3)*Pi*\[Rho]d*rso^3, \[Rho]s[0] == \[Rho]d, Lc[0] == 0, Ls[0] == 0, rc[0] == 0, rs[0] == rso, Derivative[1][Ls][0] == vso, Derivative[1][Lc][0] == 0, Derivative[1][ms][0] == 0, Derivative[1][\[Rho]s][0] == 0, Derivative[1][rs][0] == 0, Derivative[2][Ls][0] == 0}; gives FullSimplify[(seqn /. t -> 0) /. (init /. Equal -> Rule)] {10000*(-1 + \[Rho]d) + Derivative[2][Lc][0] == 0, False, False, 1.0000075093357965/\[Rho]d == 1., False, True} as you can see you have 3 times a false in your equations at the initial point and you have to choose initial conditions, that fullfill you equations at t==0. Regards Jens ehicks wrote: > Hi, > I am trying to solve a set of equations with NDSolve. The problem > is no matter what I do, I keep getting errors of various kinds. I've > used NDSolve successfully in the past, so I am starting to wonder if > maybe this set of equations just doesn't have a solution. My set is > diffeo-alegbraic, so at first I got the NDSolve::icfail error. I > tried to circumvent that by taking the derivative of one of the > equations. Then I got the NDSolve::ntdv error. So I tried > SolveDelayed->True, which just got me right back to the icfail error. > Does anyone have any ideas on ways to circumvent these errors? > Thanks! > -Elizabeth > > See the Mathematica File at: http://www.tarzia.selfip.com/~elizabeth/fullplumemodel1.nb > > The text of the errors is: > NDSolve::icfail: Unable to find initial conditions which satisfy the > residual function within specified tolerances. Try giving initial > conditions for both values and derivatives of the functions. > > NDSolve::ntdv: Cannot solve to find an explicit formula for the > derivatives. Consider using the option setting SolveDelayed->True. > >