首页 > 解决方案 > 在 MATLAB 中使用 ODE45 求解三个偏微分方程

问题描述

我正在尝试解决以下来源的方程式 3、10 和 11:http ://web.math.ku.dk/~moller/e04/bio/ludwig78.pdf

下面是我在 MATLAB 中生成的代码,但是它没有生成在一个图形上显示三个解决方案的图形。

%% x=(S,N)^T
%%initial value:
x0= [1;1/2];
vopt= odeset('RelTol' ,1e-3, 'AbsTol', 1e-3, 'NormControl' , 'on', 'InitialStep',0.1,'MaxStep',0.5);
beta=20;E=1;r=0.1;K =4*S;P=10;N0=S/2;alpha=1;

%%define the right hand side:
f = @(t,x) r.*x(1).*(1-x(1)./K)-beta.*(N0.*N0./(alpha.^2-N0.^2));
        r.*x(2).*(1-(x(2)./K).*(K./x(3)));
        r.*x(3).*(1-x(3)./K)-P.*(x(1)./x(2))

[t,y] = ode45(f,[0 30],x0,vopt);
figure(1);
plot(t,y(:,1),'N',t,y(:,2),'S',t,y(:,3),'E');
legend('Population of Budworms','Available foliage','Energy Reserve');

标签: matlab

解决方案


推荐阅读