传染病模型SISISSIR.docx
《传染病模型SISISSIR.docx》由会员分享,可在线阅读,更多相关《传染病模型SISISSIR.docx(12页珍藏版)》请在冰豆网上搜索。
传染病模型SISISSIR
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([01301.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文件中:
functiony=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=
00.02000.9800
1.00000.03900.9525
2.00000.07320.9019
3.00000.12850.8169
4.00000.20330.6927
5.00000.27950.5438
6.00000.33120.3995
7.00000.34440.2839
8.00000.32470.2027
9.00000.28630.1493
10.00000.24180.1145
11.00000.19860.0917
12.00000.15990.0767
13.00000.12720.0665
14.00000.10040.0593
15.00000.07870.0543
16.00000.06140.0507
17.00000.04780.0480
18.00000.03710.0460
19.00000.02870.0445
20.00000.02230.0434
21.00000.01720.0426
22.00000.01330.0419
23.00000.01030.0415
24.00000.00790.0411
25.00000.00610.0408
26.00000.00470.0406
27.00000.00360.0404
28.00000.00280.0403
29.00000.00220.0402
30.00000.00170.0401
31.00000.00130.0400
32.00000.00100.0400
33.00000.00080.0400
34.00000.00060.0399
35.00000.00050.0399
36.00000.00040.0399
37.00000.00030.0399
38.00000.00020.0399
39.00000.00020.0399
40.00000.00010.0399
41.00000.00010.0399
42.00000.00010.0399
43.00000.00010.0399
44.00000.00000.0398
45.00000.00000.0398
46.00000.00000.0398
47.00000.00000.0398
48.00000.00000.0398
49.00000.00000.0398
50.00000.00000.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
1s(0)=0.32;
2s(0)=0.58;
3s(0)=0.73;
4s(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([0101]);
title('SIR模型的i~s曲线');
xlabel('s');
ylabel('i');