对于人口中健康成长的人,我得到了两个方程式
dh/dt=-.05*h*s+.0003*h,
另一个方程是病人的感染率
ds/dt=.05*h*s-.01*s.
假定感染了10天后人们会死亡。
对于初始变量h = 9000和s = 100
使用微分方程式生成的图预测感染的结果对人群的影响。有人建议使用Eulers方法,如何使用带有多个微分方程的Eulers方法?还是有建议的更好方法以及如何使用它?
答案 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)