其他分享
首页 > 其他分享> > 数模-微分方程(捕食者猎物模型)

数模-微分方程(捕食者猎物模型)

作者:互联网

模型

image
image
image

代码

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('战前的鲨鱼比例','战后的鲨鱼比例')

image

标签:pre,猎物,shark,捕食者,鲨鱼,数模,prey,post,war
来源: https://www.cnblogs.com/jgg54335/p/15182976.html