文档库

最新最全的文档下载
当前位置:文档库 > matlab传染病模型

matlab传染病模型

传染病模型实验

实验目的:

理解传染病的四类模型,学会利用Matlab软件求解微分方程(组)。

实验题目:

利用Matlab求解传染病的SIS微分方程模型,并绘制教材P139页图3-图6。

SIS模型

假设:

(1)、t时刻人群分为易感者(占总人数比例的s(t))和已感染者(占总人数比例的i(t))。

(2)、每个病人每天有效接触的平均人数是常数λ,λ称为日接触率,当健康者与病人接触时,健康者受感染成为病人。

(3)、病人每天被治愈的占病人总数的比例为μ,称为日治愈率,显然1

μ

这种传染病的平均传染期。

则建立微分方程模型为:

matlab传染病模型

令,则模型可写作

matlab传染病模型

matlab传染病模型

分别作图:

当sigma>1时

Step1:先定义函数

function y=pr1(i,lambda,sigma)

y=-lambda.*i.*(i-(1-1./sigma))

step2:作图

lambda=0.3;sigma=2;

i=0:0.01:1;

y=pr1(i,lambda,sigma)

plot(i,y)

00.10.20.30.40.50.60.70.80.91

-0.16

-0.14-0.12-0.1-0.08-0.06-0.04-0.020

matlab传染病模型

0.02

当sigma<1时

Step1:先定义函数

function y=pr1(i,lambda,sigma) y=-lambda.*i.*(i-(1-1./sigma))

step2:作图

lambda=0.3;sigma=0.5; i=0:0.01:1;

y=pr1(i,lambda,sigma) plot(i,y)

00.10.20.30.40.50.60.70.80.91

-0.7

-0.6

-0.5

-0.4

-0.3

-0.2

-0.1

matlab传染病模型

当sigma=1时

Step1:先定义函数

function y=pr1(i,lambda,sigma) y=-lambda.*i.*(i-(1-1./sigma))

step2:作图

lambda=0.3;sigma=1; i=0:0.01:1;

y=pr1(i,lambda,sigma) plot(i,y)

00.10.20.30.40.50.60.70.80.91

-0.35

-0.3

-0.25

-0.2

-0.15

-0.1

-0.05

matlab传染病模型

当sigma>1时 Step1:先定义函数

function di=crb(t,i,lambda,sigma)

di=-lambda*i*(i-(1-1/sigma)) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

step2:求解并作图 clc clear

lambda=0.01; sigma=2;

[t,i1]=ode45(@crb,[0,1000],0.9,[],lambda,sigma); [t,i2]=ode45(@crb,[0,1000],0.2,[],lambda,sigma); plot(t,i1,t,i2,t,1/2) legend('\sigma>1')

matlab传染病模型

01002003004005006007008009001000

当sigma=1时

Step1:先定义函数

function di=crb(t,i,lambda,sigma)

di=-lambda*i*(i-(1-1/sigma)) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

step2:求解并作图

clc

clear

lambda=0.01;

sigma=1

[t,i1]=ode45(@crb,[0,1000],0.9,[],lambda,sigma);

plot(t,i1)

legend('\sigma=1')

100

200

300

400

500

600

700

800

900

1000

00.10.20.30.40.50.60.70.80.91

matlab传染病模型

当sigma<1时 Step1:先定义函数

function di=crb(t,i,lambda,sigma)

di=-lambda*i*(i-(1-1/sigma)) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

step2:求解并作图 clc clear

lambda=0.01; sigma=0.5;

[t,i1]=ode45(@crb,[0,1000],0.9,[],lambda,sigma); plot(t,i1) legend('\sigma<1')

01002003004005006007008009001000

-0.2

0.2

0.4

0.6

0.8

1

1.2

matlab传染病模型

利用matlab 求解上面SIS 模型. 提示(画图5程序): Step1:先定义函数

function y=pr1(i,lambda,sigma) y=-lambda.*i.*(i-(1-1./sigma))

step2:作图

lambda=0.3;sigma=2; i=0:0.01:1;

y=pr1(i,lambda,sigma)

plot(i,y)

提示(画图6程序): Step1:先定义函数

function di=crb(t,i,lambda,sigma)

di=-lambda*i*(i-(1-1/sigma)) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

step2:求解并作图 clc clear

lambda=0.01; sigma=0.2;

[t,i]=ode45(@crb,[0,100],0.9,[],lambda,sigma); plot(t,i)

legend('\sigma<1')

实验指导书:

利用matlab 求下面定解问题,并作图

d 2(3)d (0)2y

y y y

x

y ?=--???=? 程序

f=@(x,y)(2*y*(3-y)-y);

[x,y]=ode45(@(x,y)f(x,y),[0,10],0.9); plot(x,y)

legend('数值解 1');