掠食者—猎物方程,MATLAB考虑一个简单的生态系统,包含无限食物供给的兔群和依靠捕食兔子为生的狐狸群体.这个系统可以通过一对非线性一阶微分方程来建模:dr/dt=2r-arf,r(0)=r0df/dt=-f=arf,f(0)=f0
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/29 12:45:05
![掠食者—猎物方程,MATLAB考虑一个简单的生态系统,包含无限食物供给的兔群和依靠捕食兔子为生的狐狸群体.这个系统可以通过一对非线性一阶微分方程来建模:dr/dt=2r-arf,r(0)=r0df/dt=-f=arf,f(0)=f0](/uploads/image/z/13149365-5-5.jpg?t=%E6%8E%A0%E9%A3%9F%E8%80%85%E2%80%94%E7%8C%8E%E7%89%A9%E6%96%B9%E7%A8%8B%2CMATLAB%E8%80%83%E8%99%91%E4%B8%80%E4%B8%AA%E7%AE%80%E5%8D%95%E7%9A%84%E7%94%9F%E6%80%81%E7%B3%BB%E7%BB%9F%2C%E5%8C%85%E5%90%AB%E6%97%A0%E9%99%90%E9%A3%9F%E7%89%A9%E4%BE%9B%E7%BB%99%E7%9A%84%E5%85%94%E7%BE%A4%E5%92%8C%E4%BE%9D%E9%9D%A0%E6%8D%95%E9%A3%9F%E5%85%94%E5%AD%90%E4%B8%BA%E7%94%9F%E7%9A%84%E7%8B%90%E7%8B%B8%E7%BE%A4%E4%BD%93.%E8%BF%99%E4%B8%AA%E7%B3%BB%E7%BB%9F%E5%8F%AF%E4%BB%A5%E9%80%9A%E8%BF%87%E4%B8%80%E5%AF%B9%E9%9D%9E%E7%BA%BF%E6%80%A7%E4%B8%80%E9%98%B6%E5%BE%AE%E5%88%86%E6%96%B9%E7%A8%8B%E6%9D%A5%E5%BB%BA%E6%A8%A1%EF%BC%9Adr%2Fdt%3D2r-arf%2Cr%280%29%3Dr0df%2Fdt%3D-f%3Darf%2Cf%280%29%3Df0)
掠食者—猎物方程,MATLAB考虑一个简单的生态系统,包含无限食物供给的兔群和依靠捕食兔子为生的狐狸群体.这个系统可以通过一对非线性一阶微分方程来建模:dr/dt=2r-arf,r(0)=r0df/dt=-f=arf,f(0)=f0
掠食者—猎物方程,MATLAB
考虑一个简单的生态系统,包含无限食物供给的兔群和依靠捕食兔子为生的狐狸群体.这个系统可以通过一对非线性一阶微分方程来建模:
dr/dt=2r-arf,r(0)=r0
df/dt=-f=arf,f(0)=f0
其中t为时间,r(t)为兔子的数量,f(t)为狐狸的数量,a为一个正常数.如果a>0,这两个种群没有关系,兔子很好的生存,而狐狸因
饥饿而死亡.如果a>0,狐狸捕食和自身数量成比例的兔子,这种捕食会造成兔子数量的减少,和狐狸数量的增加(原因不像减少那么显而易见).
这个非线性系统的解无法写成已知的其他函数的组合,只能通过数值求解.可以证明该系统的解有周期性,其周期取决于初始条件.也就是说,对任意的r(0)和f(0)值,都存在一个时间t=tp,此时这两个种的数量都等于初始值.因些对所的和t有
r(t+tp)=r(t),f(t+tp)=f(t)
1.计算系统一思想的解,取r0=300,f0=150以及a=0.01.结果应该有tp接近期.绘制两幅,一个以r和f做为t的函数,一个相位平面图分别以r和t为两个坐标轴.
2.计算并绘制r0=15,f0=22和a=0.01时的解.tp应该接近6.62.
3.计算并绘制r0=102,f0=198和a=0.01时的解.并计算出周期tp,可以通过误差试算或者消息句柄机制.
4.点(r0,f0)=(1/a,2/a)是一个稳定的平衡点,如果初值为此值,那么种群数量不会变化.如果初值不等于但比较接近该平衡点,那么
其数量不会发生在的变化.令u(t)=r(t)-1/a,v(t)=f(t)-2/a,函数u(t)和v(t)满足另外一个非线性微分方程系统,但如果忽
略项,系统变为线性.试问这个线性系统为何?其周期解的周期是多少?
最好有截图
掠食者—猎物方程,MATLAB考虑一个简单的生态系统,包含无限食物供给的兔群和依靠捕食兔子为生的狐狸群体.这个系统可以通过一对非线性一阶微分方程来建模:dr/dt=2r-arf,r(0)=r0df/dt=-f=arf,f(0)=f0
说明几点:
1、第二个方程错误,应为df/dt=-f+arf
2、周期可以放大曲线后观察两个峰值间的距离
3、这道题里面错误太多,除上面的公式错误外,还有
3.1“如果a>0,这两个种群没有关系”==> 这里应为a=0
3.2“对所的和t”==> “和”字去掉
3.3“相位平面图分别以r和t为两个坐标轴”==> 应该是“r和f”
3.4 下面这几句,完全就猜不出什么意思:“计算系统一思想的解”、“结果应该有tp接近期”、
“通过误差试算或者消息句柄机制”、“忽略项”,等等
4、希望以后提问能稍微认真一点,是对别人的尊重,也有助于你的问题尽快得到解决
给几个截图,代码见后.
% 1.取r0=300,f0=150以及a=0.01
% 纠错:从形式上判断,第二个方程应为df/dt=-f+arf,仿真结果也证实了这个判断
Y0=[300; 150];
dY=inline('[2*Y(1)-0.01*Y(1)*Y(2); -Y(2)+0.01*Y(1)*Y(2)]','t','Y');
[t,Y] = ode45(dY,10,Y0,[],a);
figure(101)
plot(t,Y)
legend('Rabbit','Fox');
xlabel('Time')
figure(102)
r=Y(:,1);
f=Y(:,2);
plot(r,f)
xlabel('r')
ylabel('f')
% 2.计算并绘制r0=15,f0=22和a=0.01时的解.tp应该接近6.62
Y0=[15; 22];
dY=inline('[2*Y(1)-0.01*Y(1)*Y(2); -Y(2)+0.01*Y(1)*Y(2)]','t','Y');
[t,Y] = ode45(dY,10,Y0,[],a);
figure(103)
plot(t,Y)
legend('Rabbit','Fox');
xlabel('Time')
% 3.计算并绘制r0=102,f0=198和a=0.01时的解.并计算出周期tp
% 从图中观察容易看到,周期约为4.5(放大后看两个峰值间的距离)
Y0=[102; 198];
dY=inline('[2*Y(1)-0.01*Y(1)*Y(2); -Y(2)+0.01*Y(1)*Y(2)]','t','Y');
[t,Y] = ode45(dY,10,Y0,[],a);
figure(104)
plot(t,Y)
legend('Rabbit','Fox');
xlabel('Time')
% 4.验证:点(r0,f0)=(1/a,2/a)是一个稳定的平衡点
Y0=[100; 200];
dY=inline('[2*Y(1)-0.01*Y(1)*Y(2); -Y(2)+0.01*Y(1)*Y(2)]','t','Y');
[t,Y] = ode45(dY,10,Y0,[],a);
figure(105)
plot(t,Y)
legend('Rabbit','Fox');
xlabel('Time')
% 求新的微分方程.使用符号运算推导(手工推导亦可),得到新的微分方程为:
% du/dt = -auv-v; dv/dt = auv + 2u
% 但题中错字比较多,有些地方实在猜不到是什么意思,比如这个“忽略项”
syms r f u v a
dr=2*r-a*r*f;
df=-f+a*r*f;
du=simple(subs(dr,{r,f},{u+1/a,v+2/a}))
dv=simple(subs(df,{r,f},{u+1/a,v+2/a}))
擦!这个问题有些棘手……爱莫能助了。