捕食者与被捕食者问题微分方程与matlab
数学建模狐狸野兔问题

狐狸野兔问题摘要:封闭自然环境中的狐狸和野兔存在捕食与被捕食关系,本题旨在通过对自然状态下两物种数量变化规律的分析,推测加入人类活动(即人工捕获)时两物种数量的变化,进而得出人类活动对自然物种的影响,为人类活动提供参考,使其在自然允许的范围内,促进人与自然和谐相处。
对于问题一,首先建立微分方程,描述两物种数量随时间变化的Volterra 模型()0,0,0,021212211>>>>⎪⎪⎩⎪⎪⎨⎧+-=-=r r k k xyr y k dtdy xy r x k dtdx并用解析法求得狐狸与野兔数量的关系 ()()2211k r xk r yxeyec --=为直观反映两物种数量随时间的变化规律,选取三组有代表性的初值,利用Matlab 软件绘图。
在狐狸和野兔随时间的变化图像中,大致得出其数量呈周期变化,为进一步检验周期性,再用Matlab 绘图做出狐狸与野兔数量的关系图,得到封闭曲线,因此分析结果为:狐狸和野兔的数量都呈现周期性的变化,但不在同一时刻达到峰值。
对于问题二,利用数值解法,令模型中两式皆为0,即求得狐狸和野兔数量的平衡状态。
且由问题一中狐狸与野兔数量的关系图知野兔和狐狸的平衡量恰为他们在一个周期内的平均值。
对于问题三,在Volterra 模型基础上引入人工捕获系数。
只捕获野兔时,野兔的自然增长率降低,狐狸自然死亡率增加,改进后模型同问题二处理方式一样,求得平衡状态,得出结论:捕获野兔时,狐狸数量减少,野兔数量反而增加,即Volterra 原理:为了减少强者,只需捕获弱者。
只捕获狐狸时,分析方法与只捕获野兔时相同,并得出野兔狐狸数量皆增加的结论。
问题三为自然界人类捕获生物提供了新的思路,即可以在正常允许范围内,为了达到减少某一种群数量的目的,相应的捕获其食饵,或适度地捕获捕食者使捕食者与被捕食者的数量都有所增加。
关键词:Volterra 模型Matlab 软件解析法周期性一、问题重述在一个封闭的大草原里生长着狐狸和野兔。
数学建模实验二:微分方程模型Matlab求解与分析

实验二: 微分方程模型Matlab 求解与分析一、实验目的[1] 掌握解析、数值解法,并学会用图形观察解的形态和进行解的定性分析; [2] 熟悉MATLAB 软件关于微分方程求解的各种命令;[3] 通过范例学习建立微分方程方面的数学模型以及求解全过程; [4] 熟悉离散 Logistic 模型的求解与混沌的产生过程。
二、实验原理1. 微分方程模型与MATLAB 求解解析解用MATLAB 命令dsolve(‘eqn1’,’eqn2’, ...) 求常微分方程(组)的解析解。
其中‘eqni'表示第i 个微分方程,Dny 表示y 的n 阶导数,默认的自变量为t 。
(1) 微分方程 例1 求解一阶微分方程 21y dxdy+= (1) 求通解 输入:dsolve('Dy=1+y^2')输出:ans =tan(t+C1)(2)求特解 输入:dsolve('Dy=1+y^2','y(0)=1','x')指定初值为1,自变量为x 输出:ans =tan(x+1/4*pi)例2 求解二阶微分方程 221()04(/2)2(/2)2/x y xy x y y y πππ'''++-=='=-原方程两边都除以2x ,得211(1)04y y y x x'''++-= 输入:dsolve('D2y+(1/x)*Dy+(1-1/4/x^2)*y=0','y(pi/2)=2,Dy(pi/2)=-2/pi','x')ans =- (exp(x*i)*(pi/2)^(1/2)*i)/x^(1/2) +(exp(x*i)*exp(-x*2*i)*(pi/2)^(3/2)*2*i)/(pi*x^(1/2))试试能不用用simplify 函数化简 输入: simplify(ans)ans =2^(1/2)*pi^(1/2)/x^(1/2)*sin(x) (2)微分方程组例3 求解 d f /d x =3f +4g ; d g /d x =-4f +3g 。
捕食者-被捕食者模型中参数估计的新方法

) )
5 6
其中,k (1 k 6)为模型的待定参数。
通过对这个生态系统的观测可以得到若干组捕
食者和被捕食者在 t 时刻各自数目的观测数据(具
体可见2006年全国研究生数学建模竞赛B题中数据
文件DATA1.TXT、DATA2.TXT、DATA3.TXT和
DATA4.TXT)。利用有关数据,解决以下参数估计
ln复相关系数决定系数调整的决定系数回归方程的估计标准误差1000100010000000095718251误差来源离差平方和自由度方差f统计量概率p值回归平方和残差平方和总平方和1142910000114291380970000415810方差分析表变量回归系数取值回归系数的标准误差t统计量概率95的置信区间置信下限置信上限常数项13820000051201000001381913821200000001078100000200020001200000005852100000120001200110000000561110000010001000各参数的显著性检验表1表明回归分析的拟合优度为1000
观测值为参数 5,6 的估计值。对于问题1,取:
5 10, 6 60
综合以上分析结果得到所有参数的高精度估计值:
(1, 2 , 3, 4 , 5, 6 )T (2, 0.2,12, 1,10, 60)T
问题2.观测数据无误差,但2 未知时确定需要观
测数据的最少组数
图1 残差图
从残差图来看,残差围绕着0随机波动,说明使 用该模型比较合理。
由观测数据的散点图看出,捕食者-被捕食者模 型的解具有明显的周期性。即存在常数 T 0 ,使
得t,x(t T ) x(t)且 y(t T ) y(t) 。只要观测序列
认证考试数学建模试验谜底

实验一:食饵与捕食者的相互依存与制约分析 练习1:解微分方程组:,⎥⎦⎤⎢⎣⎡==⎥⎦⎤⎢⎣⎡-+⎥⎦⎤⎢⎣⎡⎥⎦⎤⎢⎣⎡--=⎥⎦⎤⎢⎣⎡3)0(2)0(,)sin (cos 999sin 299999812''v u x x x v u v u Input :function,f=f(x,y)f=[-2,1;998,-999]*y+[2*sin(x);999*(cos(x)-sin(x))];[x,y]=ode23('f',[0,10],[2,3]);xpauseyplot(x,y)Result :,练习2:解二阶微分方程4|,0)0(,0202022===++=t dt dg g g dt dg a dt g d ω Input :●function,f=zuni(t,y);global,a,wo;A=[0,1;,,-wo^2,-2*a];f=A*y;●global,a,wo;a=5;wo=1;[t,y]=ode45('zuni',[0::2*pi],[0,4])yplot(t,y(:,1),'b')hold,onplot(t,y(:,2),'g')output:,2.利用matlab实现食饵与捕食者系统的仿真:V olterra食饵与捕食者模型:⎪⎩⎪⎨⎧+-=+-=-=-=bxydy bx d y t y axy rx ay r x t x )()()()(.. 取2,25,02.0,1.0,5.0,100======y x b a d rInput:●function,dx=shier(t,x)global,r,d,a,b;dx=zeros(2,1);dx(1)=(r -a*x(2))*x(1)dx(2)=(-d+b*x(1))*x(2)●global,r,d,a,b;r=1;d=;a=;b=;ts=0::15;x0=[25,2];[t,x]=ode45('shier',ts,x0);xplot(x(:,1),x(:,2))3. 利用matlab 实现两种群共生系统的仿真:仿照上例编写程序。
Matlab上机实验题及参考解答

Matlab上机实验题及参考解答目录实验一Matlab初步实验 (2)一matlab基本功能介绍 (2)二Matlab扩展功能 (2)三练习 (2)四练习题参考解答 (3)实验二概率模型实验 (5)一复习 (5)二事件的响应 (5)三Matlab中随机数字的生成与处理 (5)四练习 (5)五练习题参考解答 (5)实验三插值与拟合 (7)实验四线性规划与非线性规划 (8)4.1 实验目的 (8)4.2 实验内容 (9)4.3 综合练习 (10)4.4 课外作业 (11)实验五数值计算 (12)5.1 实验目的 (12)5.2 实验内容 (12)4.3 综合练习 (15)4.4 课外作业 (15)实验六计算机图像处理 (16)6.1 实验目的 (16)6.2 实验内容 (16)6.3 综合练习 (17)6.4 课外作业 (19)实验七综合练习 (19)7.1 实验目的 (19)7.2 实验内容 (19)7.3 综合练习 (20)7.4 课外作业 (21)实验一 Matlab 初步实验 一 matlab 基本功能介绍1 编程环境2语法规范:for … end; if …else if …end; 3 矩阵运算 4 图形绘制二 Matlab 扩展功能1 编程练习:(1) 绘出序列kk x x r r 0(1),0.2083=+=;(2) 绘出曲线rtx t x e t 0(),0=>2 扩展功能(1) 矩阵中全部数据、部分数据的截取、更改; (2) 矩阵的初始化与赋值如:A=zeros(5,5); A(2:2:)=[1,2 3 4 5] 3 微积分基础(见实验4) 符号计算三 练习(课上编程完成下列练习,课后上机验证) 1 求和S=1+2+3+…+100; 2 求和e 1111!2!10!1...=++++3求和S 1112310!1...=++++4设A 234576138⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦, 求A 的逆、特征值和特征向量;验证Ax=λx 5 画函数图()011mrtm x x t x e x -=⎛⎫+- ⎪⎝⎭6 展开 (x-1)(x-2)…(x-100)7 因式分解 x 8—y 8; 因数分解200520068 求极限312lim +∞→⎪⎭⎫⎝⎛++n n n n9 )](sin[cos 22x x y += 求dxdy10 求积分x xdx 10ln ⎰11 求积分3⎰并且画出所求的平面区域12 设x+2y=1, 2x+3y=6, y=2x 2, 画出各个方程图形,求出曲线交点.四 练习题参考解答%MatlabTrain1.m clear all % 2nd e=1; temp=1; for I=1:1:10temp=temp*I; e=e+1/temp; end e%%%%%%%%%%% clear all % 3nd S=0; temp=1;for I=1:1:100temp=temp*I; endfor J=1:1:temp S=S+1/J; end S%%%%%%%%%%%%%% clear all % 11ndx=linspace(0,4); y=1./sqrt(x.^5+1); plot(x,y) for t=1:0.1:3yt=1./sqrt(t.^5+1);hold online([t,t],[0,yt]);end%fill(t,yt,'b') %%%%%%%%%%%%% clear all% 12ndx=linspace(-2,2);y=[0.5-0.5*x; 2-2/3.*x; 2*x.^2]; plot(x,y)grid实验二概率模型实验一复习1 小结上次编程练习中存在的问题,讲述部分习题答案2 画图命令介绍:line二事件的响应(1) 获取鼠标的位置%MatlabTrain2.mclear all% 鼠标响应p=ginput(3)plot(p(:,1),p(:,2),'r*')(2) 键盘输入相应t=input('How many apples? t=');m=t+3三Matlab中随机数字的生成与处理1 随机数的生成2 产生随机数字3 产生某区间的整数4 生日模拟问题的Montecaro法设计技术、思路学生尝试编程四练习(1) 编程验证人数在不同年龄段的生日的概率计算(2) 编程实现游戏”聪明伶俐100分”(3) 编程实现两家电影院的座位数问题(4) 编程实现某图形面积的计算五练习题参考解答(1) 生日问题程序示例:%birthPro.mn=0;nStudents=30;for I=1:1000 %how many times testy=0;x=1+floor(365*rand(1,nStudents));%get nStudents random numbersfor J=1:nStudents-1for K=J+1:nStudentsif x(J)==x(K)y=1;break;endendendn=n+y;%count, n times of that there are two people's dirthday in the same dayendfreq=n/I % caculating the frequently(2) 编程实现游戏”聪明伶俐100分”参考答案%MatlabTrain2.mclear all% 鼠标响应x=floor(10*rand(1,4))t=input('填入四个数字[n1 n2 n3 n4]=');flag=0;A=0;B=0;for I=1:1:8flag=flag+1;A=0;B=0;if t==xswitch flagcase 1disp('聪明绝顶!');case 2disp('聪明!');case 3disp('有点聪明!');case 4disp('还可以!');case 5disp('聪明伶俐100分!');case 6disp('聪明伶俐90分!');case 7disp('聪明伶俐85分!');case 8disp('聪明伶俐80分!');otherwisedisp('赫赫!');endbreak;endfor J=1:1:4for K=1:1:4if x(J)==t(K) & J==KA=A+1;else if x(J)==t(K) & J~=KB=B+1;endendendends='AABB';s(1)=INT2STR(A);s(3)=INT2STR(B);disp(s);t=input('不重复填入四个数字[n1 n2 n3 n4]=');endif flag>0disp('太烂了! 正确答案是:');xend实验三插值与拟合一复习讲述聪明伶俐100分的编程中的问题二插值三拟合课堂练习2 某之股票价格from 2003 09 01 to 2004 01 02,试进行插值、拟合%TimerS.m%from 2003 09 01 to 2003 01 02clear all;dataST=[15.09 14.7514.95 14.722.88 21.8619.82 19.09];plot(dataST)四课外练习112)进行多项式拟合,求出拟合多项式,并求出多项式在t=4, 5处的值.实验四线性规划与非线性规划4.1 实验目的1 用Matlab求解线性规划2 用Matlab求解非线性规划4.2 实验内容4.2.1 线性规划求解实用格式:x=lp(c, A, b, xLB,xUB,x0,nEq)可以求解下列线性规划模型:min f=c’xs.t. Ax=<=b(其中前nEq个约束为等式约束,即等式约束的个数,其余是不等式约束<=) xLB<=x<=xUB函数中x0参数是算法迭代的初始点,任意取值例1 求解下列线性规划1)123123123123min2..360210200,1,2,3jz x x xs t x x xx x xx x xx j=--+⎧⎪++≤⎪⎪-+≤⎨⎪+-≤⎪≥=⎪⎩,2)1235635623416367min..3621060,1,,7jz x x x x xs t x x xx x xx xx x xx j=-++-⎧⎪++=⎪⎪+-=⎪⎨-+=⎪⎪++=⎪≥=⎪⎩例1求解示例c=[-2 -1 1]';%book page 72 Number 16-1A=[3 1 1;1 -1 2;1 1 -1];b=[60 10 20]';xlb=[0 0 0]';xub=[inf inf inf]';x0=[0 0 0]'; x=lp(c,A,b,xlb,xub,x0,0)% x=(15 5 0)'例2 求解示例c2=[1 -1 1 0 1 -1 0]';%book page 72 Number 16-3A2=[0 0 3 0 1 1 0;...0 1 2 -1 0 0 0;...-1 0 0 0 0 1 0;...0 0 1 0 0 1 1];b2=[6 10 0 6]';xlb2=[0 0 0 0 0 0 0]';xub2=[inf inf inf inf inf inf inf]';x02=[0 0 0 0 0 0 0]';x2=lp(c2,A2,b2,xlb2,xub2,x02,4)% unbounded4.2.2 非线性规划1)命令格式1:[X, OPTIONS]=constr(‘FUN’, X, OPTIONS,VLB,VUB)2)命令格式2:X=FMINCON(FUN,X0,A,B,Aeq,Beq)% minimizes FUN subject to the linear equalities% Aeq*X = Beq as well as A*X <= B. (Set A=[] and B=[] if no inequalities exist.)例2 求解非线性规划y x x x x s t x3211221min22 ..1=++-≤-求解示例%unconop.mfunction y=unconop(x)y=x(1).^3+2*x(1).*x(2)+2*x(2).^2;%book page 148 ex.7-1 后建立调用函数xx=fmincon('unconop',[0 0]',[-1 0],-1,[],[])%book page 148 ex.7-1 4.3 综合练习学生独立编写程序,求解一个含有2个变量的线性规划问题,要求:1)编写程序,把可行域画上阴影;2)求出最优解,在可行域上标出最优解;3)求出基本解,并在上图中表示出来;4)求出基本可行解,观察单纯形方法迭代时,顶点的变化.可行域画图与表出阴影示例:syms x y[u(1),v(1)]=solve('y=x+2','y=2*x');%求出交点坐标[u(2),v(2)]=solve('y=-x+2','y=2*x');[u(3),v(3)]=solve('y=x+2','y=-x+2');x=linspace(0,3,5); %直线作图y=[2*x;-x+2;x+2];line(x,y); gridpatch(double(u),double(v),'b'); 运行结果:4.4 课外作业1 求解线性规划131223min ..250.530,1,2,3i x x s t x x x x x i +⎧⎪+≤⎪⎨+=⎪⎪≥=⎩ (1) 求解线性规划;x *=()(2) 目标函数中c 1由1变为(-1.25)时求最优解;(3) 目标函数中c 1由1变为(-1.25),c 3由1变为2时求最优解;(4) 约束条件中53b ⎛⎫= ⎪⎝⎭变为21b -⎛⎫'= ⎪⎝⎭时,求解;(5) 约束条件中53b ⎛⎫= ⎪⎝⎭变为23b ⎛⎫'= ⎪⎝⎭时,求解[刁在筠,运筹学(第二版),高等教育出版社,2004,01 p74第20题]2 求解非线性规划y x x x x x x x 3221122233min 2223=++++ 注:无约束非线性规划问题, 命令:fminunc子函数% unconop.mfunction y=unconop(x)y=x(1).^2+2*x(1).*x(2)+2*x(2).^2+2*x(2).*x(3)+3*x(3).^2;%book page 148 ex.7-1 主函数:xx=fminunc('unconop',[0.1 0.1 1]')思考:绘出两个变量的线性规划问题的可行域、标出可行的整数解和求出可行解;演示单纯形方法的迭代过程,如j z x x s t x x x x x j 121212min 2..360200,1,2=--⎧⎪+≤⎪⎪+≤⎨⎪⎪≥=⎪⎩实验五 数值计算5.1 实验目的1 掌握代数数值计算2 掌握常微分方程数值计算5.2 实验内容5.2.1 关于多项式设多项式1110()n n n n p x a x a x a x a --=++++表示为110[,,,,]n n p a a a a -=1)求多项式的根 roots(p) %求出p(x)=0的解。
食饵捕食者研究

具有干扰因素的食饵-捕食者模型分析目录目录摘要…………………………………………………………………第一部分前言………………………………………………………1.1 生态数学的的研究背景及发展…………………………………1.2 基础知识…………………………………………………………第二部分 Lotka-Volterra模型的改进及其稳定性的研究…………2.1Lotka-Volterra模型………………………………………………2.2模型的研究对象及改进…………………………………………2.3 模型的稳定性的研究……………………………………………第三部分数值模拟3.1利用matlab对模型进行了数值模拟……………………………3.2模型缺陷…………………………………………………………第四部分总结………………………………………………………致谢…………………………………………………………………参考文献………………………………………………………………第一部分 前言1.1 生态数学的的研究背景及发展生态系统具有稳定性、可测性和可控性三大属性,是多层次的、多因子的、多变量的系统,只用常规的定性描述和一般的数理统计,搞不清楚它的内在规律,运用数学模型对生态系统实行管理、预测和调控,使其持续稳定发展是现代生态学研究的重要领域。
种群动力学是生态学的一个重要分支.它广泛地利用数学思想加积分方程、差分方程、泛函微分方程、偏微分方程、算子理论等数学学科中的理论和方法,通过数学建模研究生物种群的生存条件、生物种群与环境之间相互作用的过程、生物种群的演变和发展趋势.揭示生物种群的变化规律,合理利用资源,促进生态平衡这是迄今为止数学在生态学中应用深入,发展最为系统和成熟的分支,种群 动 力 学的研究有着悠久的历史.早在1798年,Malthus 在研究人类的增长时,他引入数学方法,建立了最早的连续确定模型一一Malth 。
模型)(/)(t rN dt t dN =这是一个单种群模型.它反应了人类数量的变化,在t 不很长时是比较符合实际的,但当+∞→t 时种群规模将无限增长是不合实际的,究其原因在于它没有考虑到有限的资源对种群增长的制约作用.针对这个模型,后人不断分析各种因素的影响,完善和改进这一模型,使之能较好地反应人口(单种群)的变化规律,如P. F.Verhulst(1938年)建立的Logistic 模型)/)(1)((/)(k t N t rN dt t dN -=E.M .W right(1945年)建立的有确定时滞的Logistic 模型)/)(1)((/)(k r t N t rN dt t dN --=P. M. Nisbet 和W. S. C. Gurney(1984年)建立的具有生理阶段结构(stagestructure) 模型以及H. 1. Freedman 研究的具有斑块迁移的单种群模型等,无一不是对Malthus 模型的完善和扩展,极大地推动了种群动力学的发展现 实 世 界中种群不可能单独存在,它必与相关种群相互作用,相互依存.Lotka-Volterra 模型是种群动力学中最为经典和重要的两种群相互作用的动力学模型,该模型分别由意大利数学家Volterra(1923年)解释鱼群变化规律和美国种群学家Lotka(1921年)在研究化学反应时提出。
微分方程数值解

微分方程数值解4.1当常微分方程能解析求解时,可利用Matlab符号工具箱中的功能找到精确解. 见下例求解方程,,,. 键入: yyy,,,20syms x y %定义符号变量diff_equ= ‘D2y+2*Dy-y=0’; %D2y表示,,,Dy= y,yy=dsolve (diff_equ, ‘x’) %定义x为自变量 y=cl*exp ((2^(1/2)-1)*x+c2*exp (-(2^(1/2)+1)*x)%表达式中含c1与c2,表示通解.%初始条件为y (0)=0,,y(0)=1时,按如下方式调用 y=dsolve (diff_equ,‘y (0)=0’, ‘Dy (0)=1’, ‘x’) y=1/4*2^(1/2)*exp ((2^(1/2)-1)*x)—1/4*2^(1/2)*exp (-(2^(1/2)+1)*x)%画出函数y=y (x)的图形ezplot (y,[-2,2])图形具体形式请上机试之.在方程无法获得解析解的情况下,可方便地获得数值解. 下面的例子说明用Matlab求数值解的方法及应注意的问题.[例1] 求解范德堡(vander pol)方程2dxdx2,,,,,(1)0xx 2dtdt求解高阶方程,必须等价地变换为一阶微分方程组,对本例,通过定义两个新的变量,实现这一变换yxydxdt1,2/,, 则令 dydty1/2,2dydtyyy2/(11)*21,,,,编写求解程序分为两部分,第一部分为待求解的方程,存盘的文件名为,待求解方程的函数名.m,,第二部分为求解主程序,本例中取名为main1.m.首先编写待求解方程的文件. 文件存盘名为“vdpol.m”. M,function yprime=vdpol(,)tyyprime (1)=y (2);; (1(1)^2)*(2)(1),,yyymu=2 yprime=[yprime (1);yprime (2)]; yprime (2)=mu*说明函数yprime=vdpol中. 定义为自变量,的形式取决于求解方程的阶数,本(,)tyyt 例中,,为解向量,为导数向量. yprime, y(2)yyyy,[(1),(2)],(1)(1)(1),y yprime,,,函数返回vander pol方程的导数列向量. 因为所求结果为方程数值解,(2)(1),y所以各向量维数只有在主程序求解时定下精度后才能确定.主程序定名为main1.m,你可用你所喜欢的其它名子,但vdpol.m除外. clear functions%调试程序时,放置这一语句是必要的. 它清除前边已编译的存在于内存中的废弃程序[]=ode23 (‘vdpol’,[0,30],[1,0]); ty,y1=y (:,1); %解曲线.y2=y (:,2); %解曲线的导数.polt ( ‘_ _’) tyty,1,,2,说明龙格_库塔的2阶与4阶改进型求解公式的实现,其指令分别为:[]=ode23 (‘f’,tsx,0,options) tx,[]=ode45 (‘f’,tsx,0,options) tx,其中可由系统依据精度要求自动设定,亦可由使用者依据实际需要自己确定,分别说明之. ts(1)若令tstttf,[0,1,,],则输出在指定时刻tttf0,1,,给出,当tstktf,0::时,输出在区间[0,]ttf的等分点上给出,为步长. k(2)若tsttft,[0,],0为自变量初值,tf为终值,此时,options决定自变量的维数,t中的时间点不是等间隔的,这是为了保证所需的相对精度,积分算法改变了步长. 用于t,3,6设定误差限的参数options可缺省,此时系统设定相对误差为,绝对误差为,若1010自行设定误差限,可用如下语句:options=odeset (‘reltol’,, ‘abstol’,) rtat这里的与分别为设定的相对与绝对误差. rtat须注意的是无论用哪种方法确定ttf0,的取值方式,必须由使用者确定且应与相匹配. x0t,y0[1,0],ts,[0,30]y(0)1,y(0)0,为初始条件,本例中,因为,这意味着解曲线,,x0一般说,当解nnn个未知函数的方程组时,为维向量,共含有个初始条件. x0两个输出参数是列向量xx与矩阵,它们具有相同的行数,而矩阵的列数等于方程t组的个数,本例中y(:,1)y(:,2)的列数为2,其中,为自变量上各点函数值,为上各ytt点导数值.最后,提请读者注意的是:ode45也不总是比ode23好,在很多时候,低阶算法更有效,有关微分方程数值解法的更进一步信息,请参考数值分析方面的书籍. 有些参考书提供了一些关于算法选择和如何处理那些时间常数变化范围大的病态方程的非常实用的算法. 4.2 -设有一阶方程与初始条件,yfxy,(,), (4.1) ,yxy(),00,其中适当光滑,关于满足Lipschitz条件,即存在使 fxy(,)LyfxyfxyLyy(,)(,),,,1212则(4.1)式的解存在且惟一.关于yyx,()的解析解一般难以求到或根本无解析解,因而,实际问题中,通常,采用差分的方法. 在一系列离散点xxx,,,,yyy,,,,上寻求其数值近似解. 12n12n相邻两个节点间的间距xxnhn,,,,1,2,hxx,,称为步长,一般地取等步长,则hn0nnn,11、欧拉方法在区间[,]xx上用差商 nn,1yxyx()(),nn,1 h代替(4.1)式中,[,]xxxxxy,对fxy(,)中在上取值还是,而形成向前欧拉公式nn,1nn,1与向后欧拉公式.(1)向前欧拉公式xfxy(,)取左端点,得如下公式 nyxyxhfxyx()()(,()),,(4.2) nnnn,1从yxy(),x点出发,由初值代入(4.2)求得 000yyhfxy,,(,) (4.3) 1000反复利用(4.2),有yyhfxyn,,,(,) 0,1,2, (4.4) nnnn,1其几何意义如图4.1所示.y 图中yyx,()为方程(4.1)的精确 P P43P 2解曲线,其上任意点(,)xy处切线斜率为误差 P 1yyx,() 32Pxy(,)fxy(,). 从初值点出发,用该 P000 0y 0点斜率fxy(,)xx,作一直线段,在 001yyx,() yx() 3处得到Pxy(,)y,由(4.2)式确定, 1111y 3再从Pxy(,)fxy(,)出发,以为斜率 11111作直线段,在xx,Pxy(,)处得到, 2222xxxxx x O03124PPP, 012作为积分曲线yx()的近似,用图4.1 yyx,()n,1这一过程继续下去,形成折线表示在xy处的精确值,为解的近似值,不难得到 n,1n,12h32,,()()()()yxyyxOhOh,,,, nnn,,112P,1这一误差称为局部截断误差. 若一种算法局部截断误差为Oh(),则称该算法具有阶P精度,所以向前欧拉公式具有1阶精度.(2)向后欧拉公式若[,]xxxx中取中的,则有如下公式: fxy(,)nn,1n,1yyhfxyn,,,(,) 0,1,2, (4.5) nnnn,,,111称式(4.5)为向后欧拉公式,因为此式中y未知,故称其为隐式公式,无法用其直n,1接计算y,一般用向前欧拉公式产生初值. n,1(0)yyhfxyn,,,(,) 0,1,2, 11nnnn,,再按下式迭代(1)()kk,yyhfxykn,,,,(,),0,1,,0,1, nnnn,,,111其误差估计如下2h32,,()()()()yxyyxohoh,,,, nnn,,112精度亦为1阶,将向前欧拉公式(4.4)与向后欧拉公式(4.5)及它们的误差的几何说明作一对比,是十分有益的,见图4.2.y 为讨论局部截断误差,在图4.2中设点APxy(,)落在积分曲线yyx,()上,按式 nnnyyx,() (4.4)及式(4.5)分别得 ,P点为与, ABn,1 B且P AB,yyx,()点一定在积分曲线上相应 n点的上、下两边,所以将式(4.4)与(4.5) , 平均之,一定能得到更好的结果.xxx (3)梯形公式 nn,1 将向前与向后欧拉公式加以平均得到所图4.2 谓梯形公式hyyfxyfxyn,,,,[(,)(,)] 0,1,2, (4.6) nnnnnn,,,11123其局部截断误差为Oh(),具有2阶精度.(4)改进的欧拉公式为使计算简单,又免去迭代的繁复,将公式(4.6)简化为两步yyhfxy,,(,)nnnn,1h (4.7) yyfxyfxyn,,,,[(,)(,)], 0,1,2,nnnnn,,11n,12或写为h,yykk,,,()nn,112,2,1nn (4.8) n,0,1,2,kfxy,(,),,211nn,kfxyhk,,(,),,最后指出,上述欧拉方法可推广至微分方程组,如,yfxyz,(,,),,,zgxyz,(,,), ,yxy(),00,,zxz(),,00向前欧拉公式为yyhfxyz,,(,,),nnnnn,1 n,0,1,2, ,zzhgxyz,,(,,),nnnnn,12、龙格_库塔方法由微分中值定理,[()()]/(),01yxyxhyxh,,,,,,, nnn,1又因为,,yxhfxhyxh()(,()),,,,,,,yfxy,(,),所以 nnn从而有yxyxhfxhyxh()()(),(),,,,,, (4.9) nnnn,1令[,]xx,称其为区间上的平均斜率,由(4.9)可知,给kfxhyxh,,,(,()),,nn,1nn出一种平均斜率,可相应导出一种算法. 向前欧拉公式中,精度低. 改进欧kfxy,(,)nn1拉公式中取[,]xxkfxyfxy,,((,)(,)),精度提高,下面,我们在区间内nn,1nnn,1n,12多取几个点,将其斜率加权平均,就能构造出精度更高的计算公式,公式的推导不再具体给出,只开列具体结果.(1)2阶龙格_库塔公式yyhkk,,,(),,,nn,11122,kfxy,(,) (4.10) 1nn,,21nnkfxahyhka,,,,,(,),0,1,,,1,其中,,,,,,,1,,1a,由于4个未知数只有3个方程,所以解不惟一,若令1222a1,即得改进的欧拉公式,具有2阶精度. ,,,,,,,,1a122(3)4阶龙格_库塔公式只给出精典格式中最常用的一种.h,yykkkk,,,,,(22)nn,11234,6,kfxy,(,),1nn,hh, (4.11) kfxyk,,,(,),21nn22,hh,kfxyk,,,(,)32nn,22,kfxhyhk,,,(,),43nn,其计算精度为4阶4.31、模型与问题[例2] 单摆运动图4.3中一根长的细线,一端固定,另一端悬挂质量为 lm的小球,在重力作用下,小球处于竖直的平衡位置. 现使小球偏离平衡位置一个小的角度,然后使其自由运动,在不 ,考虑空气阻力情形下,小球将沿弧线作周期一定的简谐运动.为平衡位置,在小球摆动过程中,当与平衡位置夹 ,,0角为,mgsin,时,小球所受重力在其动运轨迹的分量为 , , l(负号表示力的方向使减少),由牛顿第二定律可得微分方 ,程,,mltmg,,()sin,, (4.12)设小球初始偏离角度为,,且初速为0,式(4.12)的初 0,始条件为,,,,(0),(0)0,, (4.13) 0 mg 当,不大时,,式(4.12)化为线性常系数微sin,,,0分方程图4.3g,,,,,,0 (4.14) l解得g,,()costt, (4.15) 0ll简谐运动的周期为. T,2,g现在的问题是:当,较大时,仍用近似,误差太大,式(4.12)又无解析解,,sin,0试用数值方法在,,30,10,,两种情况下求解,画出的图形,与近似解(4.15),()t00比较,这里设. l,25cm[例3] 捕食与被捕食当鲨鱼捕食小鱼,简记为乙捕食甲,在时刻,小鱼的数量为,鲨鱼的数量为,xt()yt()t当甲独立生存时它的(相对)增长率与种群数量成正比,即有,r,为增长率,xtrxt()(),而乙的存在使甲的增长率r减少,设减少率与乙的数量成正比,而得微分方程,xtxtraytrxaxy()()(()),,,, (4.16)比例系数a反映捕食者掠取食饵的能力.乙离开甲无法生存,设乙独自存在时死亡率为,,ytdyt()(),,,甲为乙提供食物,d使乙的死亡率降低,而促其数量增长,这一作用与甲的数量成正比,于是yt()满足 d,ytydbxtdybxy()(()),,,,,,(4.17)比例系数反映甲对乙的供养能力,设若甲,乙的初始数量分别为 bxxyy(0);(0),, (4.18) 00则微分方程(4.16),(4.17)及初始条件(4.18)确定了甲,乙数量xt()、yt()随时间变化而演变的过程,但该方程无解析解,试用数值解讨论以下问题:(1)设rdabxy,,,,,,1,0.5,0.1,0.02,25,2,求方程(4.16),(4.17)在00条件(4.18)下的数值解,画出xtyt(),()的图形及相图(,)xy,观察解xtyt(),()的周期变化,近似确定解的周期和的最大、小值,近似计算在一个周期内的平均值. xy,xy,(2)从式(4.16)和(4.17)消去得到 dtdxxray(),, (4.19) dyydbx(),,解方程(4.19),得到的解即为相轨线,说明这是封闭曲线,即解确为周期函数.(3)将方程(4.17)改写为,1yxtd()[],,(4.20) by在一个周期内积分,得到xt()yt()一周期内的平均值,类似可得一周期内的平均值,将近似计算的结果与理论值比较.2、实验(1)方程(单摆问题),,mlmg,,,,sin, ,,,,,(0),(0)0,,0,无解析解,为求其数值解,先将其化为等价的一阶方程组. 令,xx,,,,,,方程化为 12,,xx,12,g,,21,,xxsin ,l,102,,xx(0),(0)0,,,其中,gl,,9.8,25,,为(弧度)与(弧度)两种情况,具100.1745,300.5236,0体编程如下:先以danbai.m为文件名存放待解方程. 键入: function xdot =danbai (t,x) %x=[x (1),x (2)],g=9.8;1=25; %x (1)为解向量, x (2)是导数 xdot (1)=x (2); %xdot(1)=,,(1)= x,xdot (2)=-g/1*sin (x (1)); %xdot (2)=,, ,xdot=[xdot (1);xdot (2)]; %必须将导数向量以列向量形式给出.再以主程序(求数值解)调用待求方程,主程序用main2.m为文件名存盘,其代码如下:clear functions[t,x]=ode23 (‘danbai’,[0,10],[0.1745,0])%只计算,,100.1745,(弧度)的情形.01g,,()cos,twtw,,%对近似解,周期 T2,,01gw=sqrt (9.8/25);y=0.1745*cos (w*t);[t,x (:,1),y] %显示数据,无分号. hold on %欲在同一幅图中画近似解. plot (t,x (:,1), ‘b’) %画数值解,绿色plot (t,y, ‘g*’) %用*号,红色画近似解. Hold off(2)食饵_捕食者方程,xtrxaxy(),,,ytdybxy(),,,可化为如下形式,,xrayx,0,,,,,,, ,,,,,,0,,dbxy,,,,y,,初始条件xxyy(0),(0),,表示为 00xx(0),,,,0 ,,,,,yy(0),,,,0以shier.m存盘如下代码function xdot=shier (t,x)r=1;d=0.5;a=0.1;b=0.02;xdot=diag ([r-a*x (2),-d+b*x (1)])*x;,,xxx(1),,,,%x=,,,xdot= ,,,,,,,xy(2),,,,y,,以main3.m存盘如下代码.clear functionsts=0:0.1:15;x0=[25,2];[t,x]=ode45 (‘shier’,ts,x0);[t,x] %显示数据t,x,y plot (t,x)gird %加网格线gtext (‘x(t)’),gtext (‘y(t)’), %用点鼠标方式pause,figure (2) %将x(t),x(t)放至指定点 12plot (x (:,1),x (:,2)) %以x (1)与x (2)为坐标点画相图xlabel (‘x’),ylabel (‘y’)可以猜测,xt()xt()(,)xx与是周期函数,相图是封闭曲线,从数值解可近似定出2121周期为10.7,x2.0,x的最大和最小值分别为与的最大和最小值分别为和,99.328.42.012为求xx与在一个周期的平均值,只需键入: 12y1=x (1:108,1); %x周期为10.7. 1x1p=trapz (y1)*0.1/10.7, %trapz (y1)返回按 y2=x (1:108,2); %梯形法对y1的积107yiyi1()1(1),,x2p=trapz (y2)*0.1/10.7, %分值,x ,i12i,可得xx,,25,10 12对方程dxxray(),,,,dbxray,dxdy,化为 dyydbx(),,xy积分得解dbxray,,()()xeyec, (4.21)即为原方程组的相轨线,其中c由初始条件确定. 为说明上述相轨线是封闭的,令dbxray,,fxxegyye();(),,设其最大值分别为fg,xy,,若满足 mm00fxffyg(),(),, 00mmdr则有,,xy,fgc,,(令,可解出),又当时,相轨线(4.21)fg,,0,0xy,,,00mm00ba有意义. 当fgc,0,,cfgPxy(,)时,相轨线退化为一个点,对时,相轨线如mmmm00图4.4(c),而图(a),(b)分别为fx()与gy()的图像,下面讨论如何由(a),(b)画(c).fxf(),nm y gyg(),gv()nm fx() y2 gm fm Pxy(,)qq 00 1 yP q02 q3 y1x y x x xxxy xyxy012001221 (a)(b)(c)图4.4设cpgpf,,,(0)yy,,xx,fxp(),,若令,则有,由(a)知,,使mm012qxy(,)xxx,,qxy(,)fxfxp()(),,,且于是相轨线应过与,对11010222012 fxgxpggyg()()(),,,xxx,(,)fxp(),gyq(),,,由,令,又由(b)知,mm12 存在yyy,,qxy(,)yy,gygyq()(),,qxy(,)使,且,于是相轨线又过与10231121242yyyyy,(),,xqq,两点,所以对间每个,轨线总要通过纵坐标为的两点,于是1210212相轨线是一条封闭曲线.相轨线封闭等价于xtyt(),()是周期函数,记周期为,为求其在一个周期内的平均T值(,)xy,由1yxtd()(),, by两边在一个周期内积分有((0)())yyT,:T11ln()ln(0)yTydTd,,,xxtdt,,,,() ,,,0TTbbb,,同理ry, a从而xxyy,,,00即xy的平均值恰为相轨线中心点的坐标,提请读者注意的是:这里的与与xtyt(),()p00初始条件中的xy,不是一件事. 00注意到在生态学上的意义,上述结果表明,捕食者的数量与食饵的增长率成rdab,,,正比,与它掠取食饵的能力成反比,食饵的数量与捕食者死亡率成正比,与它供养捕食者的能力成反比.3、练习内容(1)编写改进欧拉公式求微分方程数值解的程序,并用其与ode23求下列微分方程数值解,对二者作出比较.a)22,yxyy,,,,(0)0或y(0)1,.222 b),,,xyxyxny,,,,()02,,,21 yxsin,n,,(Bessel方程,这里令,其精确解为). yy()2,(),,,x222,c),,,yyxyy,,,,cos0,(0)1,(0)0.(2)倒圆锥形容器,上底面直径为1.2m,容器的高亦为1.2m,在锥尖的地方开有一直径为3cm的小孔,容器装满水后,下方小孔开启,由水利学知识可知当水面高度为时,h水从小孔中流出的速度为为重力加速度,若孔口收缩系数为0.6(即若一个面vghg,2,积单位的小孔向外出水时,水柱截面积为0.6),问水从小孔中流完需多少时间?2分钟时,水面高度是多少?(3)一只小船渡过宽为的河流,目标是起点正对着的另一岸上点,已知河水ABd流速vv与船在静水中的速度之比为. k12(a)建立小船航线的方程,求其解析解.(b)设dvv,,,100m,1m/s,2m/s,用数值解法求渡河所需时间,任意时刻小12 船的位置及航行曲线,作图并与解析解比较.(c)若流速v为0,0.5,2 (m/s),结果将如何? 1(4)研究种群竞争模型. 当甲、乙两个种群各自生存时,数量演变服从下面规律xyxtrxytry()(1),()(1),,,, 12nn12其中,rr,nn,xtyt(),()分别为时刻甲,乙两个种群的数量,为其固有增长率,为它t1212们的最大容量,而当这两个种群在同一环境中生存时,由于乙消耗有限资源而对甲的增长产生影响,将甲的方程修改为xyxrxs,,,(1) (4.22) 11nn12这里s的含意是:对于供养甲的资源而言,单位数量乙(相对n)的消耗率为单位数12量甲(相对n)消耗的s倍,类似地,甲的存在亦影响乙的增长,乙的方程应改为 11xyytrys()(1),,, (4.23) 22nn12给定种群的初始值为xxyy(0),(0),, (4.24) 00及参数rrssnn,,,,,后,方程(4.22)与(4.23)确定了两种群的变化规律,因其解析121212解不存在,试用数值解法研究以下问题:(a)设rrnnssxy,,,,,,,,1,100,0.5,2,10,计算,画出xtyt(),()12121200 它们的图形及相图(,)xy,说明时间充分大以后xtyt(),()的变化趋势(人们今天看到的t已经是自然界长期演变的结果).(b)改变rrxy,,,,但s与s不变(保持ss,,1,1),分析所得结果,若12001212ss,,,,1.5(1),0.7(1),再分析结果,由此你得到什么结论,请用各参数生态学上的12含义作出解释.(c)试验当ss,,,,0.8(1),0.7(1)ss,,,,1.5(1),1.7(1)时会有什么结果;当1212时又会出现什么结果,能解释这些结果吗?。
数学建模实验三 Lorenz模型与食饵模型

数学建模实验三 Lorenz模型与食饵模型一、实验目的1、学习用Mathematica求常微分方程的解析解和数值解,并进行定性分析;2、学习用MATLAB求常微分方程的解析解和数值解,并进行定性分析。
二、实验材料问题图是著名的洛仑兹混沌吸引子,洛仑兹吸引子已成为混沌理论的徽标,好比行星轨道图代表着哥白尼、开普勒理论一样。
洛仑兹是学数学出身的,1948年起在美国麻省理工学院(MIT)作动力气象学博士后工作,1963年他在《大气科学杂志》上发表的论文《确定性非周期流》是混沌研究史上光辉的著作。
以前科学家们不自觉地认为微分方程的解只有那么几类:1)发散轨道;2)不动点;3)极限环;4)极限环面。
除此以外,大概没有新的运动类型了,这是人们的一种主观猜测,谁也没有给出证明。
事实上这种想法是非常错误的。
1963年美国麻省理工学院气象科学家洛仑兹给出一个具体模型,就是著名的Lorenz模型,清楚地展示了一种新型运动体制:混沌运动,轨道既不收敛到极限环上也不跑掉。
而今Lorenz 模型在科学与工程计算中经常运用的问题。
例如,数据加密中。
我们能否绘制出洛仑兹吸引子呢图洛仑兹混沌吸引子假设狐狸和兔子共同生活在同一个有限区域内,有足够多的食物供兔子享用,而狐狸仅以兔子为食物.x为兔子数量,y表狐狸数量。
假定在没有狐狸的情况下,兔子增长率为400%。
如果没有兔子,狐狸将被饿死,死亡率为90%。
狐狸与兔子相互作用的关系是,狐狸的存在使兔子受到威胁,且狐狸越多兔子增长受到阻碍越大,设增长的减小与狐狸总数成正比,比例系数为。
而兔子的存在又为狐狸提供食物,设狐狸在单位时间的死亡率的减少与兔子的数量成正比,设比例系数为。
建立数学模型,并说明这个简单的生态系统是如何变化的。
预备知识1、求解常微分方程的Euler 折线法求初值问题⎩⎨⎧=='00)(),,(y x y y x f y () 在区间],[0n x x 上的数值解,并在区间插入了结点)()(110n n x x x x <<<<- 。