代码如下:
import scipy.integrate
import numpy as np
import matplotlib.pyplot as plt
from scipy.misc import electrocardiogram
from scipy.signal import find_peaks
# model
a = []
T=[]
def SIR_model(y, t, b, r0):
S, I, R = y
dS_dt = -b * S * I
dI_dt = b * S * I - r0 * I
dR_dt = r0* I
a.append(dI_dt)
T.append(t)
return ([dS_dt, dI_dt, dR_dt ])
# initialization
S0 =0.999999# ratio
I0 =0.000001 # ratio
R0 = 0.0 # ratio
r0 =0.1
t = np.linspace(1, 100,100)
for b in np.arange(0.5,0.7,0.1):
res = scipy.integrate.odeint(SIR_model, [S0, I0, R0], t, args=(b, r0))
for i in range(len(a)):
if a[i-1]>0 and a[i]<0 :
print("a[i-1]=",a[i-1],"a[i]=",a[i])
print("T[i-1]=",T[i-1])
print("------------------------------------------------")
打印结果如下:
a[i-1]= 0.0009520121733198328 a[i]= -0.003460775132660618
T[i-1]= 39.32962563186704
------------------------------------------------
a[i-1]= 0.0009520121733198328 a[i]= -0.003460775132660618
T[i-1]= 39.32962563186704
a[i-1]= 0.0026876959796579003 a[i]= -0.0030616548114957565
T[i-1]= 32.038222701776384
------------------------------------------------
这是为啥呢?看到的朋友帮忙解答下!万分感谢!