python如何使用具有多个方程式的eulers方法

时间:2018-11-28 05:36:16

标签: python differential-equations

对于人口中健康成长的人,我得到了两个方程式

dh/dt=-.05*h*s+.0003*h, 

另一个方程是病人的感染率

ds/dt=.05*h*s-.01*s. 

假定感染了10天后人们会死亡。

对于初始变量h = 9000和s = 100

使用微分方程式生成的图预测感染的结果对人群的影响。有人建议使用Eulers方法,如何使用带有多个微分方程的Eulers方法?还是有建议的更好方法以及如何使用它?

1 个答案:

答案 0 :(得分:3)

在python中,您将使用scipy.integrate.odeint和计算

def odesys(u,t):
    h, s = u
    return [ -.05*h*s+.0003*h, .05*h*s-.01*s]

h0, s0 = 9000, 100
t0, tf = 0, 0.10

t = linspace(t0, tf, 301)
sol = odeint(odesys, [h0, s0], t)
h, s = sol.T
plot(t,h, label="healthy")
plot(t,s, label="sick") 

如果您必须使用Euler,则看起来应该使用相同的界面

def odeinteuler(f, y0, tspan):
     y = zeros([len(tspan),len(y0)])
     y[0,:]=y0
     for k in range(1, len(tspan)):
          y[k,:] = y[k-1,:]+(t[k]-t[k-1])*array(f(y[k-1], t[k-1]))
     return y

sol = odeint(odesys, [h0, s0], t)