2.a- The system of equation and theory
2.b- Numerical
exploration
Matlab script
We notice that the population growth of both animal is based on a logistic growth which is a bit more realistic than Malthusian growth because involving a carrying capacity Kv and Kp. That permits to the model to include an overpopulation . The natural demograghy is negatively infuenced for preys by the interaction with the predator through the coefficient of predation impact K1 and positively for predators through the predation efficiency coefficient K2.
If we are looking for equilibrium states we find :
As the expression of eigen values for Xe1 is quite complicated we ommited it.
The expression of the jacobian matrix DF(Xe2) and related eigen values gives :
As we assume that the parameters are all positive, equilibrium Xe3 is stable if a < K1Kp .
The eigen values are real positive , this mean Xe4 as an unstable
equilibrium .
|
|
|
Bifurcation from Xe1 to Xe3.
-1<a-K1Kf<3 : We can see on the plot bellow the spiral trajectories
corresponding to the equilibrium Xe1, the * corresponding to Xe1(a). Xe2=(0,Kf=20)
Note that the point (0,20) is an equilibrium point for Xe1 and Xe3.
a=[1, 2, 3, 4, 5];
b=0.5; K1=0.1; K2=2; Kr=2000; Kf=20; R(0)=100; F(0)=10
Check if (Kv,0) is really
unstable :
F(1)=1.e-8;R(1)=2000;0.1<a<2;b=0.5;K1=0.005;K2=0.005;Kr=2000;Kf=20; -> -2<eigen values (Xe2) <0.5
Here we can notice that all the trajectories converge to the equilibrium 1 (dotted line). Since we do not observe any stabilty for the (Kv,0) equilibrium .
Vary the a parameter : 0.5<a<10
F(1)=10;R(1)=50;b=0.01;K1=0.005;K2=0.005;Kr=2000;Kf=20;dt=0.2s
Vary the b parameter : 0.001<b<0.5
F(1)=10;R(1)=50;a=0.5;K1=0.005;K2=0.0005;Kr=2000;Kf=20;dt=2s
In these numerical exploration we observed only the atraction to the
first equilibrium Xe1.
|
|
|
MATLAB
SCRIPT TO BE COPIED IN A M-FILE
%******************************************************
%*PREDATOR-PREY POPULATION DYNAMICS
%*
%*LOTKA VOLTERRA EQUATIONS INVOLVING LOGISTIC
GROWTH
%*
%*TIME SCHEME : RUNGE-KUTA OF 4th ORDER
%******************************************************
% PREDATORS=FOXES ->ARRAY F
%PREYS=RABBITS ->ARRAY R
clear all;
help lotg
T=150;dt=0.2;
N=T/dt
K=0:dt:T-dt;
a0=0.5;b=0.01;K1=0.005;K2=0.005;Kr=2000;Kf=20;
range=20;Na0=5;
F=zeros(1,N);R=zeros(1,N);
F(1)=10;R(1)=50;
a=(a0):a0*(range-1)/Na0:(a0*range);
[arow,acol]=size(a);
sprintf('SIMULATION TIME :%d',T)
sprintf('TIME STEP FOR RK4 :%f',dt)
sprintf('REQUEST AN AMOUNT OF ITERATIONS OF :%d',N)
sprintf('LOGISTIC GROWTH COEFFICIENT FOR PREY(RABBITS) :%f<%f\n',a(1),a(acol))
sprintf('LOGISTIC GROWTH COEFFICIENT FOR PREDATOR(FOXES) :%f<%f\n',b)
sprintf('CARRYING CAPACITY FOR PREY(RABBITS) :%d\n',Kr)
sprintf('CARRYING CAPACITY COEFFICIENT FOR PREDATOR(FOXES) :%d\n',Kf)
sprintf('PREDATION IMPACT COEFFICIENT FOR PREY(RABBITS) :%f\n',K1)
sprintf('PREDATION IMPACT COEFFICIENT FOR PREDATOR(FOXES) :%f\n',K2)
sprintf('EQUILIBRIUM POPULATION FOR PREY(RABBITS) :%f<R<%f\n',-b*Kr*(K1*Kf-a(1))/(a(1)*b+K1*K2*Kf*Kr),-b*Kr*(K1*Kf-a(acol))/(a(acol)*b+K1*K2*Kf*Kr))
sprintf('EQUILIBRIUM POPULATION FOR PREDATOR(FOXES) :%f<%f\n',a(1)*(1+b*(K1*Kf-a(1))/(a(1)*b+K1*K2*Kf*Kr))/K1,a(acol)*(1+b*(K1*Kf-a(acol))/(a(acol)*b+K1*K2*Kf*Kr))/K1)
% LOOP ON a -values
for i=1:acol
% LOOP ON TIME
for k=1:N-1
R1=R(k)+dt*(a(i)*R(k)*(1-R(k)/Kr)-K1*R(k)*F(k));
F1=F(k)+dt*(b*F(k)*(1-F(k)/Kf)+K2*R(k)*F(k));
R2=R(k)+dt*(a(i)*R1*(1-R1/Kr)-K1*R1*F1);
F2=F(k)+dt*(b*F1*(1-F1/Kf)+K2*R1*F1);
R3=R(k)+dt*(a(i)*R2*(1-R2/Kr)-K1*R2*F2)/2;
F3=F(k)+dt*(b*F2*(1-F2/Kf)+K2*R2*F2)/2;
R4=R(k)+dt*(a(i)*R3*(1-R3/Kr)-K1*R3*F3);
F4=F(k)+dt*(b*F3*(1-F3/Kf)+K2*R3*F3);
R(k+1)=R(k)+(2*(R2-R(k))+4*(R3-R(k))+2*(R4-R(k))+dt*(a(i)*R4*(1-R4/Kr)-K1*R4*F4))/6;
F(k+1)=F(k)+(2*(F2-F(k))+4*(F3-F(k))+2*(F4-F(k))+dt*(b*F4*(1-F4/Kf)+K2*R4*F4))/6;
end
% GRAPHIC OUTPUT
subplot(1,3,1);
h=plot(F,R,'b-');
xlabel('Foxes')
ylabel('Rabbits')
hold on
zoom
subplot(1,3,2);
h=plot(F,K,'r-');
xlabel('Foxes')
ylabel('Time')
hold on
zoom
subplot(1,3,3);
h=plot(R,K,'b-');
xlabel('Rabbits')
ylabel('Time')
zoom
set(h,'linewidth',1)
%set(h,'markersize',2)
hold on
zoom
end
% line of population convergence
subplot(1,3,1);
x=-b*Kr*(K1*Kf-a)./(a*b+K1*K2*Kf*Kr)
y=a.*(1+b*(K1*Kf-a)./(a*b+K1*K2*Kf*Kr))/K1
plot(y,x,'k-')
zoom