建模中的疾病传播模型"/>
数学建模中的疾病传播模型
#疯狂传播
import numpy as np
import scipy.integrate as spi
import matplotlib.pyplot as pltN = 10000 # N为人群总数
beta = 0.25 # β为传染率系数
gamma = 0 # gamma为恢复率系数
I_0 = 1 # I_0为感染者的初始人数
S_0 = N - I_0 # S_0为易感染者的初始人数
T = 150 # T为传播时间
INI = (S_0, I_0) # INI为初始状态下的数组def funcSI(inivalue, _):Y = np.zeros(2)X = inivalueY[0] = -(beta * X[0] * X[1]) / N + gamma * X[1] # 易感个体变化Y[1] = (beta * X[0] * X[1]) / N - gamma * X[1] # 感染个体变化return YT_range = np.arange(0, T + 1)
RES = spi.odeint(funcSI, INI, T_range)
plt.plot(RES[:, 0], color='darkblue', label='Susceptible', marker='.')
plt.plot(RES[:, 1], color='red', label='Infection', marker='.')
plt.title('SI Model')
plt.legend()
plt.xlabel('Day')
plt.ylabel('Number')
plt.show()
有恢复率
import numpy as np
import scipy.integrate as spi
import matplotlib.pyplot as pltN = 10000 # N为人群总数
beta = 0.25 # β为传染率系数
gamma = 0.05 # gamma为恢复率系数
I_0 = 1 # I_0为感染者的初始人数
S_0 = N - I_0 # S_0为易感染者的初始人数
T = 150 # T为传播时间
INI = (S_0, I_0) # INI为初始状态下的数组def funcSIS(inivalue, _):Y = np.zeros(2)X = inivalueY[0] = -(beta * X[0]) / N * X[1] + gamma * X[1] # 易感个体变化Y[1] = (beta * X[0] * X[1]) / N - gamma * X[1] # 感染个体变化return YT_range = np.arange(0, T + 1)
RES = spi.odeint(funcSIS, INI, T_range)
plt.plot(RES[:, 0], color='darkblue', label='Susceptible', marker='.')
plt.plot(RES[:, 1], color='red', label='Infection', marker='.')
plt.title('SIS Model')
plt.legend()
plt.xlabel('Day')
plt.ylabel('Number')
plt.show()
有抗体的干活
import numpy as np
import scipy.integrate as spi
import matplotlib.pyplot as pltN = 10000 # N为人群总数
beta = 0.25 # β为传染率系数
gamma = 0.05 # gamma为恢复率系数
I_0 = 1 # I_0为感染者的初始人数
R_0 = 0 # R_0为治愈者的初始人数
S_0 = N - I_0 - R_0 # S_0为易感染者的初始人数
T = 150 # T为传播时间
INI = (S_0, I_0, R_0) # INI为初始状态下的数组def funcSIR(inivalue, _):Y = np.zeros(3)X = inivalueY[0] = -(beta * X[0] * X[1]) / N # 易感个体变化Y[1] = (beta * X[0] * X[1]) / N - gamma * X[1] # 感染个体变化Y[2] = gamma * X[1] # 治愈个体变化return YT_range = np.arange(0, T + 1)
RES = spi.odeint(funcSIR, INI, T_range)
plt.plot(RES[:, 0], color='darkblue', label='Susceptible', marker='.')
plt.plot(RES[:, 1], color='red', label='Infection', marker='.')
plt.plot(RES[:, 2], color='green', label='Recovery', marker='.')
plt.title('SIR Model')
plt.legend()
plt.xlabel('Day')
plt.ylabel('Number')
plt.show()
import numpy as np
import scipy.integrate as spi
import matplotlib.pyplot as pltN = 10000 # N为人群总数
beta = 0.25 # β为传染率系数
gamma = 0.05 # gamma为恢复率系数
Ts = 7 # Ts为抗体持续时间
I_0 = 1 # I_0为感染者的初始人数
R_0 = 0 # R_0为治愈者的初始人数
S_0 = N - I_0 - R_0 # S_0为易感染者的初始人数
T = 150 # T为传播时间
INI = (S_0, I_0, R_0) # INI为初始状态下的数组def funcSIRS(inivalue, _):Y = np.zeros(3)X = inivalueY[0] = -(beta * X[0] * X[1]) / N + X[2] / Ts # 易感个体变化Y[1] = (beta * X[0] * X[1]) / N - gamma * X[1] # 感染个体变化Y[2] = gamma * X[1] - X[2] / Ts # 治愈个体变化return YT_range = np.arange(0, T + 1)
RES = spi.odeint(funcSIRS, INI, T_range)
plt.plot(RES[:, 0], color='darkblue', label='Susceptible', marker='.')
plt.plot(RES[:, 1], color='red', label='Infection', marker='.')
plt.plot(RES[:, 2], color='green', label='Recovery', marker='.')
plt.title('SIRS Model')
plt.legend()
plt.xlabel('Day')
plt.ylabel('Number')
plt.show()
import numpy as np
import scipy.integrate as spi
import matplotlib.pyplot as pltN = 10000 # N为人群总数
beta = 0.6 # β为传染率系数
gamma = 0.1 # gamma为恢复率系数
Te = 14 # Te为疾病潜伏期
I_0 = 1 # I_0为感染者的初始人数
E_0 = 0 # E_0为潜伏者的初始人数
R_0 = 0 # R_0为治愈者的初始人数
S_0 = N - I_0 - R_0 - E_0 # S_0为易感染者的初始人数
T = 150 # T为传播时间
INI = (S_0, E_0, I_0, R_0) # INI为初始状态下的数组def funcSEIR(inivalue, _):Y = np.zeros(4)X = inivalueY[0] = -(beta * X[0] * X[2]) / N # 易感个体变化Y[1] = (beta * X[0] * X[2] / N - X[1] / Te) # 潜伏个体变化Y[2] = X[1] / Te - gamma * X[2] # 感染个体变化Y[3] = gamma * X[2] # 治愈个体变化return YT_range = np.arange(0, T + 1)
RES = spi.odeint(funcSEIR, INI, T_range)
plt.plot(RES[:, 0], color='darkblue', label='Susceptible', marker='.')
plt.plot(RES[:, 1], color='orange', label='Exposed', marker='.')
plt.plot(RES[:, 2], color='red', label='Infection', marker='.')
plt.plot(RES[:, 3], color='green', label='Recovery', marker='.')
plt.title('SETR Model')
plt.legend()
plt.xlabel('Day')
plt.ylabel('Number')
plt.show()
import numpy as np
import scipy.integrate as spi
import matplotlib.pyplot as pltN = 10000 # N为人群总数
beta = 0.6 # β为传染率系数
gamma = 0.1 # gamma为恢复率系数
Ts = 7 # Ts为抗体持续时间
Te = 14 # Te为疾病潜伏期
I_0 = 1 # I_0为感染者的初始人数
E_0 = 0 # E_0为潜伏者的初始人数
R_0 = 0 # R_0为治愈者的初始人数
S_0 = N - I_0 - R_0 - E_0 # S_0为易感染者的初始人数
T = 150 # T为传播时间
INI = (S_0, E_0, I_0, R_0) # INI为初始状态下的数组def funcSEIRS(inivalue, _):Y = np.zeros(4)X = inivalueY[0] = -(beta * X[0] * X[2]) / N + X[3] / Ts # 易感个体变化Y[1] = (beta * X[0] * X[2] / N - X[1] / Te) # 潜伏个体变化Y[2] = X[1] / Te - gamma * X[2] # 感染个体变化Y[3] = gamma * X[2] - X[3] / Ts # 治愈个体变化return YT_range = np.arange(0, T + 1)
RES = spi.odeint(funcSEIRS, INI, T_range)
plt.plot(RES[:, 0], color='darkblue', label='Susceptible', marker='.')
plt.plot(RES[:, 1], color='orange', label='Exposed', marker='.')
plt.plot(RES[:, 2], color='red', label='Infection', marker='.')
plt.plot(RES[:, 3], color='green', label='Recovery', marker='.')
plt.title('SETRS Model')
plt.legend()
plt.xlabel('Day')
plt.ylabel('Number')
plt.show()
更多推荐
数学建模中的疾病传播模型
发布评论