matlab传染病模型

matlab传染病模型
matlab传染病模型

传染病模型实验

实验目的:

理解传染病的四类模型,学会利用Matlab软件求解微分方程(组)。

实验题目:

利用Matlab求解传染病的SIS微分方程模型,并绘制教材P139页图3-图6。

SIS模型

假设:

(1)、t时刻人群分为易感者(占总人数比例的s(t))和已感染者(占总人数比例的i(t))。

(2)、每个病人每天有效接触的平均人数是常数λ,λ称为日接触率,当健康者与病人接触时,健康者受感染成为病人。

(3)、病人每天被治愈的占病人总数的比例为μ,称为日治愈率,显然1

为这种传染病的平均传染期。

μ

则建立微分方程模型为:

令,则模型可写作

分别作图:

页脚内容1

当sigma>1时

Step1:先定义函数

function y=pr1(i,lambda,sigma)

y=-lambda.*i.*(i-(1-1./sigma))

step2:作图

lambda=0.3;sigma=2;

i=0:0.01:1;

y=pr1(i,lambda,sigma)

plot(i,y)

页脚内容2

页脚内容3

00.10.20.30.40.50.60.70.80.91

-0.16

-0.14-0.12-0.1-0.08-0.06-0.04-0.020

0.02

当sigma<1时 Step1:先定义函数

function y=pr1(i,lambda,sigma) y=-lambda.*i.*(i-(1-1./sigma)) step2:作图

lambda=0.3;sigma=0.5; i=0:0.01:1;

y=pr1(i,lambda,sigma) plot(i,y)

页脚内容4

00.10.20.30.40.50.60.70.80.91

-0.7

-0.6

-0.5

-0.4

-0.3

-0.2

-0.1

当sigma=1时 Step1:先定义函数

function y=pr1(i,lambda,sigma) y=-lambda.*i.*(i-(1-1./sigma)) step2:作图

lambda=0.3;sigma=1; i=0:0.01:1;

y=pr1(i,lambda,sigma) plot(i,y)

页脚内容5

00.10.20.30.40.50.60.70.80.91

-0.35

-0.3

-0.25

-0.2

-0.15

-0.1

-0.05

当sigma>1时 Step1:先定义函数

function di=crb(t,i,lambda,sigma)

di=-lambda*i*(i-(1-1/sigma))

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% step2:求解并作图 clc clear lambda=0.01;

页脚内容6

sigma=2;

[t,i1]=ode45(@crb,[0,1000],0.9,[],lambda,sigma); [t,i2]=ode45(@crb,[0,1000],0.2,[],lambda,sigma); plot(t,i1,t,i2,t,1/2) legend('\sigma>1')

01002003004005006007008009001000

0.2

0.30.40.50.60.70.80.9

当sigma=1时 Step1:先定义函数

function di=crb(t,i,lambda,sigma)

di=-lambda*i*(i-(1-1/sigma))

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% step2:求解并作图

clc

clear

lambda=0.01;

sigma=1

[t,i1]=ode45(@crb,[0,1000],0.9,[],lambda,sigma);

plot(t,i1)

legend('\sigma=1')

页脚内容7

页脚内容8

100

200

300

400

500

600

700

800

900

1000

00.10.20.30.40.50.60.70.80.91

当sigma<1时 Step1:先定义函数

function di=crb(t,i,lambda,sigma)

di=-lambda*i*(i-(1-1/sigma))

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% step2:求解并作图 clc clear lambda=0.01;

页脚内容9

sigma=0.5;

[t,i1]=ode45(@crb,[0,1000],0.9,[],lambda,sigma); plot(t,i1)

legend('\sigma<1')

01002003004005006007008009001000

-0.2

0.2

0.4

0.6

0.8

1

1.2

利用matlab 求解上面SIS 模型. 提示(画图5程序): Step1:先定义函数

function y=pr1(i,lambda,sigma)

y=-lambda.*i.*(i-(1-1./sigma))

step2:作图

lambda=0.3;sigma=2;

i=0:0.01:1;

y=pr1(i,lambda,sigma)

plot(i,y)

提示(画图6程序):

Step1:先定义函数

function di=crb(t,i,lambda,sigma)

di=-lambda*i*(i-(1-1/sigma))

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% step2:求解并作图

clc

clear

lambda=0.01;

sigma=0.2;

[t,i]=ode45(@crb,[0,100],0.9,[],lambda,sigma);

页脚内容10

页脚内容11

plot(t,i)

legend('\sigma<1')

实验指导书:

利用matlab 求下面定解问题,并作图

d 2(3)d (0)2y

y y y

x

y ?=--???=? 程序

f=@(x,y)(2*y*(3-y)-y);

[x,y]=ode45(@(x,y)f(x,y),[0,10],0.9);

plot(x,y)

legend('数值解 1');

交通流中的nasch模型及matlab代码元胞自动机

元胞自动机NaSch模型及其MATLAB代码 作业要求 根据前面的介绍,对NaSch模型编程并进行数值模拟: ●模型参数取值:Lroad=1000,p=0.3,Vmax=5。 ●边界条件:周期性边界。 ●数据统计:扔掉前50000个时间步,对后50000个时间步进行统计,需给出的 结果。 ●基本图(流量-密度关系):需整个密度范围内的。 ●时空图(横坐标为空间,纵坐标为时间,密度和文献中时空图保持一致, 画 500个时间步即可)。 ●指出NaSch模型的创新之处,找出NaSch模型的不足,并给出自己的改进思 路。 ●流量计算方法: 密度=车辆数/路长; 流量flux=density×V_ave。 在道路的某处设置虚拟探测计算统计时间T内通过的车辆数N; 流量flux=N/T。 ●在计算过程中可都使用无量纲的变量。 1、NaSch模型的介绍 作为对184号规则的推广,Nagel和Schreckberg在1992年提出了一个模拟车辆交通的元胞自动机模型,即NaSch模型(也有人称它为NaSch模型)。 ●时间、空间和车辆速度都被整数离散化。

● 道路被划分为等距离的离散的格子,即元胞。 ● 每个元胞或者是空的,或者被一辆车所占据。 ● 车辆的速度可以在(0~Vmax )之间取值。 2、NaSch 模型运行规则 在时刻t 到时刻t+1的过程中按照下面的规则进行更新: (1)加速:),1min(max v v v n n +→ 规则(1)反映了司机倾向于以尽可能大的速度行驶的特点。 (2)减速:),min(n n n d v v → 规则(2)确保车辆不会与前车发生碰撞。 (3)随机慢化: 以随机概率p 进行慢化,令:)0, 1-min(n n v v → 规则(3)引入随机慢化来体现驾驶员的行为差异,这样既可以反映随机加速行为, 又可以反映减速过程中的过度反应行为。这一规则也是堵塞自发产生的至关重要因素。 (4)位置更新:n n n v x v +→ ,车辆按照更新后的速度向前运动。 其中n v ,n x 分别表示第n 辆车位置和速度;l (l ≥1)为车辆长度; 11--=+n n n x x d 表示n 车和前车n+1之间空的元胞数;p 表示随机慢化概率;max v 为最大速度。 3、NaSch 模型实例 根据题目要求,模型参数取值:L=1000,p=0.3,Vmax=5,用matlab 软件进行编程,扔掉前11000个时间步,统计了之后500个时间步数据,得到如下基本图和时空图。 3.1程序简介 初始化:在路段上,随机分配200个车辆,且随机速度为1-5之间。 图3.1.1是程序的运行图,图3.1.2中,白色表示有车,黑色是元胞。

数学建模 传染病模型

传染病模型 摘要 当今社会,人们开始意识到通过定量地研究传染病的传播规律,建立传染病的传播模型,可以为预测和控制传染病提供可靠、足够的信息。本文利用微分方程稳定性理论对传统传染病动力学建模方式进行综述,且针对甲流,SARS等新生传染病模型进行建模和分析。 不同类型的传染病的传播过程有其各自不同的特点,我们不是从医学的角度一一分析各种传染病的传播,而是从一般的传播机理分析建立各种模型,如简单模型,SI模型,SIS模型,SIR模型等。本文中,我们应用传染病动力学模型来描述疾病发展变化的过程和传播规律,运用联立微分方程组体现疫情发展过程中各类人的内在因果联系,并在此基础上建立方程求解算法。然后,通过借助Matlab程序拟合出与实际较为符合的曲线并进行了疫情预测,评估各种控制措施的效果,从而不断完善文中的模型。 本文由简到难、全面地评价了该模型的合理性与实用性,而后对模型和数据也做了较为扼要的分析,进一步改进了模型的不妥之处。同时,在对问题进行较为全面评价的基础上又引入更为全面合理的假设,运用双线性函数模型对卫生部的措施进行了评价并给出建议,做好模型的完善与优化工作。 关键词:传染病模型,简单模型,SI,SIS,SIR,微分方程,Matlab。

一、问题重述 有一种传染病(如SARS、甲型H1N1)正在流行,现在希望建立适当的数学模型,利用已经掌握的一些数据资料对该传染病进行有效地研究,以期对其传播蔓延进行必要的控制,减少人民生命财产的损失。考虑如下的几个问题,建立适当的数学模型,并进行一定的比较分析和评价展望。 1、不考虑环境的限制,设单位时间内感染人数的增长率是常数,建立模型求t 时刻的感染人数。 2、假设单位时间内感染人数的增长率是感染人数的线性函数,最大感染时的增长率为零。建立模型求t时刻的感染人数。 3、假设总人口可分为传染病患者和易感染者,易感染者因与患病者接触而得病,而患病者会因治愈而减少且对该传染病具有很强的免疫功能,建立模型分析t 时刻患病者与易感染者的关系,并对传染情况(如流行趋势,是否最终消灭)进行预测。 二、问题分析 1、这是一个涉及传染病传播情况的实际问题,其中涉及传染病感染人数随时间的变化情况及一些初始资料,可通过建立相应的微分方程模型加以解决。 2、问题表述中已给出了各子问题的一些相应的假设。 3、在实际中,感染人数是离散变量,不具有连续可微性,不利于建立微分方程模型。但由于短时间内改变的是少数人口,这种变化与整体人口相比是微小的。 因此,为了利用数学工具建立微分方程模型,我们还需要一个基本假设:感染人数是时间的连续可微函数。 三、模型假设 模型二和模型三的假设条件: 假设一:在疾病传播期内所考察地区的总人数N不变,即不考虑生死,也不考虑迁移。人群分为易感染者(Susceptible)和已感染者(Infective)两类(取两个词的第一个字母,称之为SI模型),以下简称健康者和病人。时刻t这两类人在总人数中所占比例分别记作s(t)和i(t)。 假设二:每个病人每天有效接触的平均人数是常数,称为日接触率。当病人

数学建模之传染病模型

第五章 微 分 方 程 模 型 如果实际对象的某特性是随时间(或空间)变化的,那么分析它的变化规律,预测它的未来性态时,通常要建立此实际对象的动态模型,这就是微分方程模型. §1 传 染 病 模 型 建立传染病的数学模型来描述传染病的传播过程,分析受感染人数的变化规律,预报传染病高潮的到来等,一直是各国有关专家和官员关注的课题. 考虑某地区的传染病的传染情况,设该地区人口总数为N ,既不考虑生死,也不考虑迁移,时间以天为计量单位. 一. SI 模 型 假设条件: 1. 人群分为易感染者(Susceptible )和已感染者(Infective )两类人,简称为健康人 和病人,在时刻t 这两类人在总人数中所占比例分别记作()t s 和()t i . 2. 每个病人每天有效接触的平均人数是λ(常数),λ称为日接触率,当病人与健康 人有效接触时,使健康者受感染变为病人. 试建立描述()t i 变化的数学模型. 解: ()()1=+t i t s ()()N N t i N t s =+∴ 由假设2知,每个病人每天可使()t s λ个健康者变为病人,又由于病人数为 ()t i N ,∴每天共有()()t i N t s λ个健康人被感染. 于是i s N λ就是病人数i N 的增加率,即有 i s N dt di N λ= (1)

i s dt di λ=∴ 而1=+i s . 又记初始时刻(0=t )病人的比例为0i ,则 ()()?????=-=0 01i i i i dt di λ 这就是Logistic 模型,其解为 ()t e i t i λ-??? ? ??-+= 11110 [结果分析] 作出()t t i ~和i dt di ~的图形如下: 1. 当2 1=i 时,dt di 取到最大值m dt di ?? ? ??,此时刻为 ??? ? ??-=-11ln 01i t m λ 2. 当∞→t 时,1→i 即所有人终将被传染,全变为病人(这是不实际的). 二. SIS 模 型 在前面假设1、2之下,再考虑病人可以医治,并且有些传染病如伤风、痢疾等愈后免疫力很低,可以假定无免疫性,于是病人被治愈后变成健康者,健康者还可以被感染再变成病人,此模型称SIS 模型.

实验一MATLAB系统的传递函数和状态空间表达式的转换

实验一 MATLAB 系统的传递函数和状态空间表达式的转换 一、 实验目的 1、学习多变量系统状态空间表达式的建立方法; 2、通过编程、上机调试,掌握多变量系统状态空间表达式与传递函数之间相互转换的方法; 3、掌握相应的MATLAB 函数。 二、 实验原理 设系统的模型如式(1.1)所示: ???+=+=D Cx y Bu Ax x ' x ''R ∈ u ∈R ’’’ y ∈R P (1.1) 其中A 为nXn 维系统矩阵、B 为nXm 维输入矩阵、C 为pXn 维输出矩阵,D 为直接传递函数。系统的传递函数和状态空间表达式之间的关系如式(1.2)所示 G(s)=num(s)/den(s)=C (SI-A)-1 B+D (1.2) 式(1.2)中,num(s)表示传递函数的分子阵,其维数是pXm ,den(s)表示传递函数的按s 降幂排列的分母。 表示状态空间模型和传递函数的MATLAB 函数如下: 函数ss (state space 的首字母)给出了状态空间模型,其一般形式是: sys=ss(A,B,C,D) 函数tf (transfer function 的首字母)给出了传递函数,其一般形式是:

G=tf(num ,den) 其中num 表示传递函数中分子多项式的系数向量(单输入单输出系统),den 表示传递函数中分母多项式的系数向量。 函数tf2ss 给出了传递函数的一个状态空间实现,其一般形式是: [A,B,C,D]=tf2ss(num,den) 函数ss2tf 给出了状态空间模型所描述系统的传递函数,其一般形式是: [num,den]=ss2tf(A,B,C,D,iu) 其中对于多输入系统,必须确定iu 的值。例如,若系统有三个输入u 1,u 2,u 3,则iu 必须是1、2、或3,其中1表示u 1,2表示u 2,3表示u 3。该函数的结果是第iu 个输入到所有输出的传递函数。 三.实验步骤及结果 1、应用MATLAB 对下列系统编程,求系统的A 、B 、C 、D 阵,然后验证传递函数是相同的。 G(s)= ?? ????+++352^12s s s s 3+4s 2+5s+1 程序和运行结果:

数学模型实验报告传染病

《数学模型实验》实验报告 姓名:学院:地点: 学号:专业:时间:年月日 一、实验名称: 传染病SIR模型 二、实验目的: 探讨传染病的SIR模型。通过微分方程的解的特征,分析受感染人数的变化规律,预报感染病的高潮时间,得出控制感染病蔓延的方法。三、实验任务: 大多数传染病如天花、流感、肝炎、荨麻等治愈后均有很强的免疫力,所以对于病愈后即非健康者(易感染者)、也非病人(已感染者)的人,他们已经退出了传染系统。假设:总人数N不变,人群分为健康者、病人和病愈免疫的移出者三类。三类人在总人数N中占的比例分别为s(t),i(t)和r(t)。建立相关模型,进行求解分析 四、实验步骤: 1.模型假设 2.模型构成 3.数值计算 4.结果分析 五、实验内容: (一)模型假设

1.总人数N不变,人群分为健康者、病人和病愈免疫的移出者三类,称SIR模型。时刻t三类人在总人数中所占的比例分别为s(t),i(t)和r(t)。 2.病人的日接触率为λ,日治愈率为μ,传染期接触数为β=λ/μ。(二)模型构成 由假设1显然有s(t)+i(t)+r(t)=1;由假设2,对于病愈免疫的移出者而言应有:Ndi/dt=λNsi-μNi; Ndr/dt=μNi。再记初始时刻的健康者和病人的比例分别是s0(s0>0)和i0(i0>0),则由此得到SIR模 型的方程可以写作 (三)数值计算 设方程中λ=1,μ=0.3,i(0)=0.02,s(0)=0.98,MATLAB编程语言如下: 建立函数: 引用: 得到轨迹图如下:

i(t),s(t)图像 i-s图像(相轨线) (四)结果分析 由图可看出,i(t)由初值增长至约t=7时达到最大值,然后减少,t趋

实验一 用MATLAB处理系统数学模型

实验一用MATLAB处理系统数学模型 一、实验原理 表述线性定常系统的数学模型主要有微分方程、传递函数、动态结构图等.求拉氏变换可用函数laplace(ft,t,s),求拉式反变换可用函数illaplace(Fs,s,t);有关多项式计算的函数主要有roots(p),ploy(r),conv(p,q),ployval(n,s);求解微分方程可采用指令 s=dslove(‘a_1’,’a_2’,’···,’a_n’);建立传递函数时,将传递函数的分子、分母多项式的系数写成两个向量,然后用tf()函数来给出,还可以建立零、极点形式的传递函数,采用的函数为zpk(z,p,k);可用函数sys=series(sys1,sys2)来实现串联,用 sys=parallel(sys1,sys2)来实现并联,可用函数sys=feedback(sys1,sys2,sign)来实现系统的反馈连接,其中sign用来定义反馈形式,如果为正反馈,则sign=+1,如果为负反馈,则sign=-1。 二、实验目的 通过MATLAB软件对微分方程、传递函数和动态结构图等进行处理,观察并分析实验结果。 三、实验环境 MATLAB2012b 四、实验步骤 1、拉氏变换 syms s t; ft=t^2+2*t+2; st=laplace(ft,t,s) 2、拉式反变换 syms s t; Fs=(s+6)/(s^2+4*s+3)/(s+2); ft=ilaplace(Fs,s,t) 3、多项式求根 p=[1 3 0 4]; r=roots(p) p=poly(r) 4、多项式相乘 p=[ 3 2 1 ];q=[ 1 4];

数学建模 传染病模型

传染病模型 医学科学的发展已经能够有效地预防和控制许多传染病,但是仍然有一些传染病暴发或流行,危害人们的健康和生命。 社会、经济、文化、风俗习惯等因素都会影响传染病的传播,而最直接的因素是:传染者的数量及其在人群中的分布、被传染者的数量、传播形式、传播能力、免疫能力等。 一般把传染病流行范围内的人群分成三类:S类,易感者(Susceptible),指未得病者,但缺乏免疫能力,与感染者接触后容易受到感染;I类,感病者(Infective),指染上传染病的人,它可以传播给S类成员;R类,移出者(Removal),指被隔离或因病愈而具有免疫力的人。 问题提出 请建立传染病模型,并分析被传染的人数与哪些因素有关?如何预报传染病高潮的到来?为什么同一地区一种传染病每次流行时,被传染的人数大致不变? 关键字:传染病模型、建模、流行病 摘要:随着卫生设施的改善、医疗水平的提高以及人类文明的不断发展,诸如霍 乱、天花等曾经肆虐全球的传染性疾病已经得到有效的控制。但是一些新的、不断变异着的传染病毒却悄悄向人类袭来。20世纪80年代十分险恶的爱滋病毒开始肆虐全球,至今带来极大的危害。还有最近的SARS病毒和禽流感病毒,都对人类的生产生活造成了重大的损失。长期以来,建立制止传染病蔓延的手段等,一直是各国有关专家和官员关注的课题。 不同类型传染病的传播过程有其各自不同的特点,弄清这些特点需要相当多的病理知识,这里不可能从医学的角度一一分析各种传染病的传播,而只是按照一般的传播模型机理建立几种模型。 模型1 在这个最简单的模型中,设时刻t的病人人数x(t)是连续、可微函数, 方程(1)的解为 结果表明,随着t的增加,病人人数x(t)无限增长,这显然是不符合实际的。 建模失败的原因在于:在病人有效接触的人群中,有健康人也有病人,而其中只有健康人才可以被传染为病人,所以在改进的模型中必须区别健康人和病人这两种人。 模型2 SI模型 假设条件为 1.在疾病传播期内所考察地区的总人数N不变,即不考虑生死,也不考虑迁移。人群分为易感染者即健康人(Susceptible)(S)和已感染者即病人(Infective)(i)两类(取两个词的第一个字母,称之为SI模型),以下简称健康者和病人。时刻t这两类人在总人数中所占比例分别记作s(t)和i(t)。 2.每个病人每天有效接触的平均人数是常数 ,称为日接触率。当病人与健康者接触时,使健康者受感染变为病人。

传染病模型(微分方程)

t 微分方程建模(传染病模型)的求解。 1、模型1:SI 模型。 假设: (1)t 时刻人群分为易感者(占总人数比例的()s t )和已感染者(占总人数比例的()y t ) (2)每个病人每天有效接触的平均人数是常数λ,λ称为日接触率,当健康者与病人接触时,健康者受感染成为病人。 分析:根据假设,每个患者每天可以使()s t λ个健康者变为病人,因为病人数为()Ny t ,所以每天共有()()Ns t y t λ个健康者变为病人。即: dy N Nsy dt λ=,且()()1s t y t +=,设初始时刻病人比例为b ,则: (1) (0)dy y y dt y b λ?=-???=?,用MATLAB 解此微分方程: >> syms a b >> f=dsolve('Dy=a*y*(1-y)','y(0)=b','t') f = 1/(1-exp(-a*t)*(-1+b)/b) %11 ()1111(1)t t y t b e e b b λλ--= = --+- 当0.09,0.1b λ==时,分别在坐标系oty 中作出()y t 的图像,坐标系oyy '中作出 (1)y y y λ'=-的图像, >> a=0.1; >> b=0.09; >> h=dsolve('Dy=a*y*(1-y)','y(0)=b','t') h = 1/(1-exp(-a*t)*(-1+b)/b) >> f=subs(h) f = 1/(1+91/9*exp(-1/10*t)) ()y t 的图像 >> ezplot(f,[0,60]) >> grid on >> figure (2) >> fplot('0.1*y*(1-y)',[0,1])

用matlab实现碰撞模型程序代码

用m a t l a b实现碰撞模型程序代码 标准化工作室编码[XX968T-XX89628-XJ668-XT689N]

c l c; clear; fill([6,7,7,6],[5,5,0,0],[0,0.5,0]);%右边竖条的填充 holdon;%保持当前图形及轴系的所有特性 fill([2,6,6,2],[3,3,0,0],[0,0.5,0]);%左边竖条的填充 holdon;%保持当前图形及轴系的所有特性 t1=0:pi/60:pi; plot(4-2*sin(t1-pi/2),5-2*cos(t1-pi/2));%绘制中间的凹弧图形gridon;%添加网格线 axis([0,9,0,9]);%定义坐标轴的比例% axis('off');%关闭所有轴标注,标记,背景 fill([1,2,2,1],[5,5,0,0],[0,0.5,0]);%中间长方形的填充 holdon;%保持当前图形及轴系的所有特性 title('碰撞');%定义图题 x0=6; y0=5; head1=line(x0,y0,'color','r','linestyle','.','erasemode','xor','marke rsize',30); head2=line(x0,y0,'color','r','linestyle','.','erasemode','xor','marke rsize',50);%设置小球颜色,大小,线条的擦拭方式 t=0;%设置小球的初始值 dt=0.001;%设置运动周期 t1=0;%设置大球的初始值 dt1=0.001; while1%条件表达式 t=t+dt; x1=9-1*t; y1=5; x3=6; y3=5; ift>0 x2=6; y2=5;%设置小球的运动轨迹 end ift>2.8 t=t+dt; a=sin(t-3); x1=6.1; y1=5.1; x3=4-2*sin(1.5*a); y3=5-2*cos(1.5*a);%设置大球的运动轨迹 end

1.实验7-1传染病模型2

河北大学《数学模型》实验实验报告 一、实验目的 二、实验要求 1.实验7-1 传染病模型2( SI模型)——画di/dt~ i曲线图 (参考教材 p137-138) 传染病模型 2( SI 模型): ; di/dt=ki(1-i),i(0)=i 其中, i(t)是第 t 天病人在总人数中所占的比例。 λ是每个病人每天有效接触的平均人数(日接触率)。 i0是初始时刻( t=0)病人的比例。 取 k=0.1,画出 di/dt~ i 曲线图,求 i 为何值时di/dt达到最大值,并在曲线图上标注。试编写一个 m 文件来实现。 参考程序运行结果(在图形窗口菜单选择 Edit/Copy Figure,复制图形):

[提示] 1)画曲线图 用 fplot 函数,调用格式如下: fplot(fun,lims) fun 必须为一个 M 文件的函数名或对变量 x 的可执行字符串。 若 lims 取[xmin xmax],则 x 轴被限制在此区间上。 若 lims 取[xmin xmax ymin ymax],则 y 轴也被限制。 本题可用 fplot('0.1*x*(1-x)',[0 1.1 0 0.03]); 2)求最大值 用求解边界约束条件下的非线性最小化函数 fminbnd,调用格式如下: x=fminbnd(‘fun’,x1,x2) fun 必须为一个 M 文件的函数名或对变量 x 的可执行字符串。 返回自变量 x 在区间 x1

飞机碰撞模型

飞机碰撞模型 摘要 第六架在边长为160km的正方形区域内以的飞行角从坐标为(0,0)的点出发,在飞行过程中不与其它五架飞机发生碰撞,即在该区域内与其它任意飞机的距离大于8km,就要不断调整该飞机的飞行角度,使其任意时刻与其他飞机的距离大于8km,利用空间中点的距离定义,计算任意时刻该飞机与其他飞机的距离,找到调整角度的最小值为。 1、问题重述 在约10000km高空的某边长160km的正方形区域内,有5架飞机均以800km/h的速度作水平飞行,不碰撞的标准为在该区域内任意两架飞机的距离大于8km。现有5架飞机在区域内飞行且它们不会碰撞,其初始坐标和飞行方向由下表给出: 现有第6架飞机要进入该区域,坐标为(0,0),飞行角为,如果其与内部的5架飞机发生碰撞,就需要调整其飞行角度,请建立优化模型,确定其与内部5架飞机不碰撞的最小调整角。 2、基本假设 1、五架飞机在规定正方形区域飞行中不随意改变路线; 2、飞机在飞行中不考虑其他未知因素; 3、符号说明 :正方形区域的边长; :第i架飞机飞行的方向角度; :第六架飞机飞行过程中的调整角度; :第架、第架飞机的距离; :第架飞机在区域内飞行的路线长度; :第架飞机的飞行速度; :第架飞机在区域内的飞行时间; :第i架飞机的横坐标; :第i架飞机的纵坐标; 4、模型的建立与求解 1、模型的建立 先根据五架飞机起始点与终点坐标,在规定的网格区域内画出它们的飞行路线,再根据给出的区域长度与各架飞机飞行速度,计算出各架飞机在区域内的飞行时间, 再根据计算得出的时间,得出时刻各架飞机的坐标,求出在该时刻第六架飞机与其他五架飞机的距离 即 当<8时,此时就需要调整第六架飞机的飞行角度,使其与另外五架飞机

matlab传染病模型

传染病模型实验 实验目的: 理解传染病的四类模型,学会利用Matlab软件求解微分方程(组)。 实验题目: 利用Matlab求解传染病的SIS微分方程模型,并绘制教材P139页图3-图6。 SIS模型 假设: (1)、t时刻人群分为易感者(占总人数比例的s(t))和已感染者(占总人数比例的i(t))。 (2)、每个病人每天有效接触的平均人数是常数λ,λ称为日接触率,当健康者与病人接触时,健康者受感染成为病人。 (3)、病人每天被治愈的占病人总数的比例为μ,称为日治愈率,显然1 为这种传染病的平均传染期。 μ 则建立微分方程模型为: 令,则模型可写作 分别作图: 页脚内容1

当sigma>1时 Step1:先定义函数 function y=pr1(i,lambda,sigma) y=-lambda.*i.*(i-(1-1./sigma)) step2:作图 lambda=0.3;sigma=2; i=0:0.01:1; y=pr1(i,lambda,sigma) plot(i,y) 页脚内容2

页脚内容3 00.10.20.30.40.50.60.70.80.91 -0.16 -0.14-0.12-0.1-0.08-0.06-0.04-0.020 0.02 当sigma<1时 Step1:先定义函数 function y=pr1(i,lambda,sigma) y=-lambda.*i.*(i-(1-1./sigma)) step2:作图 lambda=0.3;sigma=0.5; i=0:0.01:1; y=pr1(i,lambda,sigma) plot(i,y)

传染病的数学模型

传染病模型详解 /,SI SIS SIR 经典模型 经典的传播模型大致将人群分为传播态S ,易感染态I 和免疫态R 。S 态表示该个体带有病毒或谣言的传播能力,一旦接触到易感染个体就会以一定概率导致对方成为传播态。I 表示该个体没有接触过病毒或谣言,容易被传播态个体感染。R 表示当经过一个或多个感染周期后,该个体永远不再被感染。 SI 模型考虑了最简单的情况,即一个个体被感染,就永远成为感染态,向周围邻居不断传 播病毒或谣言等。假设个体接触感染的概率为β,总人数为 N ,在各状态均匀混合网络中建立传播模型如下: dS SI dt N I SI d t N ββ?=-????=?? 从而得到 (1)di i i dt β=- 对此方程进行求解可得: 0000(),01t t i e i t i i i i e ββ==-+() 可见,起初绝大部分的个体为I 态,任何一个S 态个体都会遇到I 态个体并且传染给对方,网络中的S 态个数随时间成指数增长。与此同时,随着I 态个体的减少,网络中S 态个 数达到饱和,逐渐网络中个体全部成为S 态。 然而在现实世界中,个体不可能一直都处于传播态。有些节点会因为传播的能力和意愿 的下降,从而自动转变为永不传播的R 态。而有些节点可能会从S 态转变I 态,因此简单的SI 模型就不能满足节点具有自愈能力的现实需求,因而出现SIS 模型和SIR 模型。 SIR 是研究复杂网络谣言传播的经典的模型。采用与病毒传播相似的过程中的S ,I ,R 态 代表传播过程中的三种状态。Zanetee ,Moreno 先后研究了小世界传播过程中的谣言传播。 Moreno 等人将人群分为S (传播谣言)、I (没有听到谣言),R (对谣言不再相信也不传播)。 假设没有听到谣言I 个体与S 个体接触,以概率()k λ变为S 个体,S 个体遇到S 个体 或R 个体以概率()k α变为R ,如图 所示。建立的平均场方程:

用matlab实现碰撞模型程序代码

clc; clear; fill([6,7,7,6],[5,5,0,0],[0,0.5,0]);%右边竖条的填充 hold on; %保持当前图形及轴系的所有特性 fill([2,6,6,2],[3,3,0,0],[0,0.5,0]);%左边竖条的填充 hold on;% 保持当前图形及轴系的所有特性 t1=0:pi/60:pi; plot(4-2*sin(t1-pi/2),5-2*cos(t1-pi/2));%绘制中间的凹弧图形 grid on;%添加网格线 axis([0,9,0,9]);%定义坐标轴的比例% axis('off');%关闭所有轴标注,标记,背景 fill([1,2,2,1],[5,5,0,0],[0,0.5,0]);%中间长方形的填充 hold on;% 保持当前图形及轴系的所有特性 title('碰撞');%定义图题 x0=6; y0=5; head1=line(x0,y0,'color','r','linestyle','.','erasemode','xor','markersize',30); head2=line(x0,y0,'color','r','linestyle','.','erasemode','xor','markersize',50); %设置小球颜色,大小,线条的擦拭方式 t=0;%设置小球的初始值 dt=0.001;%设置运动周期 t1=0;%设置大球的初始值 dt1=0.001; while 1%条件表达式 t=t+dt; x1=9-1*t; y1=5; x3=6; y3=5; if t>0 x2=6; y2=5;%设置小球的运动轨迹 end if t>2.8 t=t+dt; a=sin(t-3); x1=6.1; y1=5.1; x3=4-2*sin(1.5*a); y3=5-2*cos(1.5*a);%设置大球的运动轨迹

基于MATLAB的地震正演模型实现[1]

基于MATLAB的地震正演模型实现 贾跃玮 (中国地质大学(北京) 北京100083) 摘 要 人工合成地震正演模型是进行三维模型计算的基础。针对地震勘探的原理,本文运用MATLAB强大数学计算和图像可视化功能,对一个三层介质模型制作了人工合成地震记录。文章首先说明了地震记录形成的物理机制,然后介绍了地质模型的构造及参数选择,最后针对该具体地质模型制作了合成地震记录。 关键词 地震;MATLAB;正演 0引 言 地震勘探就是利用地下介质弹性和密度的差异,通过观测和分析大地对人工激发地震波的响应,推断地下岩层的性质和形态的地球物理方法。地震勘探是钻探前勘测石油与天然气资源的重要手段,在煤田和工程地质勘查、区域地质研究和地壳研究等方面,也得到广泛应用。 人工合成二维地震模型记录是各种复杂地震模型正演计算的基础,是对地震勘探经典理论的忠实实现。在实际工作中,针对具体地质构造进行二维地震模拟能够有效帮助地球物理工作者在地震剖面上识别各种地质现象。MATLAB环境集编程、画图于一体,特别适合人工合成地震记录的快速实现。因此,我们在MATLAB环境下设计了一个三层地质模型,并对该模型模拟了地震记录,旨在可视化地观察地震波场记录特征并验证地震褶积模型。 1地震记录形成的物理机制 在地震记录上看到的波形是地震子波叠加的结果,从地下许多反射界面发生反射时形成的地震子波,振幅大小决定于反射界面反射系数的绝对值,极性的正负决定于反射系数的正负,到达时间的先后取决于界面深度和覆盖层的波速。若地震子波波形用S(t)表示,反射系数是双程垂直反射旅行时t的函数,用R(t)表示,地震记录f(t)形成的物理过程在数学上就可表示为:f(t)=S(t)3R(t)=∫0T S(τ)R(t-τ)dτ 地震子波和反射系数资料常常不易取得,因此计算时常做这样一些假设: (1)地质模型的建立是来自大量观察实际地质结构的经验性归纳总结。 (2)为了模型建立和计算过程中突出理论数值,去除了一些干扰因素,对一切衰减、噪声都不进行考虑。 (3)地层在横向上均匀,纵向上是由大量具有不同弹性性质的薄层构成。 (4)地震子波以平面波形式垂直入射到界面,各薄层的反射子波与地震子波形状相同,只是振幅及极性不同。 (5)所有波的转换、吸收及绕射等能量损失都不考虑。 基于以上这些假设条件进行地震记录合就必须已知地震子波以及地层的反射系数,而反射系数又主要由地层的波阻抗反映,所以必须首先获取地层的速度和密度资料。 速度资料可通过连续速度测井获得,密度资料可从密度测井获得,得不到密度资料时,可近似假定密度不变,以速度曲线代替波阻抗曲线来计算反射系数。加德纳根据实际资料提出了一个由速度推算密度的经验公式: ρ=0.23V0.25 (速度单位:英尺/秒) 或 ρ=0.31V0.25 (速度单位:米/秒)

实验八MATLAB状态空间分析报告

实验八 线性系统的状态空间分析 §8.1 用MATLAB 分析状态空间模型 1、状态空间模型的输入 线性定常系统状态空间模型 x Ax Bu y Cx Du =+=+ 将各系数矩阵按常规矩阵形式描述。 [][][]11 121120 10 1;;;n n n nn n n A a a a a a a B b b b C c c c D d ==== 在MA TLAB 里,用函数SS()来建立状态空间模型 (,,,)sys ss A B C D = 例8.1 已知某系统微分方程 22d d 375d d y y y u t t ++= 求该系统的状态空间模型。 解:将上述微分方程写成状态空间形式 0173A ??=??--??,01B ??=???? []50C =,0D = 调用MATLAB 函数SS(),执行如下程序 % MATLAB Program example 6.1.m A=[0 1;-7 -3]; B=[0;1]; C=[5 0]; D=0; sys=ss(A,B,C,D) 运行后得到如下结果 a = x1 x2 x1 0 1

x2 -7 -3 b = u1 x1 0 x2 1 c = x1 x2 y1 5 0 d = u1 y1 0 Continuous-time model. 2、状态空间模型与传递函数模型转换 状态空间模型用sys 表示,传递函数模型用G 表示。 G=tf(sys) sys=ss(G) 状态空间表达式向传递函数形式的转换 G=tf(sys) Or [num,den]=ss2tf(A,B,C,D) 多项式模型参数 [num,den]=ss2tf(A,B,C,D,iu) [z,p,k]=ss2zp(A,B,C,D,iu) 零、极点模型参数 iu 用于指定变换所需的输入量,iu 默认为单输入情况。 传递函数向状态空间表达式形式的转换 sys=ss(G) or [A,B,C,D]=tf2ss(num,den) [A,B,C,D]=zp2ss(z,p,k) 例 8.2 11122211220.560.050.03 1.140.2500.1101001x x u x x u y x y x -??????????=+??????????-????????????????=??????? ????? 试用矩阵组[a ,b ,c ,d]表示系统,并求出传递函数。

数学建模_传染病模型 (1)

传染病模型 医学科学的发展已经能够有效地预防和控制许多传染病,但是仍然有一些传染病暴发或流行,危害人们的健康和生命。 社会、经济、文化、风俗习惯等因素都会影响传染病的传播,而最直接的因素是:传染者的数量及其在人群中的分布、被传染者的数量、传播形式、传播能力、免疫能力等。 一般把传染病流行范围内的人群分成三类:S 类,易感者(Susceptible),指未得病者,但缺乏免疫能力,与感染者接触后容易受到感染;I 类,感病者(Infective),指染上传染病的人,它可以传播给S 类成员;R 类,移出者(Removal),指被隔离或因病愈而具有免疫力的人。 问题提出 请建立传染病模型,并分析被传染的人数与哪些因素有关?如何预报传染病高潮的到来?为什么同一地区一种传染病每次流行时,被传染的人数大致不变? 关键字:传染病模型、建模、流行病 摘要:随着卫生设施的改善、医疗水平的提高以及人类文明的不断发展,诸如霍乱、 天花等曾经肆虐全球的传染性疾病已经得到有效的控制。但是一些新的、不断变异着的传染病毒却悄悄向人类袭来。20世纪80年代十分险恶的爱滋病毒开始肆虐全球,至今带来极大的危害。还有最近的SARS 病毒和禽流感病毒,都对人类的生产生活造成了重大的损失。长期以来,建立制止传染病蔓延的手段等,一直是各国有关专家和官员关注的课题。 不同类型传染病的传播过程有其各自不同的特点,弄清这些特点需要相当多的病理知识,这里不可能从医学的角度一一分析各种传染病的传播,而只是按照一般的传播模型机理建立几种模型。 模型1 在这个最简单的模型中,设时刻t 的病人人数x(t)是连续、可微函数, 病人人数的增加,就有 到考察的人数为常数足使人致病接触并且每天每个病人有效t t t ?+λ)(t t x t x t t x ?=-?+)()()(λ 程有个病人,即得微分方时有再设00x t = )1()0(,d d 0x x x t x ==λ 方程(1)的解为 )2()(0t e x t x λ= 结果表明,随着t 的增加,病人人数x(t)无限增长,这显然是不符合实际的。 建模失败的原因在于:在病人有效接触的人群中,有健康人也有病人,而其中只有健康人

控制系统状态空间分析的 MATLAB 设计

《控制系统状态空间分析的MATLAB 设计》 摘要 线性系统理论主要研究线性系统状态的运动规律和改变这些规律的可能性与实施方法;它包含系统的能控性、能观测性、稳定性分析、状态反馈、状态估计及补偿器的理论和设计方法。本文说明,线性变换不改变系统的传递函数,基于状态空间的极点配置不需要附加矫正装置,是改变系统指标的简单可行的重要技术措施;全维状态观测器与降维观测器不影响系统的输出响应。 关键词:状态反馈、极点配置、全维状态观测器、降维观测器 前言 线性系统理论是现代控制理论的基础,主要研究线性系统状态的运动规律 和改变这些规律的可能性与实施方法;建立和揭示系统结构、参数、行为和性能之间的关系。它包含系统的能控性、能观测性、稳定性分析、状态反馈、状态估计及补偿器的理论和设计方法。 该报告结合以线性定常系统作为研究对象,分析控制系统动态方程,系统 可控标准型,线性变换传递函数及其不变性,系统可控性与可观测性。系统状态观测器及降维观测器对系统的阶跃响应的影响,并分别绘制模型,及其系统阶跃响应的仿真。 正文 1. 已知系统动态方程: x?=[?0.40?0.01100?1.49.8?0.02]x +[6.309.8]u y =[0 1]x 2. 设计内容及要求:

验证线性变换传递函数不变性,适当配置闭环适当配置系统闭环极点,使 σ%<15%、t s <4s ,以及当系统闭环极点为λ1,2=-3±j4时设计系统的降维状态观测器也使σ%<15%、t s <4s ,并绘制带反馈增益矩阵K 的降维状态观测器及其系统仿真。 3. 系统设计: 1)求系统可控标准型动态方程; >> A1=[-0.4 0 -0.01;1 0 0;-1.4 9.8 -0.02]; >> B1=[6.3;0;9.8]; >> C1=[0 0 1]; >> D1=0; >> G1=ss(A1,B1,C1,D1); >> n=size(G1.a); >> Qc=ctrb(A1,B1); >> pc1=[0 0 1]*inv(Qc); >> Pc=inv([pc1;pc1*A1;pc1*A1*A1]); >> G2 = ss2ss(G1,inv(Pc)); >> Gtf=tf(G2); 程序运行结果知n=3,原系统是可控的且可控标准型为: x?=[0 1 00 01?0.0980.006 ?0.42]x?+[001 ]u y ?=[61.74 ?4.99.8]x? 传递函数为: G (s )=9.8s 2?4.9s+61074 s 3+0.42s 2?0.006s+0.098 2)计算系统的单位阶跃响应 >> hold on >> grid on;hold on; >> step(G1,t,'b-.') >> step(Gtf,t,'r--')

完全弹性碰撞matlab

Matlab设计实验 课题名称:完全弹性碰撞 一.设计背景: 完全弹性碰撞(Perfect Elastic Collision):在理想情况下,完全弹性碰撞的物理过程满足动量守恒和能量守恒。如果两个碰撞小球的质量相等,联立动量守恒和能量守恒方程时可解得:两个小球碰撞后交换速度。如果被碰撞的小球原来静止,则碰撞后该小球具有了与碰撞小球一样大小的速度,而碰撞小球则停止。多个小球碰撞时可以进行类似的分析。 二.设计意义 真实情况下,由于小球间的碰撞并非理想的弹性碰撞,还会有能量的损失,所以最后小球还是要停下来。 所以该设计主要用于研究能量守恒中的某些问题。还有就是用于实验演示。三.程序设计 该程序主要设置了三个不同颜色的小球,在真空环境下(理想环境下)的碰撞实验演示。 该程序可以通过改变各种参数,研究各种情况下的实验数据。 程序: pole=1.8;%定义摆线的长度 xmax=2;%定义横坐标长度 ymax=2;%定义纵坐标长度 basew=2.3;%定义图中方框的宽度 baseh=2.3;%定义图中方框的高度 instant=0.2;%定义摆线间距 %三视图的初始设置 %第一幅图

figure('name','理想情况下能量守恒定律 1','position',[500,340,440,320]);%定义第一幅图的标题和位置 fill([xmax,xmax,-xmax,-xmax,xmax,xmax-0.05,xmax-0.05,- xmax+0.05,-xmax+0.05,xmax-0.05],[ymax,-ymax,- ymax,ymax,ymax,ymax-0.05,-ymax+0.05,-ymax+0.05,ymax- 0.05,ymax-0.05],[0,1,1]); %填充底座背景 hold on;%保持当前图形及坐标所有特性 fill([xmax-0.05,xmax-0.05,-xmax+0.05,-xmax+0.05],[ymax- 0.5 ,ymax-0.55,ymax-0.55,ymax-0.5],'g');%填充方框内横杆背景 hold on;%保持当前图形及坐标所有特性 text(-0.25,1.7,'1');text(0,1.7,'2');text(0.25,1.7,'3');%在坐标处标识 说明文字 text( -1.0,1.7,'a');text( -1.0,-1.7,'b');%在坐标处标识说明文字 text(1.0,1.7,'真空容器');text(-1.8,1.7,'主视图');%在坐标处标识说明文 字 axis([-basew,basew,-baseh,baseh]);%定义背景坐标范围在x(-2.3~2.3) Y(-2.3~2.3)之间 %axis('off');%覆盖坐标刻度并填充背景 theta0=7 *pi/6;%摆线1的初始角度 x0=pole*cos(theta0);%摆线1末端x坐标 y0=pole*sin(theta0)+1.5;%摆线1末端y坐标 body1=line([-instant,x0-instant],[1.5,y0],'color','r','linestyle','- ','erasemode','xor');%设置摆线1 head1=line(x0- instant,y0,'color','r','linestyle','.','erasemode','xor','markersize',40);%设置第一个小球颜色,大小 theta1=3*pi/2;%摆线2,3的角度 x1=pole*cos(theta1);%摆线2,3末端x坐标 y1=pole*sin(theta1)+1.5;%摆线2,3末端y坐标 body=line([-0.001,x1],[1.5,y1],'color','k','linestyle','- ','erasemode','xor');%设置摆线2

相关文档
最新文档