具体代码如下:
import scipy.integrate
import numpy as np
import matplotlib.pyplot as plt
O = []
S0 = 0.999999551536256
I0 = 0.000000448463744
R0 = 0.0
r0 = 0.1
t = np.linspace(1, 140, 140)
B0 = 0.36
C = 1250
b = 0.359943942032
def SIR_model(y, t, b, r0):
S, I, R= y
b = B0 - C * (I + R)
dS_dt = -b * S * I
dI_dt = b * S * I - r0 * I
dR_dt = r0 * I
O.append(I)
print(I)
return ([dS_dt, dI_dt, dR_dt])
res = scipy.integrate.odeint(SIR_model, [S0, I0, R0], t, args=(b,r0))
print("O=",O)
print("len(O)=",len(O))
结果显示
len(O)= 107
我想让O的长度和时间t一样长,都为140次,是因为迭代到最后数字变得太小,所以不再迭代了吗?