在建立常微分方程后,我们常常会问的一个问题是: 这个常微分方程系统中是否存在平衡点?如果存在,这个平衡点是否稳定? 本节将展示如何通过ecode
包来回答这个问题。
我们首先利用ecode
包建立一个Lotka–Volterra竞争模型(详见第一节),
d x d t = ( r 1 − a 11 x − a 12 y ) x , ( 1 ) d y d t = ( r 2 − a 21 x − a 22 y ) y , ( 2 ) \frac{dx}{dt}=(r_1-a_{11}x-a_{12}y)x, \quad (1) \\ \frac{dy}{dt}=(r_2-a_{21}x-a_{22}y)y, \quad (2) dtdx=(r1−a11x−a12y)x,(1)dtdy=(r2−a21x−a22y)y,(2)
其中, x x x代表物种1的种群个体数, x x x代表物种2的种群个体数, r 1 , r 2 r_1, r_2 r1,r2为种群增长率, a 11 , a 12 , a 21 , a 22 a_{11},a_{12},a_{21},a_{22} a11,a12,a21,a22为两物种之间的竞争系数。
library(ecode)
eq1 <- function(x, y, r1 = 1, a11 = 1, a12 = 2) (r1 - a11 * x - a12 * y) * x
eq2 <- function(x, y, r2 = 1, a21 = 2, a22 = 1) (r2 - a21 * x - a22 * y) * y
x <- eode(dxdt = eq1, dydt = eq2)
一、数学原理
对任意一个常微分方程组,
d x 1 d t = f 1 ( x 1 , x 2 , . . . , x n ) , d x 2 d t = f 2 ( x 1 , x 2 , . . . , x n ) , . . . d x m d t = f n ( x 1 , x 2 , . . . , x n ) . \frac{dx_1}{dt}=f_1(x_1,x_2,...,x_n),\\ \frac{dx_2}{dt}=f_2(x_1,x_2,...,x_n),\\ ...\\ \frac{dx_m}{dt}=f_n(x_1,x_2,...,x_n). dtdx1=f1(x1,x2,...,xn),dtdx2=f2(x1,x