从系列:在MATLAB中求解ode
经典的Lotka-Volterra捕食者-猎物竞争模型,描述了狐狸和兔子、大鱼和小鱼之间的相互作用,是数学生态学的基础。它还被应用到许多其他领域,包括经济学。该模型是一个由两个方程组成的非线性系统,其中一种物质呈指数增长,而另一种物质在另一种物质缺失的情况下呈指数衰减。一个非零临界点是稳定的。所有的解金宝搏官方网站都是周期性的。“predprey”程序提供了一个研究模型的应用程序。
Lotka-Volterra捕食者-猎物方程是所有涉及物种间竞争的模型的鼻祖。它们是数学生态学等领域的基础。把这两个物种想象成兔子、狐狸、驼鹿、狼或大鱼中的小鱼。
Y1表示猎物,如果没有捕食者,它们将独自平静地生活。我已经选择了时间和总体的单位使得主要线性项前面的系数是1。所以y1 ' = y1表示在没有捕食者的情况下猎物的指数增长。
捕食者需要猎物,以猎物为生。所以在没有猎物的情况下,这个负号很重要。所以y2 ' = - y2代表指数衰减。捕食者在没有猎物的情况下呈指数级死亡。
这里是非线性项。这些类似于物流术语,除了两种物种之间的相互作用。Y1的增长受到y2的存在的限制。所以y1会一直增长,直到这一项变成0 y2读到mu2。
另一方面,当y1达到mu1时,y2衰减为0。为了完成这个规范,我们需要初始条件。我们有两个值1和2,这是y1和y2的初值。
这四个参数,两个mus和两个etas,是捕食者-猎物模型中的四个参数。不要担心这些是连续变量我们可以有非整数的个体。
我们可以有半只兔子或者十分之一只驼鹿。毕竟,这些模型是自然界中发生的事情的理想化版本。临界点是导数为0的时候。在原点有一个临界点。
但有趣的是当这些项变成0时。这就是y1和y2 = mu1和mu2的点。我们要看雅可比矩阵。这是一般的雅可比矩阵。在临界点处,雅可比矩阵,这是雅可比矩阵。
雅可比矩阵的特征值是±i,所以这个临界点是一个周期为2的稳定中心。这些是非线性方程。我们不能用简单的解析函数来表示解。
我们需要用数字来计算。但我们确实知道它们的行为。如果初始条件接近临界点,解是周期性的。周期接近2。轨道很接近椭圆。
另一方面,如果初始条件离临界点很远,那么解仍然是周期性的。但是周期大于2,而且轨道离椭圆很远。让我们用MATLAB来计算一个解。
我们需要参数。这是和。我来建立微分方程。然后选择ODE 45从0到25积分。这是解决方案。这是周期性的。捕食者和猎物。看起来周期,回到初始条件是100和400。
然后回到这里。我们对超过三个周期的东西积分。我碰巧知道周期是6.5。我想提高计算精度。10 ^ (- 6)
我们来求解,然后在三个周期内积分。它产生了337分。让我们用更细的点画出来。我们可以看到,我们经过了三个周期回到了初始值100和300。
现在我要用一些东西来显示MATLAB中函数的周期性,叫做Comet。一个轨道。两个轨道。三个轨道。确定周期解的周期常常是计算的重要部分。
在MATLAB ODE套件中,这是通过一个事件处理程序完成的。因此,我将使用ODE的集合来提供一个名为Pit Stop的事件处理程序。这是补给站的代码。在集成的每个时间步骤中都会调用此代码。
这里我就不详细讲了,它计算的是函数g当这是0的时候。当g返回0时,积分停止。这里有一个显示函数。
通常情况下,这不会出现在这里。但是我想看看这个是怎么计算的。它说,当y返回到它的角度等于和的夹角时终止。这比仅仅找到解何时返回初始条件更可靠。
让我们运行ODE 45并告诉它在一个无限的时间步长上积分,在一个无限的区间上积分。这是不会发生的,因为我们会在g为0时停止但通过这个事件处理程序设置了选项向量。这就是它。
这是在我们积分的时候停站的输出。这是它找到的值。这是g返回0的地方。我得到了一个包含117个值的t向量。t的最终值是我说的这个值是这个解的周期。
这就是ODE求解器中的事件处理特性决定周期的方式。太好了。我有一个叫做Predator Prey的程序,在NCM, MATLAB数值计算的程序集合中。我的书可以在MathWorks的网站上找到。
捕食者猎物提供了这个图形用户界面来演示我们一直在讨论的捕食者猎物方程。顶部显示的是相平面图,猎物对捕食者的图。底部显示的是时间序列图,两个种群的图。
一开始,它是在我们讨论过的条件下设定的。在300只兔子和200只狐狸的临界点附近有400只兔子和100只狐狸。这是6.5的周期我们一直在处理这个奇数。
现在,它说拖动任意一个点。你可以改变初始条件或者临界点。如果我让初始条件接近临界点,相平面图就会接近椭圆。周期趋近于2。
这是6.28,是3.14的两倍。但如果我改变它,使两者相距很远,相平面图就会变得和椭圆很不一样。它总是周期性。这是非线性方程的神奇之处。
它们总是有一个周期解。但是现在你可以看到,周期大于2。解离正弦波很远。金宝搏官方网站这是pred prey应用程序可以在MathWorks网站的NCM下使用MATLAB进行数值计算。
哎呦,我更正一下。如果你谷歌Moler preprey,它会试图说服我放弃它,但它在我的第二本书中显示了它,MATLAB实验。有两本书。用MATLAB进行数值计算和实验。
第二部分是用MATLAB进行的实验。你可以到网站上,从EXM下载所有的程序或者你可以到下面这里,这里是pred prey。这是MathWorks网站上的MATLAB实验。只要鼹鼠捕食者的猎物,你就会找到它。
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。