您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 1.实验7-1-传染病模型2
河北大学《数学模型》实验实验报告班级专业15计科2班姓名张宇轩学号20151101006实验地点C1-229指导老师司建辉成绩实验项目1.实验7-1传染病模型2(SI模型)——画di/dt~i曲线图2.实验7-2传染病模型2(SI模型)——画i~t曲线图3.实验7-3传染病模型3(SIS模型)——画di/dt~i曲线图4.实验7-4传染病模型3(SIS模型)——画i~t曲线图5.实验7-5传染病模型4(SIR模型)一、实验目的二、实验要求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)fun必须为一个M文件的函数名或对变量x的可执行字符串。返回自变量x在区间x1xx2上函数取最小值时的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,调用格式如下:格式1text(x,y,文本标识内容,’HorizontalAlignment’,’字符串1’)x,y给定标注文本在图中添加的位置。’HorizontalAlignment’为水平控制属性,控制文本标识起点位于点(x,y)同一水平线上。’字符串1’为水平控制属性值,取三个值之一:‘left’,点(x,y)位于文本标识的左边。‘center’,点(x,y)位于文本标识的中心点。‘right’,点(x,y)位于文本标识的右边。格式2text(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本题可用title('SI模型di/dt~i曲线');xlabel('i');ylabel('di/dt');2.实验7-2传染病模型2(SI模型)——画i~t曲线图(参考教材p137-138)传染病模型2(SI模型):di/dt=ki(1-i),i(0)=i0;其中,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,ylabel3.实验7-3传染病模型3(SIS模型)——画di/dt~i曲线图(参考教材p138-139)已知传染病模型3(SIS模型):di/dt=-i[i-(1-1/)],i(0)=i0其中,i(t)是第t天病人在总人数中所占的比例。λ是每个病人每天有效接触的平均人数(日接触率)。i0是初始时刻(t=0)病人的比例。σ是整个传染期内每个病人有效接触的平均人数(接触数)。取λ=0.1,σ=1.5,画出如下所示的di/dt~i曲线图。试编写一个m文件来实现。(在图形窗口菜单选择Edit/CopyFigure,复制图形)[提示]用fplot函数画出di/dt~i曲线图;在上图上用plot函数画一条过原点的水平用title,xlabel,ylabel标注。4.实验7-4传染病模型3(SIS模型)——画i~t曲线图(参考教材p138-139)已知传染病模型3(SIS模型):di/dt=-i[i-(1-1/)],i(0)=i0其中,i(t)是第t天病人在总人数中所占的比例。λ是每个病人每天有效接触的平均人数(日接触率)。i0是初始时刻(t=0)病人的比例。σ是整个传染期内每个病人有效接触的平均人数(接触数)。实验要求:求出微分方程的解析解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)=i0ds/dt=-sis(0)=s0实验要求:1.设λ=1,μ=0.3,i(0)=0.02,s(0)=0.98。输入p139的程序,并修改程序中的[t,x],使得输出的数据格式如下(提示:取4位小数,使用四舍五入取整函数round,矩阵剪裁和拼接):ans=Columns1through60123450.020.0390.07320.12850.20330.27950.980.95250.90190.81690.69270.5438Columns7through12678910150.33120.34440.32470.28630.24180.07870.39950.28390.20270.14930.11450.0543Columns13through182025303540450.02230.00610.00170.00050.000100.04340.04080.04010.03990.03990.03982.运行结果与教材p140的内容比较。[提示]1)求解微分方程的数值解函数ode45,格式如下:[t,x]=ode45('fun',ts,x0)fun是由一个或多个待解方程写成的函数式m文件;ts=[t0,tf]表示此微分方程的积分限是从t0到tf,也可以是一些离散的点,形式为ts=[t0,t1,…,tf];x0为初值条件。2)等待用户反应命令pause:程序执行到该命令时暂停,直到用户按任意键后继续(处在命令窗口有效)。三、实验内容1.实验7-1传染病模型2(SI模型)——画di/dt~i曲线图在matlab中建立M文件fun1.m代码如下:functiony=fun(x)k=0.1;y=k*x*[1-x];Fun2.m代码如下:functiony=fun(x)k=0.1;y=-k*x*[1-x];在命令行输入以下代码:fplot('fun1',[01.100.03]);x=fminbnd('fun2',0,1);y=0.1*x*(1-x);holdon;plot([0,x],[y,y],'-',[x,x],[0,y],'-');text(0,y,'(di/dt)m','VerticalAlignment','bottom');text(x,-0.001,num2str(x),'HorizontalAlignment','center');title('SI模型di/dt~i曲线');xlabel('i');ylabel('di/dt');holdoff2.实验7-2传染病模型2(SI模型)——画i~t曲线图在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:1001t=tt(i);xx(i)=eval(x);endplot(tt,xx)axis([0,31,0,1.1]);title('图1SI模型i~t曲线');xlabel('t(天)');ylabel('i(病人所占比例)');在命令行输入以下代码:fun22;3.实验7-3传染病模型3(SIS模型)——画di/dt~i曲线图在matlab中建立M文件fun3.m代码如下:functiony=fun(x)a=0.1;b=1.5;y=-a*x*[x-(1-1/b)];在命令行输入以下代码:fplot('fun3',[00.4-0.00050.003]);x=fminbnd('fun3',0,1);title('SIS模型di/dt~i曲线');xlabel('i');ylabel('di/dt');holdonplot([0,0.4],[0,0])4.实验7-4传染病模型3(SIS模型)——画i~t曲线图在matlab中建立M文件fun4.m代码如下:functiony=fun(x)x=dsolve('Dx=-0.2*x*(x-(1-1/3))','x(0)=0.2');tt=linspace(0,41,1001);fori=1:1001t=tt(i);xx(i)=eval(x);endplot(tt,xx);holdon;plot([0,40],[1-1/3,1-1/3],'-k');x=dsolve('Dx=-0.2*x*(x-(1-1/3))','x(0)=0.9');tt=linspace(0,41,1001);fori=1:1001t=tt(i);xx(i)=eval(x);endplot(tt,xx,'-r');axis([0,40,0,1]);title('图1SI模型i~t曲线(λ=0.2,σ=3)');xlabel('t(天)');ylabel('i(病人所占比例)');legend('i(0)=0.2','1-1/σ','i(0)=0.9');在命令行输入以下代码:fun4;5.实验7-5传染病模型4(SIR模型)在matlab中建立M文件fun5.m代码如下:functiony=fun(t,x)a=1;b=0.3;y=[a*x(1)*x(2)-b*x
本文标题:1.实验7-1-传染病模型2
链接地址:https://www.777doc.com/doc-5801648 .html