ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

数模-微分方程(种群相互依存模型)

2022-05-08 10:32:53  阅读:254  来源: 互联网

标签:种群 相互依存 数模 dx N1 N2 sigma1 sigma2


模型

image
image
image
image

代码

fun1.m

% 情况一:甲可以独自生存,乙不能独自生存
function dx=fun1(t,x)   % 大家可以修改里面的参数,来看结果的变化
    r1=0.5;  r2=0.5; % 甲的增长率和乙的死亡率
    N1=300;   N2=500;   % 甲乙的最大数量
    % sigma1: 单位数量的乙种群(相对于N2)提供的供养甲的食物量为单位数量的甲(相对于N1)消耗的供养甲的食物量的倍数。
    % sigma2: 单位数量的甲种群(相对于N1)提供的供养乙的食物量为单位数量的乙(相对于N2)消耗的供养乙的食物量的倍数。
    sigma1=0.2;  sigma2=2;   
%     sigma1=0.2;  sigma2=0.8;
% 注意:当sigma1*sigma2>1时,微分方程不稳定,matlab计算数值解时可能会报错,这时候需要调整计算的范围。
%     sigma1=3;  sigma2=3;   
    dx = zeros(2,1);
    dx(1) = r1*x(1)*(1-x(1)/N1+sigma1*x(2)/N2);
    dx(2) = r2*x(2)*(-1-x(2)/N2+sigma2*x(1)/N1);
end

fun2.m

% 情况二:甲乙均可以独自生存
function dx=fun2(t,x)   % 大家可以修改里面的参数,来看结果的变化
    r1=0.5;  r2=0.5; % 甲的增长率和乙的增长率
    N1=300;   N2=500;   % 甲乙的最大数量
    % sigma1: 单位数量的乙种群(相对于N2)提供的供养甲的食物量为单位数量的甲(相对于N1)消耗的供养甲的食物量的倍数。
    % sigma2: 单位数量的甲种群(相对于N1)提供的供养乙的食物量为单位数量的乙(相对于N2)消耗的供养乙的食物量的倍数。
    sigma1=0.2;  sigma2=2;   
%     sigma1=0.2;  sigma2=0.8;
    % 注意:当sigma1*sigma2>1时,微分方程不稳定,matlab计算数值解时可能会报错。
    dx = zeros(2,1);
    dx(1) = r1*x(1)*(1-x(1)/N1+sigma1*x(2)/N2);
    dx(2) = r2*x(2)*(1-x(2)/N2+sigma2*x(1)/N1);
end

fun3.m

% 情况三:甲乙均不能独自生存
function dx=fun3(t,x)   % 大家可以修改里面的参数,来看结果的变化
    r1=0.2;  r2=0.2; % 甲的死亡率和乙的死亡率
    N1=300;   N2=500;    % 甲乙的最大数量
    % sigma1: 单位数量的乙种群(相对于N2)提供的供养甲的食物量为单位数量的甲(相对于N1)消耗的供养甲的食物量的倍数。
    % sigma2: 单位数量的甲种群(相对于N1)提供的供养乙的食物量为单位数量的乙(相对于N2)消耗的供养乙的食物量的倍数。
    sigma1=0.2;  sigma2=2;   
%     sigma1=5;  sigma2=5; 
%     sigma1=10;  sigma2=10;  % 这时候甲乙两个种群都能活下去了 
    dx = zeros(2,1);
    dx(1) = r1*x(1)*(-1-x(1)/N1+sigma1*x(2)/N2);
    dx(2) = r2*x(2)*(-1-x(2)/N2+sigma2*x(1)/N1);
end

code.m

clc;clear
% 情况一:甲可以独自生存,乙不能独自生存
[t,x]=ode45('fun1',[0 50],[80 100]); 
figure(1)
plot(t,x(:,1),'r-',t,x(:,2),'b-')  % x的第一列是甲种群数量,x的第二列是乙种群数量
legend('种群甲','种群乙')

% 情况二:甲乙均可以独自生存
[t,x]=ode45('fun2',[0 50],[80 100]); 
figure(2)
plot(t,x(:,1),'r-',t,x(:,2),'b-')  % x的第一列是甲种群数量,x的第二列是乙种群数量
legend('种群甲','种群乙')

% 情况三:甲乙均不能独自生存
[t,x]=ode45('fun3',[0 50],[80 100]); 
figure(3)
plot(t,x(:,1),'r-',t,x(:,2),'b-')  % x的第一列是甲种群数量,x的第二列是乙种群数量
legend('种群甲','种群乙')

结果

image

标签:种群,相互依存,数模,dx,N1,N2,sigma1,sigma2
来源: https://www.cnblogs.com/jgg54335/p/15184632.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有