Lotka Volterra with an additional parameter

1 次查看(过去 30 天)
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

采纳的回答

Star Strider
Star Strider 2020-9-25
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 个评论
Khushi Patel
Khushi Patel 2020-9-25
Oh okay. Greatly appreciate the help and the clarification about plotting k!

请先登录,再进行评论。

更多回答(1 个)

Khushi Patel
Khushi Patel 2020-9-25
The equations are:

类别

Help CenterFile Exchange 中查找有关 Line Plots 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by