python 病毒扩散模型_SI病毒模型解析及模拟

解析

把人群分为两种,一种是易感者,即健康人群,用 S 表示其人数。

另外一种为感染者,用 I 来表示。

即区域内总人数是N=S+I。

I 个感染者,每天碰到 r个人,\( \beta\) 概率会传染疾病。

健康人占比为\( \frac{S}{N}\)。

易得将以上所有量相乘即每天新增感染病例。

于是得到

常微分方程

\( \frac{dI}{dt}=r\beta I\frac{S}{N} \\ \frac{dS}{dt}=-r\beta I\frac{S}{N}\)

现假设总人数N=100,感染者接触易感者的人数r=2,传染概率\(\beta\)=0.02,初始感染者为1即\( I\left(0\right)=1\)。

\( I\left(t\right)=\frac{100}{e^{\mathrm{ln}\left(99\right)-\frac{t}{25}} +1} \\ S\left(t\right)=\frac{100}{e^{\frac{t}{25}-\mathrm{ln}\left(99\right)} +1}\)

为观察其变化率对其求导,得

导数

\( \frac{\mathrm{d}}{\textrm{d}t}I=\frac{4e^{\mathrm{ln}\left(99\right)-\frac{t}{25}} }{ {\left(e^{\mathrm{ln}\left(99\right)-\frac{t}{25}} +1\right)}^2 } \\ \frac{\mathrm{d}}{\mathrm{d}t}S=-\frac{4e^{\frac{t}{25}-\mathrm{ln}\left(99\right)} }{ {\left(e^{\frac{t}{25}-\mathrm{ln}\left(99\right)} +1\right)}^2 }\)

为找出增长速度最快的时间,求其导数最大值,即

最快增长时间

\(t={I^{\prime } \left(t\right)}_{\mathrm{max}} =25\,\mathrm{log}\left(99\right)\approx 115\)

代入原方程发现此时N=50,其实可以通过简单变换直接得出最快增长时间。

\(\frac{dI}{dt}=r\beta I\frac{S}{N}=r\beta I\frac{N-I}{N}=r\beta I\left(1-\frac{I}{N}\right)\),所以当\(I=\frac{N}{2}\)时增长最快。

为分析何时所有人被感染,故解导函数等于零(实际上该数学模型永不为0,这里以\( {10}^{-3}\)代替),得

全部被感染时间

\(t=25\,\mathrm{log}\left(99\right)-25\,\mathrm{log}\left(1999-60\,\sqrt{10}\,\sqrt{111}\right)\approx 322\)

图解

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值