我试图解决3个微分方程,但我不断收到以下错误:
这是我的代码:
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint
T=np.arange(0, 7, 1e-4)
k1=0.92
k2=0.47
k3=0.25
m = 50
def SistemaEqDif(Y,t):
s=Y[0]
b=Y[1]
l=Y[2]
dEdt = -k1*s
dCdt = (k1/(0.05*m))-k2*b
dldt = k2*b-k3*l
return [dEdt, dCdt,dldt]
C0 = 0
E0 = 1
Y0 = [E0, C0]
Y = odeint(SistemaEqDif,Y0,T)
plt.plot(T,Y[:,0],'g')
plt.plot(T,Y[:,1],'r')
plt.plot(T,Y[:,2],'b')
这就是错误:
File "/Users/arihalpern/untitled29.py", line 21, in SistemaEqDif
l=Y[2]
IndexError: index 2 is out of bounds for axis 0 with size 2
答案 0 :(得分:1)
(回答Warren Weckesser的Courtsey,comments to the question中提供。)
你有Y0 = [E0, C0]
。如果系统是三维的,那么Y0
必须有三个值,因此类似Y0 = [E0, C0, l0]
,其中l0
是l(t)
的初始条件。