数学建模实验三Lorenz模型与食饵模型

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数学建模实验三

Lorenz 模型与食饵模型

一、 实验目的

1、 学习用Mathematica 求常微分方程的解析解和数值解,并进行定性分析;

2、 学习用MATLAB 求常微分方程的解析解和数值解,并进行定性分析。

二、 实验材料

2.1问题

图3.3.1是著名的洛仑兹(E.N.Lorenz)混沌吸引子,洛仑兹吸引子已成为混沌理论的徽

标,好比行星轨道图代表着哥白尼、开普勒理论一样。洛仑兹是学数学出身的, 1948年起

在美国麻省理工学院(MIT )作动力气象学博士后工作,

1963年他在《大气科学杂志》上

发表的论文《确定性非周期流》是混沌研究史上光辉的著作。以前科学家们不自觉地认为微 分方程的解只有那么几类:1)发散轨道;2)不动点;3)极限环;4)极限环面。除此以外,大 概没有新的运动类型了,

这是人们的一种主观猜测,谁也没有给出证明。事实上这种想法是

非常错误的。1963年美国麻省理工学院气象科学家洛仑兹给出一个具体模型,就是著名的 Lorenz 模型,清楚地展示了一种新型运动体制:混沌运动,轨道既不收敛到极限环上也不 跑掉。而今Lorenz 模型在科学与工程计算中经常运用的问题。例如,数据加密中。我们能 否绘制出洛仑兹吸引子呢?

假设狐狸和兔子共同生活在同一个有限区域内, 有足够多的食物供兔子享用, 而狐狸仅

以兔子为食物.X 为兔子数量,y 表狐狸数量。假定在没有狐狸的情况下,兔子增长率为400%。 如果

没有兔子,狐狸将被饿死,死亡率为 90%。狐狸与兔子相互作用的关系是,狐狸的存

在使兔子受到威胁,且狐狸越多兔子增长受到阻碍越大,设增长的减小与狐狸总数成正比, 比例系数

为0.02。而兔子的存在又为狐狸提供食物, 设狐狸在单位时间的死亡率的减少与兔

子的数量成正比,设比例系数为 0.001。建立数学模型,并说明这个简单的生态系统是如何

变化的。

2.2预备知识

1、求解常微分方程的 Euler 折线法

求初值问题

= f (x,y), • yX) =y

(12.1 )

图3.3.1洛仑兹(E.N.Lorenz)混沌吸引子

在区间[X o

,

X n ]上的数值解,并在区间插入了结点 (X o ::: )

X i

:::…:::X n 」(:::X n

)。由导数

的定义 f (x)二lim 丄乜一h)——,即微商 f (x):、丄纟一h)——f

(X )

。(右端称为差商)

h

-h

h

从而可在每个结点上用差商来近似替代导数,将微分方程 f (X ,y)转化为代数方程组

(此处的代数方程组常称为差分方程)

y (X k ,y (X k )),k",i, ,n_i h

加上初值条件则可确定一组解。求解这一差分方程即可得到微分方程初值问题的数值解。 变

形上述方程有

y(x k h)二 y(xQ hf (x k , y(xj) ,k=0,1「,n-1

记 x k i = x k h , y(X k ) = y k ,从而 y(X k • h) = y k 1,则有

y o =y(x o ),

<

X2

=X k +h , k =0,1,…,n -1

y k 1 二 y k

hf (X k ,y k ),

这就是求解微分方程初值问题的欧拉

(Euler)折线法。之所以称为欧拉折线法是因为:

就几何

角度而言,所求得的近似解是初值问题精确解的折线逼近, 而且此折线的起点是初值条件所

对应的点。

2、微分方程的Mathematica 求解

(1) 求解命令

有两个命令:DSolve[]与NDSolve 。命令格式分别为 DSolve[方程,y , x]

NDSolve [方程,y , { x , xl , x2门。

其中方程必须为微分方程及相应初始条件, {x , xl , x2 }说明要给出数值解的范围为区

间]x1, x2]o

(2) 使用的注意事项

① 方程中的函数应写成完整形式 y[x],以表明y 是x 的函数; ② 方程应写成…==•••的形式;

③ 重复使用时,应随时清除要涉及变量的以前定义,方法是

Clear[y];

④ 使用NDSolve 时,所加初始条件的个数应等于微分方程的阶数, 同时方程中也不含其

它参数,否则给不出正确结果。

(3) 解的表示形式

Mathematica 给出的微分方程的解是以纯函数(或数学中的算子)定义的形式给出的, 例如:DSolve[y'[x]+ 3*y [x]==2x,y,x] 的结果是

3、微分方程的MATLAB 求解

(1) 求解析解

命令dsolve ;

(2) 求数值解命令 ODE 或Simulink 。

2.3建立模型

问题(1 )的洛仑兹吸引子可以用下面的微分方程得到,著名的 Lorenz 模型的状态方

程可表示为

{{丫 十 Function [ {K J-

X1(t)二-X(t)X2(t)X3(t)

X2(t)「-;「X2(t);「X3(t)

X3(t)二—X1(t)X2(t)「X2(t)—X3(t)

若令;「= 10, Q = 28, :=8/3,且初值为x,。)= x2(0) = 0, x3 (0)=;,;为一个小常

数,假设;=10」°。求微分方程的数值解,并绘制出时间曲线与相空间曲线。

问题(2)是著名的食饵模型,数学模型为

丈=4x-0.02xy

y = —0.9y +0.001xy

2.4练习题

1、求解微分方程、 2xy =xe'的通解。

求解的Mathematica命令为:

DSolve[y'[x]+2*x*y[x]== x*E A(-x A2),y,x] 或者

DSolve[D[y [ x],x]+2*x*y[x]== x*EA(-xA2),y,x]

2、求微分方程xy: y -e x=0在初始条件y = 2e下的特解。应给出的命令为:

DSolve[{x*y'[x]+ y[ x]-EAx==0,y[1]==2E},y,x]

3、求(x2 -1)dy - 2xy-cosx =0在初始条件y(0) = 1下的特解,并画出解的图形。

dx

要求分别求解析解与数值解并作比较。

清除要涉及变量的命令为:

Clear[x,y]

求解析解的命令为:

sc=DSolve[{(xA2-1)y'[x]+2x*y[x]-Cos[x]==0,y[0]==1},y,x]

画解析解图像的命令为:

y=y/.sc[[1]]

g1= Plot[y[x],{x,0,1},PlotStyle->RGBColor[1,0,0]]

注:也可将画图范围变为Plot[y[x],{x,0,4}]

求数值解的命令为:

sn=NDSolve[{(xA2-1)y'[x]+2x*y[x]-Cos[x]==0,y[0]==1}, y,{x,0,1}]

画数值解图像的命令为:

y=y/.sn[[1]]

g2=Plot[y[x],{x,0,1}]

比较解析解图像与数值解图像的命令为:

Show[g1,g2]

4、求微分方程组

虫+5x + y = d ,

jdt

—”0

-dt

在初始条件x(0) =1,y(0) =0下的解,并画出解函数y二y(x)的图形。

求解微分方程组的命令为:

Clear[x,y,t] xy=DSolve[{x'[t]+5*x[t]+y[t==EAt,y'[t]-x[t]-3*y[t]==0,x[0]==1,y[0]==0},{x,y},t] 画解的相位图的命令为:

y=y/.xy[[1]];

x=x/.xy[[1]];

ParametricPlot[{x[t],y[t]},{t,0,3},PlotRange->{{-10,2},{0,5}}]

相关文档
最新文档