当前位置 : 主页 > 网络编程 > net编程 >

COVID-19 的数学模型(1):SI 模型

来源:互联网 收集:自由互联 发布时间:2023-09-06
从今天起,我会定期写些关于 Coronavirus 的数学模型。读者最好有些微积分基础,会点简单的编程。不会也没有关系,会点四则运算(加减乘除)就可以试着去理解模型。强调一点,数学

从今天起,我会定期写些关于 Coronavirus 的数学模型。读者最好有些微积分基础,会点简单的编程。不会也没有关系,会点四则运算(加减乘除)就可以试着去理解模型。强调一点,数学模型是对现实世界的抽象和简化。真实情况比数学模型复杂多了。

我们把人群分成两类:和,它们都是时间的函数。

  • 易感人数
  • 感染人数.

数学建模就是找出这些函数满足的方程,然后求解方程,从而预测以后的情况。

模型

记为总人口数。这个是已知的,而且是不变的。ODE 方程组是:



初始条件是,,满足。


这里用到的参数是感染率,代表感染人数占总人口的比例。


借用化学反应的表达式,可以简洁的把方程表示成:


解释

代表感染人数占总人口的比例,也代表遇到感染者的概率。比如说,,那你就有一半的概率碰到感染者。易感人群乘上这个比例就意味着有多少易感者接触到了生病的人。


但并不是碰到就感染了。有个传染的概率,这个就是。比如,就是说你(没生病的人)碰到了生病的人之后,被传染的可能性是十分之一。


感染人数增加的速度就等于。


这部分人增加到感染人群,自然就要从易感人群中减掉。这就是第一个关于的方程。

数值方法

最简单的是向前欧拉法。我们先回顾一下导数的定义




在向前欧拉法里,我们选定一个时间步长,把导数换成差商,代入原方程组。两边乘以,就得到了下面的方程组




我们来看一个简单的例子。取,这个可以代表一天,一个小时或是一个月,取决于具体情况下时间的单位。这里我们不妨就理解成一天,那么方程组可以写成




是易感人群数目,感染人数增加的数目是。明天的感染人数等于今天的人数加上新增的人数。同时易感人数要减掉这部分数目。

所以只需要简单的四则运算就能够理解这个模型。


从初始值开始, 根据差分方程我们能够计算第一天的,然后用第一天算第二天的,重复下去就能够计算以后所有时间的。


向前欧拉法主要的问题是稳定性。如果时间步长 太大,求出来的数值解就会偏离真实解,甚至有可能跑到无穷大。


关于 ODE的数值方法,可以参见本公众号之前的系列文章:

  • ​​ODE 数值方法(1):方法简介​​
  • ​​ODE 数值方法 (2) :截断误差和二阶方法​​
  • ​​ODE 数值方法(3):截断误差分析​​
  • ​​数值积分公式的推广:龙格库塔法(一)​​
  • ​​龙格库塔法(二)​​

解析解

对于 SI 这个简单模型是可以把解显示地写出来的。首先把两个方程相加得到,所以。就是说人口总数保持不变。


从这个等式中可以解出,然后代入第二个方程,我们就得到了一个一阶常微分方程




用分离变量法可以求得

这个函数是一个标准的 logistic 函数。在机器学习里,也称之为 sigmoid 函数。

让时间跑向无穷,我们得到


这真是一个悲伤的结论:最终所有人都要感染。

COVID-19 的数学模型(1):SI 模型_数值方法COVID-19 的数学模型(1):SI 模型_方程组_02

我们取, 对不同的传染率画了几个关于感染人数的图。第二张图是的导数的图。虽然最终都要感染,但不同的感染率,对应的峰值高度和峰值发生的时间是不同的。

这个和 flatten curve 相关,但还不是。在后面的 SIR 模型里,我们再来讲 flatten curve。

讨论

根据对称性,当时,的二阶导数等于0,求解,我们得到高峰时刻的表达式.

感染人数的一阶导数总是大于零的,就是说总是增加的,但是增加的速度(一个简单例子就是每日新增人数)是在变的,在时刻增长达到顶峰.

在后面要讨论的更复杂的模型里,这一点也差不多是对的。所以预测感染总人数的简单倍增规律是:当观察到日增人数(稳定)减少时,把日增人数高峰期的感染人数翻倍就得到总人数了。

注意一定要稳定减少时,因为统计误差,经常会出现一两天的回落,然后又涨回去了。要模拟这种涨落,需要用到随机微分方程。

感染的人可能会死掉。我们可以在关于的方程里加入一个损耗项,其中是死亡率。这样方程变为



习题  求解上述ODE方程组。


这个时候总人口就不是恒定的了。把两个方程加起来,我们得到

如果有感染人数,总人口将减少。如果最终所有人都要得病,那么还意味着,所有人都会得病死去。

是这样吗?

建议大家试着去求解这个方程组(解析或者数值都行),看看情况是怎么样的。

提示: 对不同的参数和分别进行讨论。

在 SI 模型里面,所有人都会得病。这看起来有点太悲惨了,也不大可能发生。

问题在哪?

问题之一:得了病的人还可以恢复。所以光有这两部分还是不够的,在下一节里,我们将讨论 SIR 模型,多引入一个函数

也有些病是无法痊愈的,比如艾滋病 ( AIDS )。那么 SI 模型适合吗?我们这个社会是存在艾滋病毒携带者的,如果用 SI 模型的话,那么意味着我们都将患上艾滋?

很显然,这是不可能的。

问题之二:在 ODE 模型里,我们假设每个人都会遇到其他人,还假设这种传染病是接触传染的。

这个假设对艾滋病是不对的。

要更精确地描述这种连接性,我们需要引入图论和网络,定义人与人之间的连接性。很显然对艾滋病而言,不是所有人都连接在一起的。

下一节里我们将讨论 SIR 模型,并解释说明什么是 flatten curve。

本文作者 Irvinechenlong,经授权转载自公众号“CAM传习录”。

COVID-19 的数学模型(1):SI 模型_数学模型_03

【文章出处:滨海网页开发公司 http://www.1234xp.com/binhai.html 欢迎留下您的宝贵建议】
上一篇:断点php-断点续传-大文件断点上传
下一篇:没有了
网友评论