解捕食方程
这个例子展示了如何同时使用捕食者/被捕食者模型来求解微分方程ode23
而且数值
.这些函数是用变步长龙格-库塔积分法对常微分方程进行数值求解的。ode23
使用一个简单的二阶和三阶对公式的中等精度和数值
使用四阶和五阶对以获得更高的精度。
考虑一对一阶常微分方程称为生态方程,或捕食模型:
的变量 而且 分别测量猎物和捕食者的数量。二次交叉项说明了物种之间的相互作用。当捕食者不存在时,捕食者的数量增加,而当猎物稀少时,捕食者的数量减少。
代码方程
为了模拟系统,创建一个函数,该函数返回给定状态和时间值的状态导数的列向量。这两个变量
而且
可以在MATLAB®中表示为矢量的前两个值y
.类似地,导数是向量的前两个值yp
.函数必须接受的值t
而且y
并返回由中的方程产生的值yp
.
Yp (1) = (1 - *y(2))*y(1)
Yp (2) = (-1 + *y(1))*y(2)
在本例中,方程式包含在一个名为lotka.m
.该文件使用的参数值
而且
.
类型洛特卡
function yp = lotka(t,y) % lotka lotka - volterra捕食者-猎物模型。The MathWorks, Inc. yp = diag([1 - .01*y(2), -1 + .02*y(1)])*y;
模拟系统
使用ode23
求解中定义的微分方程洛特卡
在时间间隔
.使用初始条件为
所以捕食者和猎物的数量是相等的。
t0 = 0;tfinal = 15;y0 = [20;20);[t,y] = ode23(@lotka,[t0 tfinal],y0);
阴谋的结果
绘制出结果的人口与时间的关系图。
情节(t, y)标题(“掠食者/猎物数量随时间变化”)包含(“t”) ylabel (“人口”)传说(“猎物”,“捕食者”,“位置”,“北”)
现在画出种群间的对立关系。由此得到的相平面图使种群之间的循环关系非常清楚。
情节(y (: 1), y(:, 2))标题(“相平面的阴谋”)包含(“猎物人口”) ylabel (捕食者种群的)
比较不同求解器的结果
第二次使用求解系统数值
,而不是ode23
.的数值
求解器每一步花费的时间更长,但也需要更大的步骤。然而,输出数值
是平滑的,因为在默认情况下,求解器使用连续扩展公式在所采取的每一步的跨度中四个等间隔的时间点产生输出。(您可以使用“完善”
选择。)画出两个解进行比较。
[T,Y] = ode45(@lotka,[t0 tfinal],y0);情节(y (: 1), y (:, 2),“- - -”Y (: 1), Y (:, 2),“- - -”);标题(“相平面的阴谋”)传说(“ode23”,“数值”)
结果表明,用不同的数值方法求解微分方程会得到略有不同的结果。