SIR动力学python实现
时间: 2024-11-19 14:37:50 浏览: 45
SIR(Susceptible-Infected-Recovered)模型是一种流行病学中的简单数学模型,用于模拟传染病传播的过程。它将人群分为三个状态:易感者(Susceptible)、感染者(Infected)和康复者(Recovered)。Python实现SIR模型通常涉及创建函数来描述这三个群体随时间的变化。
以下是基本的SIR模型的Python实现步骤:
1. 导入必要的库:
```python
import numpy as np
import matplotlib.pyplot as plt
```
2. 定义模型常量和初始值:
```python
beta = 0.5 # 感染率
gamma = 0.1 # 恢复率
N = 1000 # 总人口
I0 = 1 # 初始感染人数
S0 = N - I0 # 初始易感者人数
R0 = 0 # 初始康复人数
```
3. 定义模型函数,计算下一时刻的状态变化:
```python
def sir_model(t, state):
S, I, R = state
dSdt = - gamma * I
dRdt = gamma * I
return dSdt, dIdt, dRdt
```
4. 使用`scipy.integrate.solve_ivp`求解动态方程:
```python
from scipy.integrate import solve_ivp
t_span = (0, 80) # 时间范围
sol = solve_ivp(sir_model, t_span, [S0, I0, R0], dense_output=True)
```
5. 可视化结果:
```python
t = sol.t
S, I, R = sol.y.T
plt.plot(t, S, label='Susceptible')
plt.plot(t, I, label='Infected')
plt.plot(t, R, label='Recovered')
plt.xlabel('Time')
plt.ylabel('Population')
plt.title('SIR Model Simulation')
plt.legend()
plt.show()
```
阅读全文