种群相互竞争Matlab,种群相互竞争的Matlab程序

两种群相互竞争模型如下:

dxxy r1x(1 s1)dtn1n2

dyyx r2y(1 s2)dtn2n1 其中x(t),y(t)分别为甲乙两种群的数量,r1,r2为它们的固有增长率,n1,n2

为它们的最大容量。s1的含义是,对于供养甲的资源来说,单位数量的乙(相对n2)的消耗为单位数量甲(相对n1)消耗的s1倍,对s2可以作相应解释。

经过计算,该模型无解析解,故用数值方法研究,为此提出以下问题:

(1) 设r1=r2=1,n1=n2=100,s1=0.5,s2=2,初值x0=y0=10,计算x(t),y(t),画出

它们的图形及图(x,y),说明时间t充分大了以后x(t),y(t)的变化趋

势。

(2) 改变r1,r2,n1,n2,x0,y0,但s1,s2不变(或保持s1<1,s2>1),计算并分

析所得结果,若s1=1.5(>1),s2=0.7(<1),再分析结果。由此可以得到

什么结论,请作出解释。

(3) 试验当s1=0.8,s2=0.7时会有什么结果,当s1=1.5,s2=1.7时,又会有

什么结果。

模型求解:

程序如下:

fun.m:

function dx=fun(t,x,r1,r2,n1,n2,s1,s2)

dx=[r1*x(1)*(1-x(1)/n1-s1*x(2)/n2);r2*x(2)*(1-s2*x(1)/n1-x(2)/n2)];

p3.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,1,1,100,100,0.5,2);%使用5级4阶龙格—库塔公式计算%后面的参数传给fun,分别是r1,r2,n1,n2,s1,s2

[t,x]%输出t,x(t),y(t)

plot(t,x,'.-'),grid%输出x1(t), x2(t)的图形

gtext('x1(t)'),gtext(' x2(t)'),pause

plot(x(:,1),x(:,2),'.-'),grid,%作相轨线

gtext('x1'),gtext('x2');

运行结果[t,x]为:

ans =

0 10.0000 10.0000

0.1000 10.8805 10.7120

0.2000 11.8235 11.4454

0.3000 12.8309 12.1962

0.4000 13.9044 12.9595

0.5000 15.0453 13.7295

……

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值