种群竞争模型及matlab实现

文章目录

  • 1. 按
  • 2. 模型假设
  • 3. matlab实现
    • 3.1. 代码
    • 3.2. 测试
      • 3.2.1. 测试一
      • 3.2.2. 测试二
      • 3.2.3. 测试三
      • 3.2.4. 测试四
      • 3.2.5. 测试五
      • 3.2.6. 测试六

1. 按

模型背景:当两个种群为争夺同一食物来源和生存空间相互竞争时,常见的结局是,竞争力弱的灭绝,竞争力强的达到环境容许的最大容量。使用种群竞争模型可以描述两个种群相互竞争的过程,分析产生各种结局的条件。
模型推广:不同企业推出的类似产品可应用种群竞争模型。

2. 模型假设

有甲乙两个种群,它们独自生存时数量变化均服从Logistic规律。
d x d t = r 1 x ( 1 − x N 1 ) d y d t = r 1 y ( 1 − y N 1 ) \frac{d x}{d t}=r_{1} x\left(1-\frac{x}{N_{1}}\right) \quad \frac{d y}{d t}=r_{1} y\left(1-\frac{y}{N_{1}}\right) dtdx=r1x(1N1x)dtdy=r1y(1N1y)
两种群在一起生存时,乙对甲增长的阻滞作用与乙的数量成正比;甲对乙有同样作用。
d x d t = r 1 x ( 1 − x n 1 − s 1 y n 2 ) d y d t = r 2 y ( 1 − y n 2 − s 2 x n 1 ) \begin{aligned} \frac{d x}{d t} &=r_{1} x\left(1-\frac{x}{n_{1}}-s_{1} \frac{y}{n_{2}}\right) \\ \frac{d y}{d t} &=r_{2} y\left(1-\frac{y}{n_{2}}-s_{2} \frac{x}{n_{1}}\right) \end{aligned} dtdxdtdy=r1x(1n1xs1n2y)=r2y(1n2ys2n1x)
其中x(t),y(t)分别为甲乙两种群的数量,r1 r2为它们的固有增长率,n1 n2为它们的最大容量。s1的含义是对于供养甲的资源来说,单位数量的乙(相对n2)的消耗为单位数量甲(相对n1)消耗的s1倍,s2同理。

3. matlab实现

3.1. 代码

fun.m

function dx=fun(t,x,r1,r2,n1,n2,s1,s2)
    r1=1;
    r2=1;
    n1=100;
    n2=100;
    s1=0.5;
    s2=2;
    dx=[r1*x(1)*(1-x(1)/n1-s1*x(2)/n2);r2*x(2)*(1-s2*x(1)/n1-x(2)/n2)];

main.m

h=0.1;%所取时间点间隔
ts=[0:h:30];%时间区间
x0=[10,10];%初始条件
opt=odeset('reltol',1e-6,'abstol',1e-9);%相对误差1e-6,绝对误差1e-9
[t,x]=ode45(@fun,ts,x0,opt);%使用54阶龙格—库塔公式计算
plot(t,x(:,1),'r',t,x(:,2),'b','LineWidth',2),grid;
figure
plot(x(:,1),x(:,2),'LineWidth',2),grid  %作相轨线

3.2. 测试

3.2.1. 测试一

直接运行。
最后数值稳定在x=100,y=0上,即物种甲达到最大值,物种乙灭绝。
种群竞争模型及matlab实现_第1张图片
种群竞争模型及matlab实现_第2张图片

3.2.2. 测试二

改变r1,r2:
r1=r2=0.3
fun.m

function dx=fun(t,x,r1,r2,n1,n2,s1,s2)
    r1=.3;
    r2=.3;
    n1=100;
    n2=100;
    s1=0.5;
    s2=2;
    dx=[r1*x(1)*(1-x(1)/n1-s1*x(2)/n2);r2*x(2)*(1-s2*x(1)/n1-x(2)/n2)];

我们可以看到甲乙两物种最终结果仍然是甲达到数量极限而乙灭绝,但与原先不同的是变化速度减缓了,这是由于自然增长率r1,r2变小的缘故(相当于变化率减小)。
种群竞争模型及matlab实现_第3张图片
种群竞争模型及matlab实现_第4张图片

3.2.3. 测试三

改变n1,n2:
n1=10000,n2=100
fun.m

function dx=fun(t,x,r1,r2,n1,n2,s1,s2)
    r1=1;
    r2=1;
    n1=10000;
    n2=100;
    s1=0.5;
    s2=2;
    dx=[r1*x(1)*(1-x(1)/n1-s1*x(2)/n2);r2*x(2)*(1-s2*x(1)/n1-x(2)/n2)];

由于一开始甲物种的数量相对较少,所以乙物种得以快速增长,数量一度达到90以上,但最终仍然灭绝。物种容量的改变并不能影响最终谁会灭绝
种群竞争模型及matlab实现_第5张图片
种群竞争模型及matlab实现_第6张图片

3.2.4. 测试四

改变x10,x20:
x10=10,x20=100
main.m

h=0.1;%所取时间点间隔
ts=[0:h:30];%时间区间
x0=[10,100];%初始条件
opt=odeset('reltol',1e-6,'abstol',1e-9);%相对误差1e-6,绝对误差1e-9
[t,x]=ode45(@fun,ts,x0,opt);%使用54阶龙格—库塔公式计算
plot(t,x(:,1),'r',t,x(:,2),'b','LineWidth',2),grid;
figure
plot(x(:,1),x(:,2),'LineWidth',2),grid  %作相轨线

乙物种的初始数量大使其灭绝时间稍稍延后,但它灭绝的趋势不变。综上,无论怎样改变r1,r2,n1,n2,x0,y0,都改变不了最后甲物种存活并达到数量最大且乙物种灭绝的结果。
种群竞争模型及matlab实现_第7张图片
种群竞争模型及matlab实现_第8张图片

3.2.5. 测试五

s1>1,s2<1
s1=1.5,s2=0.7
fun.m

function dx=fun(t,x,r1,r2,n1,n2,s1,s2)
    r1=1;
    r2=1;
    n1=100;
    n2=100;
    s1=1.5;
    s2=.7;
    dx=[r1*x(1)*(1-x(1)/n1-s1*x(2)/n2);r2*x(2)*(1-s2*x(1)/n1-x(2)/n2)];

最后甲物种灭绝,乙物种存活并达到数量极限。
种群竞争模型及matlab实现_第9张图片
种群竞争模型及matlab实现_第10张图片

3.2.6. 测试六

s1<1,s2<1
s1=0.8,s2=0.7
fun.m

function dx=fun(t,x,r1,r2,n1,n2,s1,s2)
    r1=1;
    r2=1;
    n1=100;
    n2=100;
    s1=.8;
    s2=.7;
    dx=[r1*x(1)*(1-x(1)/n1-s1*x(2)/n2);r2*x(2)*(1-s2*x(1)/n1-x(2)/n2)];

最后稳定在x= 45.4546 y=68.1818上。两物种共存。
种群竞争模型及matlab实现_第11张图片
种群竞争模型及matlab实现_第12张图片

你可能感兴趣的:(matlab,数学)