Is there an easy way to make numerical simulations of the ODE of the form dx1/dt=x1(2-x1-x2), dx2/dt=x2(3-x1-x2-x3) for any xn?

1 次查看(过去 30 天)
I have tried doing for 'n=5' and here is my code;
dx = @(t,x) [x(1);
x(1)*(2-x(1)-x(2));
x(2); x(2)*(3-x(1)-x(2)-x(3));
x(3); x(3)*(3-x(2)-x(3)-x(4));
x(4); x(4)*(3-x(3)-x(4)-x(5));
x(5); x(5)*(2-x(4)-x(5))];
tspan=[0 15];
x0=[0 2 0 3 0 4 0 6 0 8];
[t,x] = ode45(@(t,x) dx(t,x), tspan, x0);
figure(1)
plot(t, x)
Can someone please check if this code is correct, if not, how can I improve if and for any 'n'?. Thanks in advance.

采纳的回答

Abraham Boayue
Abraham Boayue 2018-4-5
See code comments for answers.
clear variables
close all;
% dx must have 5 terms for n = 5
% the number terms in system equations
% must be the same as the number of
% elements in your dx vector.
% Remember your dot before *
dx = @(t,x) [x(1);x(1).*(2-x(1)-x(2));
x(2).*(3-x(1)-x(2)-x(3));
x(3).*(3-x(2)-x(3)-x(4));
x(4).*(3-x(3)-x(4)-x(5))];
tspan=[0 15];
x0=[0 2 0 3 0]; % same for the initial vector.
[t,x] = ode45(dx, tspan, x0);
figure(1)
plot(t, x);
  1 个评论
Editor
Editor 2018-4-6
Thank you very much Abraham Boayue for your response and your code too does what I want. I have noted the mistakes I had made in my earlier code. However, is there a way in which this code can be be generalised to compute for any 'xn', say 'n=10'?.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Ordinary Differential Equations 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by