您的当前位置:首页正文

传染病模型SI、SIS、SIR

2024-03-16 来源:好走旅游网


SI模型

利用MATLAB求解传染病模型中的SI模型的解析解:

程序中a即λ,y即i

>> y=dsolve('Dy=a*(y-y^2)','y(0)=y0')

y =

1/(1-exp(-a*t)*(-1+y0)/y0)

画图:SI模型的i~t曲线

设λ=1, i(0)=0.1

>> y=dsolve('Dy=y-y^2','y(0)=0.1')

y =

1/(1+9*exp(-t))

>> x=0:0.01:13;

y=1./(1+9.*exp(-x));

>> plot(x,y)

title('SI模型的i~t曲线');

xlabel('t');

ylabel('i');

axis([0 13 0 1.1]);

画图:SI模型的di/dt~i曲线

程序中x即i,y即di/dt,λ=1

>> x=0:0.01:1;

y=x-x.*x;

>> plot(x,y)

title('SI模型的di/dt~i曲线');

xlabel('i');

ylabel('di/dt');

>>

SIS模型

利用MATLAB求解传染病模型中的SIS模型的解析解:

程序中a即λ,b即μ,y即i

>> y=dsolve('Dy=a*(y-y^2)-b*y','y(0)=y0')

y =

(a-b)/(a-exp(-(a-b)*t)*(-a+b+y0*a)/y0/(a-b)*a+exp(-(a-b)*t)*(-a+b+y0*a)/y0/(a-b)*b)

画图:SIS模型的di/dt~i曲线(δ>1)

程序中x即i,y即di/dt,λ=1,μ=0.3

>> x=0:0.01:1;

>> y=0.7.*x-x.^2;

>> plot(x,y)

title('SIS模型的di/dt~i曲线');

xlabel('i');

ylabel('di/dt');

>>

画图:SIS模型的i~t曲线(δ>1)

设λ=1,μ=0.3,i(0)=0.02

>> y=dsolve('Dy=0.7*y-y^2','y(0)=0.02')

y =

7/(10+340*exp(-7/10*t))

>> x=0:1:16;

>> y=7./(10+340.*exp(-7./10.*x));

>> plot(x,y)

title('SIS模型的i~t曲线');

xlabel('t');

ylabel('i');

>>

画图:SIS模型的di/dt~i曲线(δ≤1)

程序中x即i,y即di/dt,λ=0.5,μ=0.6

>> x=0:0.01:1;

>> y=-0.5.*x.^2-0.1.*x;

>> plot(x,y)

title('SIS模型的di/dt~i曲线');

xlabel('i');

ylabel('di/dt');

>>

画图:SIS模型的i~t曲线(δ≤1)

设λ=0.5,μ=0.6,i(0)=0.02

>> y=dsolve('Dy=-0.5*y^2-0.1*y','y(0)=0.02')

y =

1/(-5+55*exp(1/10*t))

>> x=0:1:40;

>> y=1./(-5+55.*exp(1./10.*x));

>> plot(x,y)

title('SIS模型的i~t曲线');

xlabel('t');

ylabel('i');

>>

SIR模型

利用MATLAB求解传染病模型中的SIR模型的数值解:

程序中a=λ=1, b=μ=0.3,i(0)=0.02,s(0)=0.98

M文件中:

function y=ill(t,x)

a=1;b=0.3;

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

命令窗口中:

>> [t,x]=ode45('ill',[0:50],[0.02,0.98]);[t,x]

ans =

0 0.0200 0.9800

1.0000 0.0390 0.9525

2.0000 0.0732 0.9019

3.0000 0.1285 0.8169

4.0000 0.2033 0.6927

5.0000 0.2795 0.5438

6.0000 0.3312 0.3995

7.0000 0.3444 0.2839

8.0000 9.0000 10.0000 11.0000 12.0000 13.0000 14.0000 15.0000 16.0000 17.0000 0.3247 0.2863 0.2418 0.1986 0.1599 0.1272 0.1004 0.0787 0.0614 0.0478 0.2027

0.1493

0.1145

0.0917

0.0767

0.0665

0.0593

0.0543

0.0507

0.0480

18.0000 0.0371 0.0460

19.0000 0.0287 0.0445

20.0000 0.0223 0.0434

21.0000 22.0000 23.0000 24.0000 25.0000 26.0000 27.0000 28.0000 29.0000 30.0000 0.0172 0.0133 0.0103 0.0079 0.0061 0.0047 0.0036 0.0028 0.0022 0.0017 0.0426

0.0419

0.0415

0.0411

0.0408

0.0406

0.0404

0.0403

0.0402

0.0401

31.0000 0.0013 0.0400

32.0000 0.0010 0.0400

33.0000 0.0008 0.0400

34.0000 35.0000 36.0000 37.0000 38.0000 39.0000 40.0000 41.0000 42.0000 43.0000 0.0006 0.0005 0.0004 0.0003 0.0002 0.0002 0.0001 0.0001 0.0001 0.0001 0.0399

0.0399

0.0399

0.0399

0.0399

0.0399

0.0399

0.0399

0.0399

0.0399

44.0000 0.0000 0.0398

45.0000 0.0000 0.0398

46.0000 0.0000 0.0398

47.0000 0.0000 0.0398

48.0000 0.0000 0.0398

49.0000 0.0000 0.0398

50.0000 0.0000 0.0398

>> plot(t,x(:,1),t,x(:,2)),grid,pause

i(t),s(t)图形如下:

>> plot(x(:,2),x(:,1)),grid,pause

i~s图形(相轨线)如下:

画图:SIR模型的相轨线

程序中y即i, x即s, λ=1,μ=0.3

① s(0)=0.32;

② s(0)=0.58;

③ s(0)=0.73;

④ s(0)=0.85

>> x=0:0.01:1;

>> y=1-x;

>> y1=1-x+0.3.*(log(x)-log(0.32));

>> y2=1-x+0.3.*(log(x)-log(0.58));

>> y3=1-x+0.3.*(log(x)-log(0.73));

>> y4=1-x+0.3.*(log(x)-log(0.85));

>> plot(x,y,x,y1,x,y2,x,y3,x,y4)

axis([0 1 0 1]);

title('SIR模型的i~s曲线');

xlabel('s');

ylabel('i');

因篇幅问题不能全部显示,请点此查看更多更全内容