Unexpected output when trying to plot the solution to a system of nonlinear differential equations

1 visualización (últimos 30 días)
Aleem Andrew el 3 de Abr. de 2020
Comentada: Aleem Andrew el 4 de Abr. de 2020
The following Matlab code is meant to plot x(1) vs time and x(2) vs time separately, but only plots x(1) vs time. Despite there being two lines of code to generate each plot, one line is ignored. Does anyone have any suggestions as to how the code can be modified?
t = [0 10]; %time interval ranges from 0 to 10 s
ic = [pi/3; 0; 0; 0]; % initial conditions = [θ θ' x x']
[t,x] = ode45(ode, t, ic);
plot(t,x(:,1), 'o') %the y axis represents
plot( t,x(:,2),'o') %the y axis represents
xlabel('x(m)');
function dydx = fun(t,x)
%[x(1) x(2) x(3) x(4)] = [angle angular velocity x position x velocity] respectively
L = 0.5; g = 9.81;
dydx = zeros(4,1);
dydx(1) = x(2);
dydx(2) = (4*sin(x(1))*(5*L*cos(x(1))*x(2)^2 + 6*g))/(L*(20*cos(x(1))^2 - 23));
dydx(3) = x(4);
dydx(4) = -(5*sin(x(1))*(23*L*x(2)^2 + 24*g*cos(x(1))))/(6*(20*cos(x(1))^2 - 23));
end
0 comentariosMostrar -2 comentarios más antiguosOcultar -2 comentarios más antiguos

Iniciar sesión para comentar.

Torsten el 4 de Abr. de 2020
Use
hold on
between the two plot commands.
2 comentariosMostrar NingunoOcultar Ninguno
darova el 4 de Abr. de 2020
Or use line()
Aleem Andrew el 4 de Abr. de 2020

Iniciar sesión para comentar.

Categorías

Más información sobre Dynamic System Models en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by