求解捕食者-猎物方程
这个例子展示了如何用两者来求解一个表示捕食者/猎物模型的微分方程ode23
而且数值
。这些函数是用变步长龙格-库塔积分法数值求解常微分方程的。ode23
使用简单的二阶和三阶公式对中等精度和数值
使用四阶和五阶对以获得更高的精度。
考虑一对一阶常微分方程,称为生态方程,或捕食模型:
的变量 而且 分别测量猎物和捕食者种群的大小。二次交叉项说明了物种之间的相互作用。当没有捕食者存在时,被捕食者的数量会增加,而当猎物稀少时,捕食者的数量会减少。
代码方程
为了模拟系统,创建一个函数,返回给定状态值和时间值的状态导数列向量。这两个变量
而且
可以在MATLAB中表示为向量中的前两个值吗y
。类似地,导数是向量的前两个值yp
。函数必须接受为的值t
而且y
并返回由方程产生的值yp
。
Yp (1) = (1 - *y(2))*y(1)
Yp (2) = (-1 + *y(1))*y(2)
在本例中,方程包含在名为lotka.m
。该文件使用的参数值
而且
。
类型洛特卡
函数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
。的数值
Solver每一步都需要更长的时间,但它也需要更大的步骤。然而,输出数值
是平滑的,因为默认情况下,求解器使用连续扩展公式在每一步的跨度中产生四个相等间隔的时间点的输出。(你可以用“完善”
选择。)画出两个解进行比较。金宝搏官方网站
[T,Y] = ode45(@lotka,[t0 tfinal],y0);情节(y (: 1), y (:, 2),“- - -”Y (: 1), Y (:, 2),“- - -”);标题(“相平面图”)传说(“ode23”,“数值”)
结果表明,用不同的数值方法求解微分方程可以得到略有不同的答案。