数学模型:传染病模型
传染病模型需要考虑的问题基本方法模型1模型2(SI模型)模型3(SIS模型)模型4(SIR模型)需要考虑的问题描述传染病的传播过程分析受感染人数的变化规律预报传染病高潮到来的时刻预防传染病蔓延的手段基本方法不需要从医学的角度分析各种传染病的特殊机理,而是按照传播过程的一般规律建立数学模型。模型1感染人数i随着时间t的变化率。思考过程:病人越多,接触的人越多,感染的人越多。由此可以得到一个所需因素:
需要考虑的问题
- 描述传染病的传播过程
- 分析受感染人数的变化规律
- 预报传染病高潮到来的时刻
- 预防传染病蔓延的手段
基本方法
不需要从医学的角度分析各种传染病的特殊机理,而是按照传播过程的一般规律建立数学模型。
模型1
感染人数i随着时间t的变化率。
思考过程:病人越多,接触的人越多,感染的人越多。由此可以得到一个所需因素:病人每天接触到的人数λ。
假设:每个病人每天有效接触(足以使人治病)人数为λ
建模:
i
(
t
+
Δ
t
)
−
i
(
t
)
=
λ
i
(
t
)
Δ
t
i(t+Δt)-i(t)=λi(t)Δt
i(t+Δt)−i(t)=λi(t)Δt
由上面的模型可以得到
d
i
d
t
=
λ
i
\frac{di}{dt}=λi
dtdi=λi
i
(
0
)
=
i
0
i(0)=i_0
i(0)=i0
整理得出
i
(
t
)
=
i
0
e
λ
t
i(t)=i_0e^{λt}
i(t)=i0eλt
t→∞时得出的是i→∞,表示t趋近于无穷大时,全部的人都会得病,但是这很明显不符合实际的情况。短期可能可以使用该模型,但长期的传染病不可以使用。
模型2(SI模型)
区分已感染者(病人)和未感染者(健康人)
假设:
- 总人数N不变,病人和健康的人的比例分别为i(t),s(t)。
- 每个病人每天都有效接触人数为λ,且使接触的健康人治病。 [λ:日接触率]
建模 N [ i ( t + Δ t ) − i ( t ) ] = [ λ s ( t ) ] N i ( t ) Δ t N[i(t+Δt)-i(t)]=[λs(t)]Ni(t)Δt N[i(t+Δt)−i(t)]=[λs(t)]Ni(t)Δt
d i d t = λ s i \frac{di}{dt}=λsi dtdi=λsi
s ( t ) + i ( t ) = 1 s(t)+i(t)=1 s(t)+i(t)=1
讲上述条件整理得到
{
d
i
d
t
=
λ
s
i
i
(
0
)
=
i
0
\left\{ \begin{aligned} \frac{di}{dt}=λsi\\ i(0)=i_0\\ \end{aligned} \right.
⎩⎨⎧dtdi=λsii(0)=i0
以上的模型叫做:Logistic模型
简单分析:i=0时导数为0,增长率为了0,当i=1时即全部是病人时增长率也为0,符合实际情况的假设。
此模型的解为: 1 1 + ( 1 i 0 − 1 ) e − λ t \frac{1}{1+(\frac{1}{i_0}-1)e^{-λt}} 1+(i01−1)e−λt1
tm是传染病高潮到来时刻
模型2的缺陷:没有考虑有的病人是可以治愈的。
模型3(SIS模型)
前提: 传染病无免疫性——病人治愈成功为健康人,健康人可再次感染。
新增假设:
- 病人每天被治愈的比例为μ,μ为日治愈率。
建模:
N
[
i
(
t
+
Δ
t
)
−
i
(
t
)
]
=
λ
N
s
(
t
)
i
(
t
)
−
μ
N
i
(
t
)
Δ
t
N[i(t+Δt)-i(t)]=λNs(t)i(t)-μNi(t)Δt
N[i(t+Δt)−i(t)]=λNs(t)i(t)−μNi(t)Δt
其中
μ
N
i
(
t
)
Δ
t
μNi(t)Δt
μNi(t)Δt是治愈的人数
整理得
{
d
i
d
t
=
λ
i
(
1
−
i
)
−
μ
i
i
(
0
)
=
i
0
\left\{ \begin{aligned} \frac{di}{dt}&=λi(1-i)-μi\\ i(0)&=i_0\\ \end{aligned} \right.
⎩⎨⎧dtdii(0)=λi(1−i)−μi=i0
用
σ
=
λ
/
μ
代
入
上
面
的
式
子
得
出
d
i
d
t
=
−
λ
i
[
i
−
(
1
−
1
σ
)
]
用σ=λ/μ代入上面的式子得出\frac{di}{dt}=-λi[i-(1-\frac{1}{σ})]
用σ=λ/μ代入上面的式子得出dtdi=−λi[i−(1−σ1)]
其中λ表示日接触率,1/μ表示感染期[μ表示一个人一天内被治好的概率,1/μ表示平均得多久的病才会被治好],σ表示一个感染期内每个病人的有效接触人数,称为接触数。
模型4(SIR模型)
前提: 传染病有免疫性——病人治愈后立即移除感染系统,称为移出者。
假设
- 总人数N不变,病人、健康人和移出者的比例分别为i(t),s(t),r(t).
- 病人的日接触率λ,日治愈率μ,接触数σ=λ/μ
建模
第一个方程还是前面模型3中治愈的方程:
N
[
i
(
t
+
Δ
t
)
−
i
(
t
)
]
=
λ
N
s
(
t
)
i
(
t
)
−
μ
N
i
(
t
)
Δ
t
N[i(t+Δt)-i(t)]=λNs(t)i(t)-μNi(t)Δt
N[i(t+Δt)−i(t)]=λNs(t)i(t)−μNi(t)Δt
第二个方程是健康人的变化,健康人和病人之间的变化关系:
N
[
s
(
t
+
Δ
t
)
−
s
(
t
)
]
=
−
λ
N
s
(
t
)
i
(
t
)
−
μ
N
i
(
t
)
Δ
t
N[s(t+Δt)-s(t)]=-λNs(t)i(t)-μNi(t)Δt
N[s(t+Δt)−s(t)]=−λNs(t)i(t)−μNi(t)Δt
即可得到
{
d
i
d
t
=
λ
s
i
−
μ
i
d
s
d
t
=
−
λ
s
i
i
(
0
)
=
i
0
s
(
0
)
=
s
0
\left\{ \begin{aligned} \frac{di}{dt}&=λsi-μi\\ \frac{ds}{dt}&=-λsi\\ i(0)&=i_0\\ s(0)&=s_0 \end{aligned} \right.
⎩⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎧dtdidtdsi(0)s(0)=λsi−μi=−λsi=i0=s0
此方程没有解析解,但观察上面的两个微分方程,发现右边都与t无关,两者相除左边消去dt,只研究两者变量之间的关系:
i 0 + s 0 ≈ 1 ( 通 常 r ( 0 ) = r 0 很 小 ) i_0+s_0≈1(通常r(0)=r_0很小) i0+s0≈1(通常r(0)=r0很小)
可以先做数值计算,再在相平面上研究解析解性质。
设λ=1,μ=0.3,i0=0.02,s0=0.98,用MATLAB计算作图i(t),s(t)及i(s)。
相轨线的分析:
N
[
s
(
t
+
Δ
t
)
−
s
(
t
)
]
=
−
λ
N
s
(
t
)
i
(
t
)
−
μ
N
i
(
t
)
Δ
t
N[s(t+Δt)-s(t)]=-λNs(t)i(t)-μNi(t)Δt
N[s(t+Δt)−s(t)]=−λNs(t)i(t)−μNi(t)Δt
即可得到
KaTeX parse error: Expected group after '\right' at end of input: …ligned} \right
求解出相轨线为
i
(
s
)
=
(
s
0
+
i
0
)
−
s
+
1
σ
l
n
s
s
0
i(s)=(s_0+i_0)-s+\frac{1}{σ}ln\frac{s}{s_0}
i(s)=(s0+i0)−s+σ1lns0s
可以发现i是由一个最大值,在s=1/σ的时候达到。
- s0>1/σ时i(t)先上升后下降至0 [传染病蔓延]
- s0<1/σ时i(t)单调降至0 [传染病蔓延]
传染病不蔓延的条件——s0<1/σ
预防传染病蔓延的手段:
- 提高阈值:降低σ(λ/μ)
→降低λ(日接触率):隔离
→提高μ:提高医疗水平 - 降低s0
s0+i0+r0=1,i0为感染比例,使得s0下降的方法就应该为提高r0,也就是进行群体免疫(打疫苗)。
通过具体数据观察病情蔓延变化:
σ的估计
(
s
0
+
i
0
)
−
s
∞
+
1
σ
l
n
s
∞
s
0
(s_0+i_0)-s_∞+\frac{1}{σ}ln\frac{s_∞}{s_0}
(s0+i0)−s∞+σ1lns0s∞
刚刚开始的时候忽略i0,估计σ
σ
=
l
n
s
0
−
l
n
s
∞
s
0
−
s
∞
σ=\frac{lns_{0}-lns_∞}{s_0-s_∞}
σ=s0−s∞lns0−lns∞
被传染者比例估计
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)