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}]