经典传染病SIS模型及仿真

假设:

1)节点均匀混合

2)已感染节点以固定概率康复后继续成为易感染节点:\mu

3)病原体感染健康节点的概率为:\beta

动力学方程:\frac{di}{dt}=\beta \left \langle k \right \rangle i\left ( 1-i \right )-\mu i

特点:

1)当康复率较低时\mu< \beta\left \langle k \right \rangle,系统最终将处于动态平衡,也就是病原体将长期存在。

2)当康复率较高时\mu>\beta\left \langle k \right \rangle,系统最终将消灭病原体,因为单位时间内治愈的节点将多于新增节点。

3)采用基本再生数R_0=\frac{\beta\left \langle k \right \rangle}{\mu}可表征最终达到的系统平衡状态,其基本意义是理想环境下一个易感染个体所引发的新增感染个体数。

采用scipy数值求解动力学方程

import numpy as np
import scipy.integrate as spi
import matplotlib.pyplot as plt
beta=0.4
avg_k=4
mu1=1.7
mu2=1.1
R1=beta*avg_k/mu1
R2=beta*avg_k/mu2
#动力学方程
def si_diff(i,t,mu):
    return beta*avg_k*i*(1-i)-mu*i
i0=1e-1
t=np.arange(0,70,1)
#带参数的ODE数值求解
i_t1=spi.odeint(si_diff,i0,t,args=(mu1,))
s_t1=1-i_t1
i_t2=spi.odeint(si_diff,i0,t,args=(mu2,))
s_t2=1-i_t2
fig,ax=plt.subplots(2,1,subplot_kw={'facecolor':"#ebf5ff"})
ax[0].plot(t,i_t1,label="R1="+str(R1)+":i1(t)")
ax[0].plot(t,s_t1,label="R1="+str(R1)+":s1(t)")
ax[1].plot(t,i_t2,label="R2="+str(R2)+":i2(t)")
ax[1].plot(t,s_t2,label="R2="+str(R2)+":s2(t)")
ax[0].set_xlabel("t")
ax[0].set_ylabel("%")
ax[0].legend()
ax[1].set_xlabel("t")
ax[1].set_ylabel("%")
ax[1].legend()
plt.show()

不同R0分析结果

 

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值