种群竞争模型及matlab实现

18 篇文章 25 订阅

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上,即物种甲达到最大值,物种乙灭绝。
在这里插入图片描述
在这里插入图片描述

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变小的缘故(相当于变化率减小)。
在这里插入图片描述
在这里插入图片描述

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以上,但最终仍然灭绝。物种容量的改变并不能影响最终谁会灭绝
在这里插入图片描述
在这里插入图片描述

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,都改变不了最后甲物种存活并达到数量最大且乙物种灭绝的结果。
在这里插入图片描述
在这里插入图片描述

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)];

最后甲物种灭绝,乙物种存活并达到数量极限。
在这里插入图片描述
在这里插入图片描述

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上。两物种共存。
在这里插入图片描述
在这里插入图片描述

  • 30
    点赞
  • 172
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
种群竞争模型是一种描述生物种群数量变化的数学模型。在MATLAB中,可以通过以下步骤来建立种群竞争模型: 1. 定义模型中的参数和变量,例如种群数量、出生率、死亡率、竞争系数等。 2. 建立微分方程组,描述种群数量随时间的变化情况。例如,可以使用Lotka-Volterra方程描述两个物种之间的竞争关系。 3. 使用ODE函数(常微分方程求解器)求解微分方程组,得到模型的解析解或数值解。 4. 可以使用plot函数将模型的结果可视化,例如绘制不同参数下种群数量随时间的变化曲线。 以下示例展示了一个简单的两物种竞争模型MATLAB代码: ```matlab % 定义模型参数和初始值 alpha1 = 0.5; alpha2 = 0.4; beta1 = 0.2; beta2 = 0.3; r1 = 0.5; r2 = 0.4; K1 = 100; K2 = 80; x0 = [80; 50]; % 初始数量 % 定义微分方程组 f = @(t,x) [x(1)*(r1*(1-x(1)/K1)-alpha1*x(2)/K2); x(2)*(r2*(1-x(2)/K2)-alpha2*x(1)/K1)]; % 求解微分方程组 [t,x] = ode45(f,[0,100],x0); % 可视化结果 plot(t,x(:,1),'r-',t,x(:,2),'b-'); legend('Species 1','Species 2'); xlabel('Time'); ylabel('Number of individuals'); ``` 该模型中,有两个物种,分别以r1、r2的速率增长,同时受到竞争因素和环境容量的影响。alpha1、alpha2表示另一个物种对本物种的竞争系数,beta1、beta2表示死亡率。K1、K2分别为环境容量。使用ode45求解微分方程组,并使用plot函数将两种物种数量随时间的变化曲线可视化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

COCO56(徐可可)

建议微信红包:xucoco56

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值