MATLAB: 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

ode45

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.

Best Answer

n = 5;
tspan=[0 15];
x0 = [2 3 4 6 8];
[t,x] = ode45(@(t,x) derivatives(t,x,n), tspan, x0);
function dx = derivatives(t,x,n)
dx = zeros(n,1);
dx(1) = x(1)*(2-x(1)-x(2));
for i = 2:n-1
dx(i)=x(i)*(3-x(i-1)-x(i)-x(i+1));
end
dx(n) = x(n)*(2-x(n-1)-x(n));
end
Best wishes
Torsten.