最新SI.SIR.SIS 模型资料

更新时间:2023-10-07 10:34:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

精品文档

数学模型实验—实验报告10

学院: 专 业: 姓 名: 学号:___ ____ 实验时间:__ ____ 实验地点:

一、实验项目:传染病模型求解

二、实验目的和要求

a.求解微分方程的解析解

b.求解微分方程的数值解

三、实验内容

问题的描述

各种传染病给人类带来的巨大的灾难,长期以来,建立传染病的数学模型来描述传染病的的传播过程,分析受感染人数的变化规律,探索制止传染病蔓延的手段等,一直是各国有关专家和官员关注的课题。

不同类型传染病有各自不同的特点,在此以一般的传播机理建立几种3模型。分别对3种建立成功的模型进行模型分析,便可以了解到该传染病在人类间传播的大概情况。

模型一(SI模型):

(1)模型假设

1.在疾病传播期内所考察地区的总人数N不变,人群分为健康人和病人,时刻t这两类人在总人数中所占比例为s(t)和i(t)。

2.每个病人每天有效接触的平均人数是常数a,a成为日接触率,当病人与健康者有效接触时,可使其患病。

(2)建立模型

根据假设,每个病人每天可使as(t)个健康人变成病人,t时刻病人数为Ni(t),所以每天共有aNs(t)i(t)个健康者被感染,即病人的增加率为: Ndi/dt=aNsi 又因为s(t)+i(t)=1

再记时刻t=0时病人的比例为i0 则建立好的模型为:

di?ai(1?i) dt

i(0)=i0

(3)模型求解 (代码、计算结果或输出结果)

syms a i t i0 % a:日接触率,i:病人比例, s:健康人比例,i0:病人比例在t=0时的值

i=dsolve('Di=a*i*(1-i)','i(0)=i0','t'); y=subs(i,{a,i0},{0.3,0.02}); ezplot(y,[0,100]) figure 精品文档

精品文档

i=str2double(i); i=0:0.01:1; y=0.3*i.*(1-i); plot(i,y)

SI模型的i~t曲线 SI 模型的di/dt~i 曲线

(4)结果分析

由上图可知,在i=0:1内,di/dt总是增大的,且在i=0.5时,取到最大值,即在t->inf时,所有人都将患病。

上述模型显然不符合实际,为修正上述结果,我们重新考虑模型假设,建立SIS 模型

模型二(SIS模型) (1) 模型假设

假设条件1.2与SI模型相同;

3.每天被治愈的病人数占病人总数的比例为常数u,成为日治愈率,病人治愈后成为仍可被感染的健康者。显然1/u是平均传染期。

(2)模型建立

病人的增加率:Ndi/dt=aNsi-uNi 且 i(t)+s(t)=1; 则有: di/dt=ai(1-i)-ui

在此定义k=a/b,可知k是整个传染传染期内每个病人有效接触的平均人数,成为接触数。 则建立好的模型为:

di??ai[i?(1?1/k)] dti(0)=i0;

(2) 模型求解 (代码、计算结果或输出结果)

>> syms a i u t i0 % a:日接触率,i:病人比例,u:日治愈率,i0:病人比例在t=0时的值 >> dsolve('Di=a*i*(1-i)-u*i','i(0)=i0','t') % 求用u表示的i—t解析式 >> syms k % k:接触数 >> k=a/u;

>> i=dsolve('Di=-a*i*i+a*i*(1-1/k)','i(0)=i0','t') % 求用k表示的i—t解析式 % 给k、a、i0指定特殊值,作出相关图像 精品文档

精品文档

>> y=subs(i,{k,a,i0},{2,0.3,0.02}); %①k>1的情况,以k=2为例 >> ezplot(y,[0,100])

>>pause %作i—t图,分析随时间t的增加, i的变化 >> gtext('1/k') >>legend('k>1 本例中k=2') >>figure

>> i=str2double(i); >> i=0:0.01:1;

>> y=-0.3*i.*[i-1/2];

>> plot(i,y) %作di/dt—i的图像 >> gtext('1-1/k,在此图中为0.5') >> legend('k=2')

>> y=subs(i,{k,a,i0},{0.8,0.3,0.02}); %②k<1 的情况,以k=0.8为例

>> ezplot(y,[0,100]) %作i—t图,分析随时间t增加,i的变化 >> legend('k<1 本例中k=0.8') >>figure

>> i=str2double(i); >> i=0:0.01:1;

>> y=-0.3*i.*[i-(1-1/0.8)];

>> plot(i,y) %作di/dt—i 的图像 >> legend('k=0.8')

>> gtext('k<=1时的情况)

SIS 模型的di/dt—i曲线 (k>1) SIS模型的i—t曲线(k>1)

精品文档

精品文档

SIS 模型的di/dt—i曲线 (k<1) SIS模型的i—t曲线(k<1) (4)结果分析

不难看出,接触数k=1是一个阈值,当k>1时,i(t)的增减性取决于i0的大小,但其极限值

i(∞)=1-1/k随k的增加而增加;当k<=1时,病人比例i(t)越来越小,最终趋于0,这是由于传染期内经有效解除从而使健康者变为的病人数不超过原来病人数的缘故。

模型三.SIR模型 (1)模型假设

1.总人数N不变,人群分为健康者、病人和病愈免疫的移出者三类,称SIR模型。时刻t三类人在总人数N中占得比例分别记作s(t),i(t)和r(t)。

2.病人的日接触率为?,日治愈率为?(与SI模型相同),传染期接触数为???/?。

(2)模型建立

由假设1显然有

s(t)?i(t)?r(t)?1 (1)

对于病愈免疫的移出者而言应有

Ndr??Nidt (2)

再记初始时刻的健康者和病人的比例分别是s0(s0>0)和i0(i0>0)(不妨设移出者的初始值r0=0),则SIR模型的方程可以写作

?di??si??i,i(0)?t0??dt??ds???si,s(0)?s0??dt (3) (3)模型求解

我们无法求出解析解,先做数值计算:

设??1,??0.3,i(0)?0.02,s(0)?0.98,用MATLAB软件编程: 精品文档

精品文档

function y=ill(t,x) a=1;b=0.3;

y=[a*x(1)*x(2)-b*x(1), -a*x(1)*x(2)]';

ts=0:50;

x0=[0.02,0.98];

[t,x]=ode45('i11',ts,x0);[t,x] plot(t,x(:,1),t,x(:,2)),grid,pause plot(x(:,2),x(:,1))

表1 i(t),s(t)的数值计算结果

t i(t) s(t) t i(t) s(t) 0 1 0.0200 0.0390 0.9525 0.9800 9 10 0.2863 0.2418 0.1493 0.1145 2 0.0732 0.9019 15 0.0787 0.0543 3 0.1285 0.8169 20 0.0223 0.0434 4 5 0.2033 0.2795 0.5438 0.6027 25 30 0.0061 0.0017 0.0408 0.0401 6 7 8 0.3312 0.3444 0.3247 0.3995 35 0.0005 0.0399 0.2839 0.2027 40 45 0.0001 0 0.0399 0.0398

i(t),s(t)的图形 i—s图形(相轨线)

(4)结果分析

i(t),s(t)的图形见左图, i~s的图形见右图,称为相轨线,随着t的增加,(s,i)沿轨线自右向左运动。

由上图结合表1可知,i(t)由初值增长至约t?7时达到最大值,然后减少,t??,t?0;s(t)则单调精品文档

本文来源:https://www.bwwdw.com/article/276d.html

Top