How to do Matlab code the Impulsive DE for Lotka Volterra Model with a impulsive prey culling function of H(t+) = -k*H(t-) where k is culling rate for prey

6 views (last 30 days)
Below, is the Matlab code for original Lotka Volterra Model
%Step 1: Define the parameters
alpha = 0.1; % Prey growth rate
beta = 0.02; % Prey death rate due to predation
gamma = 0.3; % Predator death rate
delta = 0.01; % Predator growth rate due to prey consumption
%Note that y(1) = H and y(2) = K
%Step 2: Definie initial condition values
H0 = 60;
K0 = 50;
Ti = T/4;
%Step 3: Define the ODE Function
Lotkamodel = @(t,y)[alpha*y(1) - beta*y(1)*y(2);...
delta*y(1)*y(2)-gamma*y(2);
];
%Step 4: Solve the ODEs
[t,y] = ode45(Lotkamodel, [0,300], [H0; K0]);
%Step 5: Plot the results
plot(t, y(:, 1), 'b', 'LineWidth', 2); % plot S(t)
hold on;
plot(t, y(:, 2), 'Color', "#FF00FF", 'LineWidth', 2); % plot I(t)
hold on;
xlabel('Days');
ylabel('Population');
legend('Prey', 'Predator');
title({'SIR Model', 'Coded by: Myself'});

Answers (1)

Ayush
Ayush on 14 Dec 2023
Hi John,
I understand that you want to add the impulsive DE for Lotka Volterra Model with an impulsive prey culling function.
The impulsive prey culling function represents a sudden, instantaneous reduction in the prey population at a specific time point. At a specific time, point t = Ti , where Ti is the impulsive time thus we have H(t^+) = -k*H(t^-)
Where:
  • H(t^+) represents the prey population immediately after the impulsive event.
  • H(t^-) represents the prey population immediately before the impulsive event.
  • k represents the culling rate for prey.
Keeping these points into consideration, you can include the impulsive prey culling term -k*(t >Ti)*y(1), which evaluates to -k*H(t-) when t crosses the impulsive time Ti. Finally pass the function through “ode45”. You can refer to the modified code below for better understanding:
% Step 1: Define the parameters
alpha = 0.1; % Prey growth rate
beta = 0.02; % Prey death rate due to predation
gamma = 0.3; % Predator death rate
delta = 0.01; % Predator growth rate due to prey consumption
k = 0.05; % Culling rate for prey
% Step 2: Define initial condition values
H0 = 60;
K0 = 50;
Ti = 300/4; % Assuming T = 300 (total time)
% Step 3: Define the ODE Function with impulsive function
Lotkamodel = @(t,y) [
alpha*y(1) - beta*y(1)*y(2) - k*(t > Ti)*y(1); % Impulsive prey culling
delta*y(1)*y(2) - gamma*y(2)
];
% Step 4: Solve the ODEs
[t,y] = ode45(Lotkamodel, [0, 300], [H0; K0]);
% Step 5: Plot the results
plot(t, y(:, 1), 'b', 'LineWidth', 2); % plot Prey
hold on;
plot(t, y(:, 2), 'Color', "#FF00FF", 'LineWidth', 2); % plot Predator
xlabel('Days');
ylabel('Population');
legend('Prey', 'Predator');
title({'Lotka-Volterra Model with Impulsive Prey Culling', 'Coded by: Myself'});
Refer the link below to explore more on “ode45” function:
Regards,
Ayush

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!