帮忙写一首代码:考虑“中年、老年、青年”三类群体的不同感染率与恢复率,构建SIS传染病模型,并绘图
时间: 2024-06-10 16:08:57 浏览: 97
代码 传染病的SI SIS SIR 三种数学建模模型
5星 · 资源好评率100%
很高兴为您提供帮助,以下是代码:
```python
import numpy as np
import matplotlib.pyplot as plt
# 定义参数
N = 1000 # 总人数
beta = 0.3 # 感染率
gamma = 0.1 # 恢复率
S0, I0 = 999, 1 # 初始感染人数
# 定义函数
def sis_model(S, I, beta, gamma):
# 计算下一时刻的S和I
S_next = S - beta * S * I / N + gamma * I
I_next = I + beta * S * I / N - gamma * I
return S_next, I_next
# 初始化数组
S, I = np.zeros(101), np.zeros(101)
S[0], I[0] = S0, I0
# 模拟传染病过程
for i in range(100):
if i < 30: # 中年人
beta = 0.3
gamma = 0.1
elif i < 60: # 老年人
beta = 0.4
gamma = 0.05
else: # 青年人
beta = 0.2
gamma = 0.2
S[i+1], I[i+1] = sis_model(S[i], I[i], beta, gamma)
# 绘制曲线
t = np.arange(101)
plt.plot(t, S/N, label='Susceptible')
plt.plot(t, I/N, label='Infected')
plt.xlabel('Time')
plt.ylabel('Proportion')
plt.legend()
plt.show()
```
当然,由于是随机模型,每次运行结果可能会有所不同。
阅读全文