日接触率对SI模型的影响可视化代码
时间: 2024-02-03 10:14:45 浏览: 28
以下是基于 Python 的可视化代码,用于展示日接触率对 SI 模型的影响:
```
import numpy as np
import matplotlib.pyplot as plt
# 设置初始参数
beta = 0.3 # 感染率
gamma = 0.1 # 恢复率
N = 1000 # 总人数
I0 = 1 # 初始感染人数
S0 = N - I0 # 初始易感人数
t = np.linspace(0, 100, 1000) # 时间轴
# 定义 SI 模型方程
def SI_model(y, t, beta, gamma):
S, I = y
dSdt = -beta * S * I / N
dIdt = beta * S * I / N - gamma * I
return dSdt, dIdt
# 不同日接触率下的SI模型预测
R0_values = [0.5, 1, 1.5] # 不同R0值
colors = ['blue', 'green', 'red'] # 不同线条颜色
for i in range(len(R0_values)):
R0 = R0_values[i]
beta = R0 * gamma
y0 = S0, I0
ret = odeint(SI_model, y0, t, args=(beta, gamma))
S, I = ret.T
plt.plot(t, I, colors[i], lw=2, label=f'R0={R0}')
# 添加图例和标签
plt.legend()
plt.xlabel('时间')
plt.ylabel('感染人数')
plt.title('日接触率对SI模型的影响')
plt.show()
```
其中,我们使用了 SciPy 库中的 odeint 函数来数值求解 SI 模型方程。通过循环遍历不同的日接触率(即不同的 R0 值),我们可以得到不同情况下的感染人数曲线,并将其绘制在同一张图上进行比较,从而展示日接触率对 SI 模型的影响。