how to solve a ode systems of size of four?

I want to solve the chemistry reaction rate. Here I got the 4 differential equatiobs.

dE/dt=-k1ES+k2ES+kiES dES/dt=k1ES-kiES-k2ES dS/dt=-k1ES+kiES dP/dt=k2ES

Here is my code?

k1,k2,ki,t=var('k1 k2 ki t') E=function('E',t) ES=function('ES',t) S=function('S',t) P=function('P',t)

des=(diff(E,t)==-k1ES+k2ES+kiES,diff(ES,t)==k1ES-kiES-k2ES diff(S,t)==-k1ES+kiES diff(P,t)==k2ES)

desolve_system(des,[E,ES,S,P],ivar=t,ics=[0,1,1,1,1])

The above is my code. But I just cannot execute it. I am a rookie with this kind of coding style.

edit retag close merge delete

Sort by » oldest newest most voted Hi! "But I just cannot execute it" isn't very specific-- could you cut and paste the error message? Your code seems to work for me:

sage: k1,k2,ki,t=var('k1 k2 ki t')
sage: E=function('E',t)
sage: ES=function('ES',t)
sage: S=function('S',t)
sage: P=function('P',t)
sage: des=(diff(E,t)==-k1*ES+k2*ES+ki*ES,
....:      diff(ES,t)==k1*ES-ki*ES-k2*ES,
....:      diff(S,t)==-k1*ES+ki*ES, diff(P,t)==k2*ES)
sage: desolve_system(des, [E, ES, S, P], ivar=t, ics=[0,1,1,1,1])
[E(t) == -e^((k1 - k2 - ki)*t) + 2, ES(t) == e^((k1 - k2 - ki)*t), S(t) == -(k1 - ki)*e^((k1 - k2 - ki)*t)/(k1 - k2 - ki) + (2*k1 - k2 - 2*ki)/(k1 - k2 - ki), P(t) == k2*e^((k1 - k2 - ki)*t)/(k1 - k2 - ki) + (k1 - 2*k2 - ki)/(k1 - k2 - ki)]

although I did have to insert some commas which seemed missing from your des line. [Note that the above is a cut-and-paste from the console; you wouldn't actually enter "sage:" or "....:".]

more

the four ode should be:

sage: de1=diff(E,t)==-k1*E*S+k2*ES+ki*ES
sage: de2=diff(ES,t)==k1*E*S-ki*ES-k2*ES
sage: de3=diff(S,t)==-k1*E*S+ki*ES
sage: de4=diff(P,t)==k2*ES
more

oh,this page cannot be post the symbol like the star which means multiplication...

more

In order to get code formatted correctly, select some code and then hit the little button above the text box which reads "101010". It should show up in the preview box like mine did (note that I used the *.) But we still need to see the error message to figure out what's going wrong. Could you post that?