生成SEIR模型python代码
时间: 2023-10-14 17:26:36 浏览: 163
传染病SEIR传播动力模型python代码
以下是一个简单的SEIR模型的Python代码示例:
```
import numpy as np
import matplotlib.pyplot as plt
# 定义模型参数
N = 1000000 # 总人口数
beta = 0.25 # 感染率
gamma = 0.05 # 恢复率
sigma = 0.2 # 潜伏期转为感染期的概率
I0, E0, R0 = 1, 0, 0 # 初始时刻的感染、潜伏和恢复人数
# 定义时间步长和模拟总天数
dt = 0.1
t = np.linspace(0, 365, int(365/dt) + 1)
# 初始化人群状态矩阵
S = np.zeros(len(t))
E = np.zeros(len(t))
I = np.zeros(len(t))
R = np.zeros(len(t))
S[0], E[0], I[0], R[0] = N-I0-E0-R0, E0, I0, R0
# SEIR模型
for i in range(1, len(t)):
dSdt = -beta*S[i-1]*I[i-1]/N
dEdt = beta*S[i-1]*I[i-1]/N - sigma*E[i-1]
dIdt = sigma*E[i-1] - gamma*I[i-1]
dRdt = gamma*I[i-1]
S[i] = S[i-1] + dSdt*dt
E[i] = E[i-1] + dEdt*dt
I[i] = I[i-1] + dIdt*dt
R[i] = R[i-1] + dRdt*dt
# 绘制模型输出结果
plt.plot(t, S, label='Susceptible')
plt.plot(t, E, label='Exposed')
plt.plot(t, I, label='Infected')
plt.plot(t, R, label='Recovered')
plt.legend()
plt.xlabel('Time (days)')
plt.ylabel('Number of people')
plt.show()
```
代码中使用了numpy和matplotlib库,首先定义了模型参数,包括总人口数、感染率、恢复率和潜伏期转为感染期的概率,以及初始时刻的感染、潜伏和恢复人数。然后定义了时间步长和模拟总天数,并初始化人群状态矩阵。
接下来,使用for循环计算SEIR模型的每个时间步长的人群状态,并将结果保存到人群状态矩阵中。最后,使用matplotlib库绘制模型输出结果,包括易感人群、潜伏期人群、感染人群和恢复人群的数量随时间的变化。
阅读全文