1.实验7-1传染病模型2
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
河北大学《数学模型》实验实验报告
、实验目得
二、实验要求
1.实验71传染病模型2( SI 模型)一一画di/dt~ i 曲线图 (参
考教材P137138)
传染病模型2( SI 模型):
di/dt=ki (1i ),i (O )=i o ;
其中,i (t ) 就是第t 天病人在总人数中所占得比例。
入就是每个
病人每天有效接触得平均人数 i0就是初始时刻(t=0)病人得比例。
取k=0、1,画出di/dt~ i 曲线图,求i 编写一个m 文件来实现。
参考程序运行结果(在图形窗口菜单选择
(日接触率)0
为何值时di/dt 达到最大值,并在曲线图上标注。
试 Edit/Copy Figure,复制图形):
[提示]
1) 画曲线图 用fplot 函数,调用格式如下:
fplot(fu n,lims)
fun 必须为一个M 文件得函数名或对
变量
若 lims
若 lims
本题可用
fplot('0 2) 求最大
值
用求解边界约束条件下得非线性最小化函数 fminbnd,调用格式如下:
x=fminbnd( ‘ fun ' ,x1,x2)
fun 必须为一个M 文件得函数名或对变量x 得可执行字符串。
返回自变量x 在区间x1<x<x2上函数取最小值时得x 本题可用 x=fminbnd('0、1*x*(1x)',0,1)
y=0、1*x*(1x)
4)指示最大值坐标
用线性绘图函数plot,调用格式如下:
plot(x1,y1,'颜色 线型 数据点图标’,x2,y2,'颜色 线型 数据点图标’,…) 说明参见《数学实验》
P 225
x 得可执行字符串。
取[xmin xmax ],则x 轴被限制在此区间上。
取[xmin xmax ymin ymax ], 贝U y 轴也被限制。
、1*x*(1x)',[0 1 、1 0 0、03]);
值。
本题可用
hold on; %在上面得同一张图上画线(同坐标系)
plot([0,x],[y,y], ':' ,[x,x],[0,y], ':' );
3) 图形得标注 使用文本标注函数 text, 调用格式如下 : 格式 1 text(x,y, 文本标识内容 , ' HorizontalAlignment ' , '字符串 1 ' ) x,y 给定标注文本在图中添加得位置。
' HorizontalAlignment '为水平控制属性 , 控制文本标识起点位于点 (x,y) 同一水平线 上。
'字符串
‘ left '
‘ center
‘ right ,点(x,y)位于文本标识得右边。
格式 2 text(x,y, 文本标识内容 , '
VerticalAlignment ' , '字符串 2 ' ) x,y 给定标注文本在图中添加得位置。
' VerticalAlignment '为垂直控制属性 , 控制文本标识起点位于点 (x,y) 同一垂直线上。
'字符串 1 ' 为垂直控制属性值 , 取四个值之一 :
‘middle ' , ' top ' , ' cap ' , ' baseline ' , ' bottom '。
(对应位置可在命令窗口应用 确 定)
本题可用 text(0,y,'(di/dt)m','VerticalAlignment','bottom'); text(x,0 、
001,num2str(x),'HorizontalAlignment','center');
4) 坐标轴标注 调用函数 xlabel, ylabel 本题可用 title('SI 模型 di/dt~i xlabel('i'); ylabel('di/dt'); 2. 实验 72 传染病模型 ( 参考教材 p137138) 传染病模型 2( SI 模
型 ): di/dt=ki(1i),i(0)=i 0;
其中 , i(t)就是第t 天病人在总人数中所占得比例。
k 就是每个病人每天有效接触得平均人数
( 日接触率 ) 。
iO 就是初始时刻(t=0)病人得比例
求出微分方程得解析解 i(t) , 画出如下所示得 i~t 曲线( i(0)=0 、15, k=0、2,
t=0~30 ) 。
试编写一个 m 文件来实现。
( 在图形窗口菜单选择 Edit/Copy Figure , 复制 图形)
1 ' 为水平控制属性值 , 取三个值之一 : , 点 (x,y) 位于文本标识得左边。
',点(x,y)位于文本标识得中心点。
与 title
曲线');
2( SI 模型 ) ——画 i~t 曲线图
[提示]
1) 求解微分方程 常微分方程符号解用函数dsolve,调用格式如下:
dsolve ( ‘ equ1' , ' equ2',…,'变量名')
以代表微分方程及初始条件得符号方程为输入参数,多个方程或初始条件可在一个输入 变量内联立输入,且以逗号分隔。
默认得独立变量为t,也可把t 变为其她得符号变量。
字符D 代表对独立变量得微分,通常指d/dt 。
本题可用
x=dsolve ( ‘ Dx=k*x*(1x ) ' , ' x (0)=x0 ')
2) 画出 i~t 曲线(i (0)=0 、15,入=0、2, t=0~30)
用 for 循环,函数 length, eval, plot, axis, title, xlabel, ylabel
3. 实验73传染病模型3( SIS 模型)一一画di/dt~ i 曲线图
(参考教材P138139)
已知传染病模型3( SIS 模型):
di/dt= i [i (11/ )],i (0)=i 0
其中,
i (t )就是第t 天病人在总人数中所占得比例。
入就是每个病人每天有效接触得平均人数(日接触率)。
i0就是初始时刻(t=0)病人得比例。
C 就是整个传染期内每个病人有效接触得平均人数 (接触数)。
取入=0、1, (T =1、5,画出如下所示得di/dt~ i 曲线图。
试编写一个m 文件来实现。
(在 图
t
(天
〈
更
24.P
圧
Y
瞟〉一
形窗口菜单选择Edit/Copy Figure, 复制图形)
[提示]
用fplot函数画出di/dt~ i曲线图;在上图上用plot函数画一条过原点得水平
用title, xiabel, ylabel 标注。
4.实验74传染病模型3( SIS模型)—
画i~t曲线图
(参考教材P138139)
已知传染病模型3( SIS 模型):
di/dt= i[i(11/ )],i(0)=i 0
其中,
i(t)就是第t天病人在总人数中所占得比例。
入就是每个病人每天有效接触得平均人数(日接触率)。
i0就是初始时刻(t=0)病人得比例。
d就是整个传染期内每个病人有效接触得平均人数(接触数)。
实验要求:
求出微分方程得解析解i(t)。
取入=0、2,(7=3, t=0~40,画出如下所示得图形。
试编写一个m文件来实现。
ds/dt= si s(0)=s 0
实验要求:
1.设入=,口=0、3, i (0)=0 、02, s (0)=0 、98 o 输入p 139得程序,并修改程序中 得[t,x ],使得输出得数据格式如下(提示:取4位小数,使用四舍五入取整函数round, 矩阵剪裁与拼接):
ans =
Colum ns 1 through 6
0 1 2 3 4 5
0、02 0、039 0、0732 0、1285 0、2033 0、2795
0、98 0、9525 0、9019 0、8169 0、6927 0、5438 Colum ns 7 through 12
其中
蓝色实线为i (0)=0、 黑色虚点线为过点( 红色虚线为i (0)=0、 [提示]
图例标注可用
legend ('i (0)=0 、2','11/| 5. 实验75传染病模型
2时得i~t 曲线(第1条);
0, 11/b )得水平线(第2条);
9时得i~t 曲线(第3条)0
(r','i(0)=0
、9');
4( SIR 模型) SIR 模型得方程:di/dt=
si i i(0)=i 0
t (天
)
〈
更
24.P
圧
Y
瞟〉
一
2. 运行结果与教材P140得内容比较。
[提示] 1)求解微分方程得数值解函数ode45,格式如下:
[t,x]=ode45('fu n',ts,x0)
fun 就是由一个或多个待解方程写成得函数式—m 文件;
ts=[t0,tf] 表示此微分方程得积分限就是从t0到tf,也可以就是一些离散 得点,形式
为 ts=[t0,t1, …,tf];
x0为初值条件。
2)等待用户反应命令Pause:程序执行到该命令时暂停,直到用户按任意键后 继续(处
在命令窗口有效)。
三、实验内容
1. 实验71传染病模型2( SI 模型) 在
matlab 中建立M 文件fun1、m 代码如下:
function y=fun(x)
k=0、1;
y=k*x*[1x];
Fun2、m 代码如下: function y=fun(x)
k=0、1;
y=k*x*[1x];
在命令行输入以下代码:
fplot('fun1',[0 1 、1 0 0、03]);
x=fmi nbn d('fu n2',0,1);
y=0、1*x*(1x);
hold on;
plot([0,x],[y,y],'',[x,x],[0,y],''); text(0,y,'(di/dt)m','VerticalAlig nmen t','bottom');
text(x,0 、001,num2str(x),'HorizontalAlignment','center'); title('SI 模型 di/dt~i 曲线');
xlabel('i'); ylabel('di/dt'); hold off 6 7 8 9 10 15
0、3312 0、3444 0、3247 0、 0、3995 0、2839 0、2027 0、
Colum ns 13 through 18 20 25 30 35 40 45
0、0223 0、0061 0、0017 0、
0、0434 0、0408 0、0401 2863 0、 1493 0、 0005 0、 24180、 0787 1145 0、0543 0001 0 0、0399 0、0399 0、0398
画di/dt~ i 曲线图
2. 实验72 传染病模型2( SI 模型) 在matlab中建立M文件fun22、m 代码如下: k=0、2; x0=0、15;
x=dsolve('Dx=k*x*(1x)','x(0)=x0');
tt=linspace(0,31,1001);
for i=1:1001 t=tt(i); xx(i)=eval(x); end plot(tt,xx) axis([0,31,0,1 、1]);
title(' 图 1 SI 模型i~t 曲线');
xlabel('t( 天)'); ylabel('i( 病人所占比例)'); 在命令行输入以下代码: fun22; 3. 实验73 传染病模型3( SIS 模型) 在matlab中建立M文件fun3、m 代码如下: function y=fun(x) a=0、1; b=1、5;
y=a*x*[x(11/b)]; 在命令行输入以下代码: fplot('fun3',[0 0 、 4 0、0005 0、003]);
x=fminbnd('fun3',0,1);
title('SIS 模型di/dt~i 曲线');
xlabel('i');
ylabel('di/dt'); >> hold on >> plot([0,0
、4],[0,0])
4. 实验74 传染病模型3( SIS 模型) ——在matlab中建立M文件fun4、m 代码如下: function y=fun(x) x=dsolve('Dx=0 、
2*x*(x(11/3))','x(0)=0
tt=linspace(0,41,1001);
for i=1:1001 t=tt(i); xx(i)=eval(x); end plot(tt,xx); 画i~t 曲线图
画di/dt~ i 曲线图画i~t 曲线图
、2');
hold on;
plot([0,40],[11/3,11/3],'k');
x=dsolve('Dx=0 、2*x*(x(11/3))','x(0)=0 、9');
tt=linspace(0,41,1001);
for i=1:1001
t=tt(i);
xx(i)=eval(x);
end
plot(tt,xx,'r');
axis([0,40,0,1]);
titleC 图 1 SI 模型i~t 曲线(入=0、2, (T =3)');
xlabel('t( 天)');
ylabel('i( 病人所占比例)');
legend('i(0)=0 、2','11/ T ','i(0)=0 、9');
在命令行输入以下代码:
fun4;
5. 实验75 传染病模型4( SIR 模型)
在matlab中建立M文件fun5、m
代码如下:
function y=fun(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('fun5',ts,x0);
>> plot(t,x(:,1),t,x(:,2)),grid,pause
>> plot(x(:,2),x(:,1)),grid,
四、实验结果及其分析
1. 实验71 传染病模型2( SI 模型)——画di/dt~ i 曲线图
分析:
当i=1/2时di/dt达到最大值(di/dt)m,这时病人增加得在最快,可以认为就是医院得门诊量最大得一天,预示着传染病高潮得到来,就是医疗卫生部门关注得时刻。
当t趋近于无穷时i 趋近于1,即所有人终将被传染,全部变成病人,着显然不符合实际。
原因就是模型中没有考虑到病人可以治愈,人群中得健康者只能变成病人,病人不会再变成健康者。
2.实验72传染病模型2( SI模型)一一画i~t曲线图
分析:
当i=1/2时di/dt 达到最大值(di/dt ) m ,这时病人增加得在最快,可以认为就是医院得门诊 量最大得一天,预示着传染病高潮得到来,就是医疗卫生部门关注得时刻。
当t 趋近于无穷时i 趋近于1,即所有人终将被传染,全部变成病人,着显然不符合实际。
原因就是模型中没有考虑 到病人可以治愈,人群中得健康者只能变成病人,病人不会再变成健康者。
3. 实验73传染病模型3( SIS 模型)一一画di/dt~ i 曲线图
t
(天〈
更
24.P
圧
Y
瞟〉一
分析:
个阈值,当>1时,i (t )得增减性取决于iO 得大小,但其极限值i (无穷)=11/,随得增
加而增 加(试从得含义给予解释);当<=1时病人得比例i (t )越来越小。
最终趋近于
0,这就是由于传染期 内经有效接触从而使健康者变成病人数不超过原来得病人数得缘故。
4. 实验74传染病模型3( SIS 模型
)就是 画i~t 曲线图
分析: 就是一个阈值,当>1时,i (t )得增减性取决于 加(试从得含义给予解释);当<=1时,病
人得比例 内经有效接触从而使健康者变成病人数不超过原来得病人数得缘故。
5. 实验75传染病模型4( SIR 模型)
ans =
t
(天) 〈更24.P 圧Y 瞟〉一i0得大小,但其极限值i (无穷)=11/,随得增加
而增 i (t )越来越小。
最终趋近于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 0 、3247 0 、2027
9 、0000 0 、2863 0 、1493
10 、0000 0 、2418 0 、1145
11 、0000 0 、1986 0 、0917
12 、0000 0 、1599 0 、0767
13 、0000 0 、1272 0 、0665
14 、0000 0 、1004 0 、0593
15 、0000 0 、0787 0 、0543
16 、0000 0 、0614 0 、0507
17 、0000 0 、0478 0 、0480
18 、0000 0 、0371 0 、0460
19 、0000 0 、0287 0 、0445
20 、0000 0 、0223 0 、0434
21 、0000 0 、0172 0 、0426
22 、0000 0 、0133 0 、0419
23 、0000 0 、0103 0 、0415
24 、0000 0 、0079 0 、0411
25 、0000 0 、0061 0 、0408
26 、0000 0 、0047 0 、0406
27 、0000 0 、0036 0 、0404
28 、0000 0 、0028 0 、0403
29 、0000 0 、0022 0 、0402
30 、0000 0 、0017 0 、0401
31 、0000 0 、0013 0 、0400
32 、0000 0 、0010 0 、0400
33 、0000 0 、0008 0 、0400
34 、0000 0 、0006 0 、0399
35 、0000 0 、0005 0 、0399
36 、0000 0 、0004 0 、0399
37 、0000 0 、0003 0 、0399
38 、0000 0 、0002 0 、0399
39 、0000 0 、0002 0 、0399
40 、0000 0 、0001 0 、0399
41 、0000 0 、0001 0 、0399
42 、0000 0 、0001 0 、0399
43 、0000 0 、0001 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
分析:
如果仅当病人比例i(t)有一段增长得时期才认为传染病在蔓延,那么1/ C就是一个阈值,
当S0>1/ C时传染病就会蔓延,而减小传染期接触数C ,即提高阈值1/(T ,就是得S0<=1/ (T ,传染病就不会蔓延。
C减小时,s X增加,im降低,也控制了蔓延得程度。
在C =入/卩中,人们得卫生水平提高,日接触率入越小;医疗水平越高,日治愈率卩越大,于就是C越小,所以提高卫生水平与医疗水平有助于控制传染病得蔓延。