SEIR模型python代码
时间: 2023-10-19 13:06:56 浏览: 114
以下是一个基于Python的SEIR模型代码示例:
```python
import numpy as np
import matplotlib.pyplot as plt
#参数设置
population = 1000000 #总人口数
exposed_rate = 0.02 #潜伏期人群比例
infectious_rate = 0.03 #感染率
recovery_rate = 0.01 #治愈率
death_rate = 0.005 #死亡率
days = 365 #模拟天数
#初始化状态
S = population - 1
E = 1
I = 0
R = 0
D = 0
#SEIR模型的微分方程
def SEIR(S,E,I,R,D):
dS = -infectious_rate * S * I / population
dE = infectious_rate * S * I / population - exposed_rate * E
dI = exposed_rate * E - (recovery_rate + death_rate) * I
dR = recovery_rate * I
dD = death_rate * I
return dS, dE, dI, dR, dD
#模拟
S_list = [S]
E_list = [E]
I_list = [I]
R_list = [R]
D_list = [D]
for i in range(days):
dS, dE, dI, dR, dD = SEIR(S,E,I,R,D)
S += dS
E += dE
I += dI
R += dR
D += dD
S_list.append(S)
E_list.append(E)
I_list.append(I)
R_list.append(R)
D_list.append(D)
#可视化
plt.plot(S_list, label='Susceptible')
plt.plot(E_list, label='Exposed')
plt.plot(I_list, label='Infectious')
plt.plot(R_list, label='Recovered')
plt.plot(D_list, label='Dead')
plt.legend()
plt.title('SEIR Model')
plt.xlabel('Days')
plt.ylabel('Number of People')
plt.show()
```
该代码使用Python实现了基于SEIR模型的疫情模拟,模拟了总人口数为100万,潜伏期人群比例为2%,感染率为3%,治愈率为1%,死亡率为0.5%的情况下,模拟了365天的疫情蔓延情况,并通过可视化展示了易感人群、潜伏期人群、感染人群、治愈人群、死亡人群的变化情况。
阅读全文