Borrar filtros
Borrar filtros

Trying to solve and plot the non-linear pendulum equation

3 visualizaciones (últimos 30 días)
Alexandros
Alexandros el 16 de Nov. de 2017
Comentada: Star Strider el 17 de Nov. de 2017
Hi! I have the d^2/dt^2 + g/L(sinθ)=0 2nd order D.E. (Simple Pendulum) which I have seperated to two 1st order D.E.
y(1) = dθ/dt = ω = u_θ , y(2) = dω/dt = -b^2*sinθ (where b = sqrt(g/L))
I want to use ode45 to solve these equations.
I tried following the link: https://www.mathworks.com/help/matlab/ref/ode45.html but I got errors on my code.
m-file
function dydt = spendn(t,y)
dydt = [u; -sinu];
In command window:
[t,y] = ode45(@spendn,[0 7],[0; 1.57]);
I am doing something wrong here, pls help.
  1 comentario
Jan
Jan el 16 de Nov. de 2017
Editada: Jan el 16 de Nov. de 2017
Please post the complete error message.
The conversion from
y(1) = dθ/dt = ω = u_θ
y(2) = dω/dt = -b^2*sinθ (where b = sqrt(g/L))
to
dydt = [u; -sinu];
seems to be too rough. Neither "u" not "sinu" are defined.

Iniciar sesión para comentar.

Respuestas (1)

Star Strider
Star Strider el 16 de Nov. de 2017
Try this:
dydt = [u; -sin(u)];
  4 comentarios
Alexandros
Alexandros el 17 de Nov. de 2017
Now I get this error:
Error using odearguments (line 92)
SPENDN returns a vector of length 4,
but the length of initial conditions vector is 2. The
vector returned by SPENDN and the initial conditions
vector must have the same number of
elements.
Error in ode45 (line 113)
[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...
Star Strider
Star Strider el 17 de Nov. de 2017
Use this:
function dudt = spendn(t,u)
dydt = [u(2); -sin(u(1))];
end
or this:
spendn = @(t,u) [u(2); -sin(u(1))];
Either of these will work.

Iniciar sesión para comentar.

Categorías

Más información sobre Programming 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