1实验71 传染病模型文档格式.docx
《1实验71 传染病模型文档格式.docx》由会员分享,可在线阅读,更多相关《1实验71 传染病模型文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
![1实验71 传染病模型文档格式.docx](https://file1.bdocx.com/fileroot1/2022-10/28/2746796a-4181-4282-8db5-ac6ad85961ac/2746796a-4181-4282-8db5-ac6ad85961ac1.gif)
1.实验7-1传染病模型2(SI模型)——画di/dt~i曲线图
(参考教材p137-138)
传染病模型2(SI模型):
di/dt=ki(1-i),i(0)=i0;
其中,i(t)是第t天病人在总人数中所占的比例。
λ是每个病人每天有效接触的平均人数(日接触率)。
i0是初始时刻(t=0)病人的比例。
取k=0.1,画出di/dt~i曲线图,求i为何值时di/dt达到最大值,并在曲线图上标注。
试
编写一个m文件来实现。
参考程序运行结果(在图形窗口菜单选择Edit/CopyFigure,复制图形):
[提示]
1)画曲线图
用fplot函数,调用格式如下:
fplot(fun,lims)
fun必须为一个M文件的函数名或对变量x的可执行字符串。
若lims取[xminxmax],则x轴被限制在此区间上。
若lims取[xminxmaxyminymax],则y轴也被限制。
本题可用
fplot('
0.1*x*(1-x)'
[01.100.03]);
2)求最大值
用求解边界约束条件下的非线性最小化函数fminbnd,调用格式如下:
x=fminbnd(‘fun’,x1,x2)
返回自变量x在区间x1<
x<
x2上函数取最小值时的x值。
x=fminbnd('
-0.1*x*(1-x)'
0,1)
y=0.1*x*(1-x)
4)指示最大值坐标
用线性绘图函数plot,调用格式如下:
plot(x1,y1,’颜色线型数据点图标’,x2,y2,’颜色线型数据点图标’,…)
说明参见《数学实验》p225
holdon;
%在上面的同一张图上画线(同坐标系)
plot([0,x],[y,y],'
:
'
[x,x],[0,y],'
);
3)图形的标注
使用文本标注函数text,调用格式如下:
格式1
text(x,y,文本标识内容,’HorizontalAlignment’,’字符串1’)
x,y给定标注文本在图中添加的位置。
’HorizontalAlignment’为水平控制属性,控制文本标识起点位于点(x,y)同一水平线
上。
’字符串1’为水平控制属性值,取三个值之一:
‘left’,点(x,y)位于文本标识的左边。
‘center’,点(x,y)位于文本标识的中心点。
‘right’,点(x,y)位于文本标识的右边。
格式2
text(x,y,文本标识内容,’VerticalAlignment’,’字符串2’)
’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
title('
SI模型di/dt~i曲线'
xlabel('
i'
ylabel('
di/dt'
2.实验7-2传染病模型2(SI模型)——画i~t曲线图
其中,
i(t)是第t天病人在总人数中所占的比例。
k是每个病人每天有效接触的平均人数(日接触率)。
i0是初始时刻(t=0)病人的比例
求出微分方程的解析解i(t),画出如下所示的i~t曲线(i(0)=0.15,k=0.2,
t=0~30)。
试编写一个m文件来实现。
(在图形窗口菜单选择Edit/CopyFigure,复制
图形)
1)求解微分方程
常微分方程符号解用函数dsolve,调用格式如下:
dsolve(‘equ1’,’equ2’,…,’变量名’)
以代表微分方程及初始条件的符号方程为输入参数,多个方程或初始条件可在一个输入
变量内联立输入,且以逗号分隔。
默认的独立变量为t,也可把t变为其他的符号变量。
字符D代表对独立变量的微分,通常指d/dt。
x=dsolve(‘Dx=k*x*(1-x)’,’x(0)=x0’)
2)画出i~t曲线(i(0)=0.15,λ=0.2,t=0~30)
用for循环,函数length,eval,plot,axis,title,xlabel,ylabel
3.实验7-3传染病模型3(SIS模型)——画di/dt~i曲线图
(参考教材p138-139)
已知传染病模型3(SIS模型):
di/dt=-λi[i-(1-1/σ)],i(0)=i0
σ是整个传染期内每个病人有效接触的平均人数(接触数)。
取λ=0.1,σ=1.5,画出如下所示的di/dt~i曲线图。
(在图
形窗口菜单选择Edit/CopyFigure,复制图形)
用fplot函数画出di/dt~i曲线图;
在上图上用plot函数画一条过原点的水平
用title,xlabel,ylabel标注。
4.实验7-4传染病模型3(SIS模型)——画i~t曲线图
实验要求:
求出微分方程的解析解i(t)。
取λ=0.2,σ=3,t=0~40,画出如下所示的图形。
试编写
一个m文件来实现。
其中
蓝色实线为i(0)=0.2时的i~t曲线(第1条);
黑色虚点线为过点(0,1-1/σ)的水平线(第2条);
红色虚线为i(0)=0.9时的i~t曲线(第3条)。
图例标注可用
legend('
i(0)=0.2'
1-1/¦
σ'
i(0)=0.9'
5.实验7-5传染病模型4(SIR模型)
(参考教材p140-141)
SIR模型的方程:
di/dt=λsi-μii(0)=i0
ds/dt=-λsis(0)=s0
实验要求:
1.设λ=1,μ=0.3,i(0)=0.02,s(0)=0.98。
输入p139的程序,并修改程序中
的[t,x],使得输出的数据格式如下(提示:
取4位小数,使用四舍五入取整函数round,
矩阵剪裁和拼接):
ans=
Columns1through6
012345
0.020.0390.07320.12850.20330.2795
0.980.95250.90190.81690.69270.5438
Columns7through12
67891015
0.33120.34440.32470.28630.24180.0787
0.39950.28390.20270.14930.11450.0543
Columns13through18
202530354045
0.02230.00610.00170.00050.00010
0.04340.04080.0401
0.03990.03990.0398
2.运行结果与教材p140的内容比较。
1)求解微分方程的数值解函数ode45,格式如下:
[t,x]=ode45('
fun'
ts,x0)
fun是由一个或多个待解方程写成的函数式m文件;
ts=[t0,tf]表示此微分方程的积分限是从t0到tf,也可以是一些离散的点,形式
为ts=[t0,t1,…,tf];
x0为初值条件。
2)等待用户反应命令pause:
程序执行到该命令时暂停,直到用户按任意键后继续(处
在命令窗口有效)。
3、实验内容
在matlab中建立M文件fun1.m
代码如下:
functiony=fun(x)
k=0.1;
y=k*x*[1-x];
Fun2.m
y=-k*x*[1-x];
在命令行输入以下代码:
fun1'
fun2'
0,1);
y=0.1*x*(1-x);
-'
holdoff
在matlab中建立M文件fun22.m
k=0.2;
x0=0.15;
x=dsolve('
Dx=k*x*(1-x)'
x(0)=x0'
tt=linspace(0,31,1001);
fori=1:
1001
t=tt(i);
xx(i)=eval(x);
end
plot(tt,xx)
axis([0,31,0,1.1]);
图1SI模型i~t曲线'
t(天)'
i(病人所占比例)'
在命令行输入