SIR传播模型python案例
时间: 2023-10-15 16:27:05 浏览: 89
以下是一个基于SIR传播模型的Python案例:
```python
import numpy as np
import matplotlib.pyplot as plt
# 传染病模型参数
beta = 0.3 # 感染率
gamma = 0.05 # 恢复率
# 初始人数
N = 1000 # 总人数
I0 = 10 # 初始感染人数
# 时间参数
t_start = 0
t_end = 100
dt = 0.1
t = np.arange(t_start, t_end, dt)
# 初始化人群状态
S = np.zeros_like(t) # 易感人群
I = np.zeros_like(t) # 感染人群
R = np.zeros_like(t) # 恢复人群
S[0] = N - I0
I[0] = I0
# 模型求解
for i in range(1, len(t)):
dSdt = -beta * S[i-1] * I[i-1] / N
dIdt = beta * S[i-1] * I[i-1] / N - gamma * I[i-1]
dRdt = gamma * I[i-1]
S[i] = S[i-1] + dSdt * dt
I[i] = I[i-1] + dIdt * dt
R[i] = R[i-1] + dRdt * dt
# 绘制结果
plt.plot(t, S, label='Susceptible')
plt.plot(t, I, label='Infected')
plt.plot(t, R, label='Recovered')
plt.legend()
plt.xlabel('Time')
plt.ylabel('Population')
plt.show()
```
这个案例使用欧拉方法对SIR传播模型进行求解,并使用matplotlib库绘制结果。其中,beta和gamma分别是感染率和恢复率,N是总人数,I0是初始感染人数,t是时间序列,S、I和R分别是易感人群、感染人群和恢复人群的数量。与SIS模型不同的是,SIR模型中感染者可以恢复并成为免疫者。
阅读全文