Autor Tema: Péndulo

0 Usuarios y 1 Visitante están viendo este tema.

30 Diciembre, 2020, 11:58 pm
Leído 412 veces

Ricardo Boza

  • $$\Large \color{#c88359}\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 736
  • País: es
  • Karma: +1/-0
  • Sexo: Masculino
Hola,

Lo curioso es que le acaba dando la vuelta (por error).


Código: (Matlab) [Seleccionar]
function pendule
clear, clc % pi/4 % pi/2   %%%%%%%
[~,y]=ode45(@fun,0:0.05:40,[pi-0.1,0]);
                           %%%%%%%
figure(1)
close(1)
figure(1)
hold on
axis([-1 1 0 2])
axis square
[n,~]=size(y);
for k=1:n
    plot(sin(y(k,1)),1-cos(y(k,1)),...
        'bo','MarkerSize',3,'MarkerFaceColor','b')
    plot([0 sin(y(k,1))], [1 1-cos(y(k,1))],'b')
    pause(0.01)
end
text(0.85,0.1,'end')

    function [dydt]=fun(~,y)
        dydt=[y(2); -sin(y(1))];
    end
end


Código: (Matlab) [Seleccionar]
function pendule
clear, clc % pi/4 % pi/2   %%%%%%%
[~,y]=ode45(@fun,0:0.05:40,[pi-0.1,0]);
%%%%%%%
figure(1)
close(1)
figure(1)
[n,~]=size(y);
for k=1:n
    hold on
    axis([-1 1 0 2])
    axis square
    plot(sin(y(k,1)),1-cos(y(k,1)),...
        'bo','MarkerSize',3,'MarkerFaceColor','b')
    plot([0 sin(y(k,1))], [1 1-cos(y(k,1))],'b')
    pause(0.01)
    clf
end
hold on
axis([-1 1 0 2])
axis square
plot(sin(y(n,1)),1-cos(y(n,1)),...
    'bo','MarkerSize',3,'MarkerFaceColor','b')
plot([0 sin(y(n,1))], [1 1-cos(y(n,1))],'b')
text(0.85,0.1,'end')

    function [dydt]=fun(~,y)
        dydt=[y(2); -sin(y(1))];
    end
end

31 Diciembre, 2020, 03:25 am
Respuesta #1

Abdulai

  • Moderador Global
  • Mensajes: 2,698
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino
Hola,

Lo curioso es que le acaba dando la vuelta (por error).
...

Que no lo vean los inventores de máquinas de movimiento perpetuo  ;)

Se han comido algo en ODE45  :(  Copypasteo el programa a Octave sin tocar ningún parámetro y ahí obedece la física.