画图代码:
y1=y(:,1); y2=y(:,2);
plot(t,y1,t,y2,':'); 输出:
3.两种相似的群体之间为了争夺有限的同一种食物来源和生活空间而进行生存竞争时,往往是竞争力较弱的种群灭亡,而竞争力较强的种群达到环境容许的最大数量。
假设有甲、乙两个生物种群,当它们各自生存于一个自然环境中,均服从 Logistic 规律。
(1)x1(t),x2(t)是两个种群的数量; (2)r1,r2是它们的固有增长率; (3)n1,n2是它们的最大容量;
(4)m2(m1)为种群乙(甲)占据甲(乙)的位置的数量,并且 m2??x2;m1??x1.
1)计算x1(t),x2(t), 画出图形及相轨迹图。解释其解变化过程。
2)设r1?r2?1,n1?n2?100,x10?x20?10,?=1.5,?=0.7,计算x1(t),x2(t),
画出图形及相轨迹图。解释其解变化过程。 (1) 函数M代码:
function xdot=fun(~,x) r=[1,1]; n=[100,100]; m=[0.5,2];
xdot=zeros(2,1);
xdot(1)=r(1)*x(1)*(1-(x(1)+m(2))/n(1)); xdot(2)=r(2)*x(2)*(1-(x(2)+m(1))/n(2)); 画图代码:
[t,x] = ode45('fun', 0:0.1:15, [10 10]); subplot(1,2,1);plot(t, x(:,1), t, x(:,2), ':'); legend('x1', 'x2');title('êy?μ?aí?'); subplot(1,2,2);plot(x(:,1), x(:,2)); title('?à1ì??í?'); 输出:
分析:甲、乙两个种群一开始增长率较快,在达到某个临界值时,增长率迅速减缓,然后达到一个相对稳定的水平,此时就是环境容许的最大数量,此外,两个种群的增长率在全部时间内几乎完全一致,说明两个竞争种群在同一环境下的增长率几乎一致。 (2) 函数M代码:
function xdot=fun(~, x) r=[1,1]; n=[100,100]; a=1.5; b=0.7;
m=[a*x(2), b*x(1)]; xdot=zeros(2, 1);
xdot(1) = r(1)*x(1)*(1-(x(1)+m(2))/n(1)); xdot(2) = r(2)*x(2)*(1-(x(2)+m(1))/n(2)); 画图代码:
[t,x] = ode45('fun', 0:0.1:15, [10 10]); subplot(1,2,1);plot(t, x(:,1), t, x(:,2), ':'); legend('x1', 'x2');title('êy?μ?aí?'); subplot(1,2,2);plot(x(:,1), x(:,2));
title('?à1ì??í?'); 输出:
分析:同样,甲、乙两个种群一开始增长率较快,在达到某个临界值时,增长率迅速减缓,然后达到一个相对稳定的水平,不同的是,竞争力较强的甲种群数量远大于乙种群的,且乙种群达到稳定水平的时间比甲早。
四、实验心得
本次实验主要学习了利用MATLAB求解常微分方程的符号解和数值解,学习了利用MATLAB画常微分方程的解的图像,此外,还学习了logistics模型的求解方法。
在这次实验过程中,本身MATLAB求解微分方程非常方便,主要难点在于对于高阶的常微分方曾,需要将它先转化为一阶常微分方程,即状态方程,才可进行求解。此外在画常微分方程的解图像和相轨图时,要注意输入的参数值和一般的函数画图不同。