MathGroup Archive 2012

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

Search the Archive

trouble with NDSolve: how to diagnose a problem with initial conditions?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg127778] trouble with NDSolve: how to diagnose a problem with initial conditions?
  • From: dantimatter <google at dantimatter.com>
  • Date: Wed, 22 Aug 2012 02:24:59 -0400 (EDT)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • Delivered-to: l-mathgroup@wolfram.com
  • Delivered-to: mathgroup-newout@smc.vnet.net
  • Delivered-to: mathgroup-newsend@smc.vnet.net

Hello All,
I've been trying to use NDSolve to solve a rather large set of equations of differential and algebraic equations, but I keep getting a cryptic error: "NDSolve::icfail: Unable to find initial conditions that satisfy the residual function within specified tolerances. Try giving initial conditions for both values and derivatives of the functions".  Are there other functions that I could use to better determine what's wrong with the way I set up the problem?   Code is below.
Many thanks!

---------------------------------------------

eqs={Derivative[1][PparDE][t] == -100 E70[t] PparDE[t] -
   100 parDcomplex[t] PparDE[t] +
   50 (0.5 - PparDE[t] - PparDEbound[t]) + 50 PparDEbound[t],
 Derivative[1][PparDEbound][t] ==
  100 E70[t] PparDE[t] - 50 PparDEbound[t],
 Derivative[1][GFPmRNA][t] == -0.001 GFPmRNA[t] + 0.05 PparDEbound[t],
  Derivative[1][GFPd][t] == -0.002 GFPd[t] + (0.05 GFPmRNA[t] R0[t])/(
   500 + R0[t]), Derivative[1][GFP][t] == 0.002 GFPd[t],
 Derivative[1][P70][t] == 50 (0.005 - P70[t]) - 100 E70[t] P70[t],
 Derivative[1][S28mRNA][t] ==
  0.05 (0.005 - P70[t]) - 0.001 S28mRNA[t],
 Derivative[1][S28][t] ==
  400 E28[t] - 800 E0[t] S28[t] + (0.05 R0[t] S28mRNA[t])/(
   50 + R0[t]), S70[t] == 29.995 - E70[t] + P70[t] - PparDEbound[t],
 Derivative[1][P28][t] == 50 (P28tot - P28[t]) - 100 E28[t] P28[t],
 Derivative[1][parDmRNA][t] ==
  0.05 (P28tot - P28[t]) - 0.001 parDmRNA[t],
 Derivative[1][parD][t] == -2 (100 parD[t]^2 - 50 parDcomplex[t]) + (
   0.05 parDmRNA[t] R0[t])/(500 + R0[t]),
 Derivative[1][parDcomplex][t] ==
  100 parD[t]^2 - 50 parDcomplex[t] - 100 parDcomplex[t] PparDE[t] +
   50 (0.5 - PparDE[t] - PparDEbound[t]),
 Derivative[1][E70][t] == -400 E70[t] + 50 (0.005 - P70[t]) -
   100 E70[t] P70[t] - 100 E70[t] PparDE[t] + 50 PparDEbound[t] +
   800 E0[t] S70[t],
 Derivative[1][E28][t] == -400 E28[t] + 50 (P28tot - P28[t]) -
   100 E28[t] P28[t] + 800 E0[t] S28[t],
 E0[t] == 100 - E28[t] - E70[t] - 6. (P28tot - P28[t]) -
   14.3333 (0.005 - P70[t]) - 14.3333 PparDEbound[t],
 Rgfp[t] == (21. GFPmRNA[t] R0[t])/(500 + R0[t]),
 R28[t] == (21. R0[t] S28mRNA[t])/(50 + R0[t]),
 RparD[t] == (8.5 parDmRNA[t] R0[t])/(500 + R0[t]),
 R0[t] == 1500 - R28[t] - Rgfp[t] - RparD[t], PparDE[0] == 0.5,
 PparDEbound[0] == 0, GFPmRNA[0] == 0, GFPd[0] == 0, GFP[0] ==
= 0,
 P70[0] == 0.005, S28mRNA[0] == 0, S28[0] == 0, P28[0] == P28tot,
 parDmRNA[0] == 0, parD[0] == 0, parDcomplex[0] == 0, E70[0] == 0,
 E28[0] == 0};

vars = {PparDE[t], PparDEbound[t], GFPmRNA[t], GFPd[t], GFP[t],
   P70[t], S28mRNA[t], S28[t], S70[t], P28[t], parDmRNA[t], parD[t],
   parDcomplex[t], E70[t], E28[t], E0[t], Rgfp[t], R28[t], RparD[t],
   R0[t]};

sols = NDSolve[eqs /. P28tot -> 0, vars, {t, 0, 1000000}]



  • Prev by Date: Re: V8 slow like a snail
  • Next by Date: Re: Constraining a Location to Move Along a Plot in a Manipulate
  • Previous by thread: Re: Constraining a Location to Move Along a Plot in a Manipulate
  • Next by thread: Washington DC Area Mathematica SIG