数模-微分方程(捕食者猎物模型)
作者:互联网
模型
代码
post_war.m
% 战后
function dx=post_war(t,x)
dx=zeros(2,1);
dx(1)=x(1)*(0.9-0.1*x(2));
dx(2)=x(2)*(-0.6+0.02*x(1));
end
pre_war.m
% սǰ
function dx=pre_war(t,x)
dx=zeros(2,1);
dx(1)=x(1)*(0.7-0.1*x(2));
dx(2)=x(2)*(-0.8+0.02*x(1));
end
code.m
clear;clc
% Matlab求不出来解析解
% dsolve('Dx1=x1*(0.9-0.1*x2)','Dx2=x2*(-0.6+0.02*x1)','x1(0)=25,x2(0)=2','t')
% 下面用ode45函数求数值解
% 自变量t的范围为0-15年,食饵和捕食者(鲨鱼)初始值分别为25和2
% 注意:战前和战后是战争开始前和战争开始后的简写哦
[t1,x1]=ode45('pre_war',[0 15],[25 2]); % 战前的微分方程
[t2,x2]=ode45('post_war',[0 15],[25 2]); % 战后的微分方程
% [t1,x1]=ode45('pre_war',[0:15],[25 2]); % 战前的微分方程
% [t2,x2]=ode45('post_war',[0:15],[25 2]); % 战后的微分方程
pre_prey=x1(:,1); pre_shark=x1(:,2); % 战前的食饵和鲨鱼的数量
post_prey=x2(:,1); post_shark=x2(:,2); % 战后的食饵和鲨鱼的数量
figure(1)
plot(pre_prey,pre_shark,'--r',post_prey,post_shark,'-b')
legend('战前','战后')
title('鲨鱼和食饵数量变化的相轨线图')
xlabel('食饵数量'); ylabel('鲨鱼数量')
figure(2)
plot(t1,pre_prey,'--r',t1,pre_shark,'-r',t2,post_prey,'--b',t2,post_shark,'-b')
legend('战前食饵数量','战前鲨鱼数量','战后食饵数量','战后鲨鱼数量')
xlabel('时间'); ylabel('数量')
% 鲨鱼比例 = 鲨鱼数量 /(鲨鱼数+食饵数)
pre_rate=pre_shark./(pre_prey+pre_shark); % 战前的鲨鱼比例
post_rate=post_shark./(post_prey+post_shark); % 战后的鲨鱼比例
figure(3)
plot(t1,pre_rate,'--r',t2,post_rate,'-b')
legend('战前的鲨鱼比例','战后的鲨鱼比例')
标签:pre,猎物,shark,捕食者,鲨鱼,数模,prey,post,war 来源: https://www.cnblogs.com/jgg54335/p/15182976.html