数学建模实验(传染病模型)
实验二:传染病模型
1、SI 模型的建立基于以下三个假设,求出平衡点,给出参数,图示模型曲线。
(1)不考虑人口的出生、死亡、流动等种群动力因素。人口始终保持一个常数,即N (t )≡K 。
(2)一个病人一旦与易感者接触就必然具有一定的传染力。假设t 时刻单位时间内,一个病人能传染的易感者数目与此环境内易感者总数S (t )成正比,比例系数为β,从而在t 时刻单位时间内被所有病人传染的人数为βS (t )I (t )。 2、SIS 模型的建立基于以下三个假设,求出平衡点,给出参数,图示模型曲线。
(1)不考虑人口的出生、死亡、流动等种群动力因素。人口始终保持一个常数。即N (t )≡K 。
(2)一个病人一旦与易感者接触就必然具有一定的传染力。假设t 时刻单位时间内,一个病人能传染的易感者数目与此环境内易感者总数S (t )成正比,比例系数为β,从而在t 时刻单位时间内被所有病人传染的人数为βS (t )I (t )。
(3)t 时刻,单位时间内从染病者中治愈的人与病人数量成正比,比例系数为γ,单位时间内治愈的人不具有免疫,将再成为易感者。
3、SIR 模型的建立基于以下三个假设,求出平衡点、给出参数、图示模型曲线。
(1)不考虑人口的出生、死亡、流动等种群动力因素。人口始终保持一个常数,即N (t )≡K 。
(2)一个病人一旦与易感者接触就必然具有一定的传染力。假设t 时刻单位时间内,一个病人能传染的易感者数目与此环境内易感者总数S (t )成正比,比例系数为β,从而在t 时刻单位时间内被所有病人传染的人数为βS (t )I (t )。
(3)t 时刻,单位时间内从传染者中移出的人数与病人数量成正比,比例系数为γ,单位时间内移出者的数量为γI (t ) 。
求解过程
1、SI 模型:由题目条件假设可以得到微分方程:
K
dI
dt
=K βS (t ) I (t ) ,又因为S (t ) +I (t ) =1, 令初始时刻病人的比例为I 0,则有:
dI
dt
=βI (t )(1-I (t )), I (0)=I 0 %求平衡点,r 为有效传染率,x 病人比例 syms r x
solve('r*x*(1-x)','x') ans = 0 1 %方程求解
syms i r t dsolve('Di=r*i*(1-i)','i(0)=i0','t')
ans =
1/(1-exp(-r*t)*(-1+i0)/i0) %绘制图形
r=0.5,i0=0.01 fplot('1/(1-exp(-r*t)*(-1+i0)/i0)',[0,40]) fplot('1/(1-exp(-0.5*t)*(-1+0.01)/0.01)',[0,40]) function di=isf(t,i)di=0.5*i*(1-i); [t,i]=ode45(@isf,[0 40],[0.01]);plot(t,i)
t
4 SI 模型的i~t曲线 图示5 SI 模型的di/dt~i曲线
2、SIS 模型 根据SI 模型及增加的假设条件,可得:
K
di
dt
=βKS (t ) I (t ) -γKI (t ) ,即: di
dt
=βI (t )(1-I (t )) -γI (t ), I (0) =I 0 记 σ=
β
γ
, 则方程改写为 di 1dt =-βi [i -(i -σ)]
i
图示
%求解方程
syms r b i t % b 为有效传染率,r 为治愈率 dsolve('Di=b*i*(1-i)-r*i','i(0)=i0','t') ans =
(b-r)/(b-exp(-(b-r)*t)*(-b+r+i0*b)/i0/(b-r)*b+exp(-(b-r)*t)*(-b+r+i0*b)/i0/(b-r)*r)
%求平衡点
syms x %(b=0.5,r=0.2) solve('0.5*x*(1-x)-0.2*x; ') ans =
0. .[***********][1**********]000 %绘制图形
function di=sisf(t,i) di=0.5*i*(1-i)-0.2*i;
[t,i]=ode45(@sisf,[0 40],[0.01]); plot(t,i)
t
t
图示6 SIS 模型的i~t曲线(σ>1) 图示7 SIS 模型的i~t曲线(σ≤1)
fplot('-0.5*x*[x-(1-1/20)]',[0,1]) fplot('-0.5*x*[x-(1-2)]',[ 0,1])
i
i
图示8SIS 模型的di/dt~i曲线(σ>1) 图示9SIS 模型的di/dt~i曲线(σ≤1) 3、 SIR 模型
dI
=βS (t ) I (t ) -γI (t ), I (0)=I 0dt
dS
=-βS (t ) I (t ), S (0)=S 0dt
模型的方程为{
function dx=sirf(t,x) dx=zeros(2,1);
dx(1)=0.5*x(1)*x(2)-0.2*x(1); %x(1)表示i,x(2)表示s dx(2)=-0.5*x(1)*x(2);
[t,x]=ode45(@sirf,[0 50],[0.01 0.99]); plot(t,x(:,1),t,x(:,2)),grid,pause plot(x(:,2),x(:,1)),grid
0.20.40.60.81
s
图示10 SIR 模型的I (t ), S (t ) 图形 图示11 SIR 模型的相轨线
备注:由于Matlab 与Word 连接不好,所绘制的图形上标的字符在Word 中看不清楚。