Lotka Volterra with an additional parameter
6 views (last 30 days)
Show older comments
Khushi Patel
on 25 Sep 2020
Commented: Star Strider
on 25 Sep 2020
I have attempted to model the equations provided below. the code keeps giving me an error when I try to plot the figure using the parameter k instead of t. I am trying to model the effect of varying k on the population dynamics for both prey and predator.
note: if I use plot(k, P) it gives me a complicated and entirely different graph that is unreadable.
Script Window:
tspan = [0, 400];
P0 = [200, 50];
k = [-1, 1];
[t,P] = ode45(@(t,P)lotkavolterra(t,P),tspan,P0);
plot(k,P(:,1),k,P(:,2)) %This section gives me the error. It works, however, if I use t instead of k.
function [dPdt] = lotkawithk(t,P)
alpha = 1;
beta = 0.05;
gamma = 0.05;
delta = 0.0025;
x = P(1);
y = P(2);
dPdt = zeroes(2,1);
dPdt(1) = alpha*x - (beta*x*y)/((log(exp(1)+t))^k);
dPdt(2) = (delta*x*y)/((log(exp(1)+t))^k) - (gamma*y);
end
0 Comments
Accepted Answer
Star Strider
on 25 Sep 2020
I cannot imagine how you got that code to work at all, considering that the function you call in ode45 is not the function you posted!
Try this:
tspan = linspace(0, 400, 100);;
P0 = [200, 50];
k = [-1, 1];
for k1 = 1:numel(k)
[t,P] = ode45(@(t,P)lotkawithk(t,P,k(k1)),tspan,P0);
Pm{k1} = P;
end
figure
hold on
for k1 = 1:numel(k)
plot(t,Pm{k1}(:,1), t,Pm{k1}(:,2), 'DisplayName',sprintf('k = %d',k(k1))) %This section gives me the error. It works, however, if I use t instead of k.
end
grid
legend
function [dPdt] = lotkawithk(t,P,k)
alpha = 1;
beta = 0.05;
gamma = 0.05;
delta = 0.0025;
x = P(1);
y = P(2);
dPdt = zeros(2,1);
dPdt(1) = alpha*x - (beta*x*y)/((log(exp(1)+t))^k);
dPdt(2) = (delta*x*y)/((log(exp(1)+t))^k) - (gamma*y);
end
Note that ‘k’ is passed as a parameter.
Make appropriate changes to get different results.
6 Comments
More Answers (1)
See Also
Categories
Find more on Line Plots in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!