python 如何对多个方程使用欧拉法

python how to use eulers method with multiple equations

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

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

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

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

假设人们在感染 10 天后死亡。

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

使用微分方程生成一个数字,预测感染结果对人口的影响。有人建议使用欧拉法,我如何使用多重微分方程的欧拉法?或者您是否有更好的方法建议以及您将如何使用它?

在 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)