MATLAB中的Predator-Prey建模

时间:2017-05-21 22:52:47

标签: matlab modeling

我有一个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

1 个答案:

答案 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)