我有一个Predator-Prey模型:
dR/dt = λR - aRF
dF/dt = -μF + bRF
λ
和μ
分别是兔子(R
)和狐狸(F
)的生长率,单独治疗。 a
是狐狸对兔子的捕食率,而b
是狐狸通过捕食兔子而获得的生长速度。
到目前为止,我有以下代码,但我真的很困惑,我的模型在哪里出错?
function PredPrey
lambda = 0.1; % Lambda = Reproduction rate of rabbits
mu = 0.15; % Mu = Death rate of foxes
a = 0.005; % a = Rate of rabbits caught per fox
b = 0.002; % b = foxes born per rabbit caught
N = 3;
R = zeros(1,N);
F = zeros(1,N);
R(1) = 100;
F(1) = 10;
for n = 2:N
R(n) = R(n-1) + lambda*R(n-1) - a*R(n-1)*F(n-1);
F(n) = F(n-1) - mu*F(n-1) + b*a*R(n-1)*F(n-1);
end
Xvals = 1:N;
plot(Xvals,R,'b',Xvals,F,'r')
end
答案 0 :(得分:1)
基本上你有一个颂歌系统需要像ode45这样的工具来处理。我建议你看看
https://www.mathworks.com/help/matlab/ref/ode45.html
此外,您可以使用
function f = predPrey(t,x)
f = zeros(2,1);
% x(1) represents the number of rabbits
% x(2) represents the number of foxes
% Model's parameters
a = 0.01
b = 0.02
c = 0.03
d = 0.04
f(1) = a*x(1) - b*x(1)*x(2);
f(2) = -c*x(2) + d*x(1)*x(2);
end
使用以下命令:
[time,valx] = ode45(@(t,x) predPrey(t,x),[0,5],[200,100]);
解决系统时间t = 0到t = 5,初始种群为200只兔子和100只狐狸。
请注意
rabbit = valx(:,1)
fox = valx(:,2)