0% found this document useful (0 votes)
6 views

Code

This Matlab program simulates and plots the results of the Lotka-Volterra predator-prey model. It numerically solves the equations using an ODE solver and plots the phase portrait at each time step. It also allows the user to choose plotting either a time series for variable x or y. The program sets default parameter values that can be changed and runs for a specified duration of time.
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views

Code

This Matlab program simulates and plots the results of the Lotka-Volterra predator-prey model. It numerically solves the equations using an ODE solver and plots the phase portrait at each time step. It also allows the user to choose plotting either a time series for variable x or y. The program sets default parameter values that can be changed and runs for a specified duration of time.
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 2

% =========================================================================

% Matlab program to draw a phase portrait for the LotkaVolterra Predetor


% Pey model. The results are shown at each time step.
% In addition, the user has the option of plotting a time series graph for x or y.
% Set the parameter choice = 1 for a time series plot for x.
% Set choice = 2 for a time series plot for y.
% Equation parameters alpha, beta, gamma and detla can be changed by the
% user.
% Equations are solved using a numerical ODE solver.
%
% James Adams 3/4/14
% =========================================================================
function LotkaVolterra_JA
clear % Clears command window
clc % Clears command history
clf % Removes anything in the figure window before simulation.
% =============== Set choice to 1 or 2 ====================================
choice = 2;
countdown = 5; % Countdown time length before simulation runs.
iterations = 1; % Sets initial interation count to 1;
pausetime = 0.1; % Shows solutions at each time step.
runtime = 10; % Duration time of simulation.
% ================ Equation parameter values ==============================
alpha = 1;
beta = 8/3;
gamma = 1;
delta = 1;
% =============== Initial conditions for x and y ==========================
initialx = 1;
initialy = 1;
fprintf('----------------------------------\nLotkaVolterra Predetor Prey model \n\nMatlab code written by James
Adams\n----------------------------------')
fprintf('\n\nParameter values set,')
fprintf('\n\nalpha = %2.6f \nbeta = %2.6f \ngamma = %2.6f \ndelta = %2.6f ',alpha,beta,gamma,delta)
fprintf('\n\nTo plot a time series graph for x, set the choice parameter in the code to 1.')
fprintf('\nSet choice to 2 to plot a time series graph for y.\n\nSimulation will run in ')
for i = 5:-1:1
fprintf('\n%8i',countdown') % Countdown to simulation start.
countdown = countdown-1;
pause(1)
end
% Solves equations using numerical ODE solver 45 (nonstiff runge kutta)
deq1=@(t,x) [x(1)*(alpha - beta*x(2)); -x(2)*(gamma-delta*x(1))];
[t,sol] = ode45(deq1,[0 runtime],[initialx initialy]);
arraysize = size(t); % Sets time array size for the for loop.
%============ Solutions are plotted at each time step =====================
for i = 1 : max(arraysize)
subplot(2,1,1)
plot(sol(iterations,1),sol(iterations,2),'.','color',[rand; rand; rand],'markersize',14,'MarkerFaceColor','b');
hold on
title(['Lotka-Volterra Equations t = ' num2str(t(iterations))],'fontsize',12)
xlabel('x','fontsize',12)
ylabel('y','fontsize',12)
axis([min(sol(:,1)) max(sol(:,1)) min(sol(:,2)) max(sol(:,2))])

subplot(2,1,2)
text(0.1,0.5,'Time Series graph will be shown at the end of the simulation')

iterations = iterations + 1; % Adds 1 to the iteration count.


pause(pausetime)
end
% ==== Plots time series of x or y graph depending on choice ==============
if choice == 1
subplot(2,1,2)
plot(t(:,1),sol(:,1),'b.','markersize',10,'MarkerFaceColor','b')
title(['Lotka-Volterra time series for x run time = ' num2str(max(t)) ' seconds '],'fontsize',12)
xlabel('t')
ylabel('x')
axis([min(t(:,1)) max(t(:,1)) min(sol(:,1)) max(sol(:,1))])
elseif choice == 2
title(['Lotka-Volterra time series for y run time = ' num2str(max(t)) ' seconds '],'fontsize',12)
subplot(2,1,2)
plot(t(:,1),sol(:,2),'r.','markersize',10,'MarkerFaceColor','b')
title(['Lotka-Volterra time series for y run time = ' num2str(max(t)) ' seconds '],'fontsize',12)
xlabel('t')
ylabel('x')
axis([min(t(:,1)) max(t(:,1)) min(sol(:,2)) max(sol(:,2))])
end
%====================== End of program ====================================

You might also like