MATLAB 种群竞争模型

种群竞争模型

当两个种群为争夺同一食物来源和生活空间相互竞争时,常见的结局是一方被淘汰,另一方获得优势。这种现象在生物学中被称为“竞争”。在数学建模中,我们可以通过种群竞争模型来模拟这种现象。


数学模型

有甲乙两个种群,它们独自生存时的数量变化均服从 Logistic 规律:

dN1dt=r1N1(1N1K1)dN2dt=r2N2(1N2K2)\begin{aligned} \frac{dN_1}{dt} &= r_1 N_1 \left(1-\frac{N_1}{K_1}\right) \\ \frac{dN_2}{dt} &= r_2 N_2 \left(1-\frac{N_2}{K_2}\right) \end{aligned}

其中N1N_1 为甲种群数量,N2N_2 为乙种群数量,r1r_1 为甲种群的增长率,r2r_2 为乙种群的增长率,K1K_1 为甲种群的容量,K2K_2 为乙种群的容量。

两种群在一起生存时,乙对甲增长的阻滞作用与乙的数量成正比;甲对乙有同样的作用:

dN1dt=r1N1(1N1K1s1N2K2)dN2dt=r2N2(1N2K2s2N1K1)\begin{aligned} \frac{dN_1}{dt} &= r_1 N_1 \left(1-\frac{N_1}{K_1}-s_1\frac{N_2}{K_2}\right) \\ \frac{dN_2}{dt} &= r_2 N_2 \left(1-\frac{N_2}{K_2}-s_2\frac{N_1}{K_1}\right) \end{aligned}

其中s1s_1 甲种群个体的生存能力,值越小生存能力越强;s2s_2 同理。


MATLAB 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
function [t, N1, N2] = population_competition(r1, r2, K1, K2, s1, s2, N10, N20, t0, tf, dt)
% population_competition: 种群竞争模型
% [t, N1, N2] = population_competition(r1, r2, K1, K2, s1, s2, N10, N20, t0, tf, dt)
% r1: 甲种群的增长率
% r2: 乙种群的增长率
% K1: 甲种群的容量
% K2: 乙种群的容量
% s1: 甲种群个体的生存能力
% s2: 乙种群个体的生存能力
% N10: 甲种群初始数量
% N20: 乙种群初始数量
% t0: 初始时间
% tf: 终止时间
% dt: 时间步长
% t: 时间
% N1: 甲种群数量
% N2: 乙种群数量

% 初始化
t = t0:dt:tf;
N1 = zeros(1, length(t));
N2 = zeros(1, length(t));
N1(1) = N10;
N2(1) = N20;

% 迭代
for i = 1:length(t)-1
N1(i+1) = N1(i) + dt * r1 * N1(i) * (1 - N1(i)/K1 - s1 * N2(i)/K2);
N2(i+1) = N2(i) + dt * r2 * N2(i) * (1 - N2(i)/K2 - s2 * N1(i)/K1);
end
end

例1

甲乙种群个体生存能力相差较大,其他条件相同:

1
2
[t, N1, N2] = population_competition(0.5, 0.5, 100, 100, 0.5, 2, 10, 10, 0, 20, 0.01);
plot(t, N1, t, N2, 'LineWidth', 2), grid on, xlabel('t'), ylabel('N'), legend('N1', 'N2');

最终甲种群达到了环境容量,乙种群灭绝:

图1


例2

甲乙种群生存能力相差较小,其他条件相同:

1
2
[t, N1, N2] = population_competition(0.5, 0.5, 100, 100, 0.7, 0.6, 10, 10, 0, 50, 0.01);
plot(t, N1, t, N2, 'LineWidth', 2), grid on, xlabel('t'), ylabel('N'), legend('N1', 'N2');

甲乙种群共存,生存能力较强的乙种群数量收敛在高位:

图2