主要内容

解捕食方程

这个例子展示了如何用这两种方法求解一个表示捕食者/猎物模型的微分方程ode23ode45. 这些函数用于使用变步长龙格-库塔积分法数值求解常微分方程。ode23使用简单的二阶和三阶公式对中等精度和ode45使用第四和第五对以获得更高的精度。

考虑一对一阶常微分方程生态方程,或捕食模型

dx dt x - α xy dy dt - y + β xy

变量 x y 分别测量猎物和捕食者的数量。二次交叉项解释了物种间的相互作用。捕食者数量在捕食者不存在时增加,捕食者数量在捕食者稀少时减少。

代码方程

要模拟该系统,创建一个函数,该函数返回状态导数的列向量,给定状态和时间值。这两个变量 x y 可以在MATLAB中表示为向量的前两个值y. 类似地,导数是向量中的前两个值yp这个function must accept values forty并返回由其中的方程产生的值yp

Yp (1) = (1 - y(2))*y(1)

Yp (2) = (-1 + *y(1))*y(2)

在这个例子中,方程包含在一个名为洛特卡.该文件使用的参数值为 α 0 01 β 0 02

类型洛特卡
函数yp = lotka(t,y) % lotka - volterra捕食-猎物模型。% Copyright 1984-2014 The MathWorks, Inc. yp = diag([1 - .01*y(2), -1 + .02*y(1)])*y;

模拟系统

使用ode23解定义的微分方程洛特卡间隔时间 0 < t < 15 .使用的初始条件为 x 0 y 0 20. 这样捕食者和猎物的数量是相等的。

t0 = 0;tfinal = 15;y0 = [20;20);[t,y] = ode23(@lotka,[t0 tfinal],y0);

阴谋的结果

将产生的种群与时间相乘。

情节(t, y)标题(“捕食者/猎物种群随时间的变化”)xlabel(“t”)伊拉贝尔(“人口”)传说(“猎物”“捕食者”“位置”“北”

图中包含一个轴对象。标题为Predator/Prey population Over Time的轴对象包含2个类型为line的对象。这些物体代表猎物,捕食者。

现在让人口互相残杀。由此得到的相平面图使种群之间的循环关系非常清楚。

情节(y (: 1), y(:, 2))标题(“相平面图”)xlabel(“猎物人口”)伊拉贝尔(捕食者种群的

图中包含一个轴对象。标题为Phase Plane Plot的轴对象包含一个类型为line的对象。

比较不同求解器的结果

使用第二次解决系统问题ode45,而不是ode23这个ode45求解器每一步花费的时间更长,但它也需要更大的步骤。然而,产量ode45是平滑的,因为默认情况下,求解器使用一个连续扩展公式,在所采取的每个步骤的跨度中,在四个等间隔时间点产生输出。(你可以调整点数与“完善”选择。)画出两个解决方案进行万博 尤文图斯比较。

[T,Y] = ode45(@lotka,[t0 tfinal],y0);情节(y (: 1), y (:, 2),“- - -”Y (: 1), Y (:, 2),“- - -”); 头衔(“相平面图”)传说(“ode23”“数值”

图中包含一个轴对象。标题为Phase Plane Plot的轴对象包含两个类型为line的对象。这些物件代表ode23和ode45。

结果表明,用不同的数值方法求解微分方程会得到略有不同的结果。

另请参阅

|

相关话题