数模-微分方程(种群相互竞争模型)
作者:互联网
模型
代码
fun.m
function dx=fun(t,x) % 大家可以修改里面的参数,来看结果的变化
r1=0.5; r2=0.5; % 甲乙的增长率
% r1=0.8; r2=1; % 甲乙的增长率
N1=300; N2=500; % 甲乙的最大数量
% sigma1: 单位数量的乙种群(相对于N2)消耗的供养甲的食物量为单位数量的甲(相对于N1)消耗的供养甲的食物量的倍数。
% sigma2: 单位数量的甲种群(相对于N1)消耗的供养乙的食物量为单位数量的乙(相对于N2)消耗的供养乙的食物量的倍数。
sigma1=0.5; sigma2=2;
% sigma1=0.5; sigma2=4;
% sigma1=0.4; sigma2=0.2;
% 当sigma1和sigma2同时大于1时(这种现象本身在自然界就几乎不可能出现),得到的结果不稳定。
% sigma1=3; sigma2=2;
% sigma1=2.2; sigma2=2;
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
% Matlab求不出来解析解
% dsolve('Dx1 = 0.5*x1*(1-x1/300-0.5*x2/500)','Dx2=0.5*x2*(1-x2/500-2*x1/300)','x1(0)=80,x2(0)=100','t')
% 下面用ode45函数求数值解
% 自变量为时间t,范围为0-30; 甲乙两个种群的数量初始值为80,100(随便给的,大家可以调整来看结果的变化)
[t,x]=ode45('fun',[0 30],[80 100]);
plot(t,x(:,1),'r-',t,x(:,2),'b-') % x的第一列是甲种群数量,x的第二列是乙种群数量
legend('种群甲','种群乙')
% axis([0 30 0 500])
结果
上面只给出了一组参数的结果图,参数的设置可以自己去调整
标签:种群,0.5,数模,N1,N2,sigma1,相互竞争,sigma2 来源: https://www.cnblogs.com/jgg54335/p/15184593.html