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
1.0000
2.0000
3.0000
4.0000
5.0000
6.0000
7.0000
8.0000
9.0000
10.0000
11.0000
12.0000
13.0000
14.0000
15.0000
16.0000
17.0000
18.0000
19.0000
20.0000
21.0000
22.0000
23.0000
24.0000
25.0000
26.0000
27.0000
28.0000
29.0000
30.0000
31.0000
32.0000
0.0200
0.0390
0.0732
0.1285
0.2033
0.2795
0.3312
0.3444
0.3247
0.2863
0.2418
0.1986
0.1599
0.1272
0.1004
0.0787
0.0614
0.0478
0.0371
0.0287
0.0223
0.0172
0.0133
0.0103
0.0079
0.0061
0.0047
0.0036
0.0028
0.0022
0.0017
0.0013
0.0010
0.9800
0.9525
0.9019
0.8169
0.6927
0.5438
0.3995
0.2839
0.2027
0.1493
0.1145
0.0917
0.0767
0.0665
0.0593
0.0543
0.0507
0.0480
0.0460
0.0445
0.0434
0.0426
0.0419
0.0415
0.0411
0.0408
0.0406
0.0404
0.0403
0.0402
0.0401
0.0400
0.0400
33.0000
34.0000
35.0000
36.0000
37.0000
38.0000
39.0000
40.0000
41.0000
42.0000
43.0000
44.0000
45.0000
46.0000
47.0000
48.0000
49.0000
50.0000
0.0008
0.0006
0.0005
0.0004
0.0003
0.0002
0.0002
0.0001
0.0001
0.0001
0.0001
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
0.0000
0.0400
0.0399
0.0399
0.0399
0.0399
0.0399
0.0399
0.0399
0.0399
0.0399
0.0399
0.0398
0.0398
0.0398
0.0398
0.0398
0.0398
0.0398
>> plot(t,x(:,1),t,x(:,2)),grid,pause
i(t),s(t)图形如下:
>> plot(x(:,2),x(:,1)),grid,pause
i~s 图形(相轨线)如下: