数学建模中的疾病传播模型

编程入门 行业动态 更新时间:2024-10-08 12:40:29

数学<a href=https://www.elefans.com/category/jswz/34/1769748.html style=建模中的疾病传播模型"/>

数学建模中的疾病传播模型

#疯狂传播
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()

 

 

更多推荐

数学建模中的疾病传播模型

本文发布于:2024-03-14 15:40:51,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1736792.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:建模   模型   疾病   数学

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!