Péndulo matemático
Hola, tengo un problema a la hora de resolver un ejercicio, ¿tengo qué calcular el periodo de la oscilación resultante de un péndulo en Octave/matlab tengo representada la función de movimiento pero no se calcular el periodo me podrías ayudar?
El programa que tengo hasta ahora es:
1;
##Función del sistema de la EDO
function zdot = F(z,t)
zdot = [z(2)
-sin(z(1))];
endfunction
## Abcisas de integración y estado incial
t = linspace (0, 50, 500);
function T=per(x,t)
h=0.01;
t1 = t(x>=max(x)-h)
#t2 = mean(t1(:,1),t1(:,8));
T=mean(diff(t1));
endfunction
y0= 0;
#N=1; en vez de 50 si queremos solo un nodo
x0 = linspace (0,3.14,50);
T= zeros(1,50);
for i=1:1:50;
z0= [x0(i), y0];
## Llamada al integrador.
z=lsode ("F", z0, t);
x=z(:,1);#/x0(i);
T(i)=per(x,t);
endfor
## Dibujamos la trayetoria circulo ese...
#plot (z(:,1), z(:,2), "-r")
## Dibujamos
plot (t, x);
## Grafica final
#plot (x0,T)
save file='parteA3';
datos=[t,x];
Sabe(savefile,'datos','ASCII')
Gracias
El programa que tengo hasta ahora es:
1;
##Función del sistema de la EDO
function zdot = F(z,t)
zdot = [z(2)
-sin(z(1))];
endfunction
## Abcisas de integración y estado incial
t = linspace (0, 50, 500);
function T=per(x,t)
h=0.01;
t1 = t(x>=max(x)-h)
#t2 = mean(t1(:,1),t1(:,8));
T=mean(diff(t1));
endfunction
y0= 0;
#N=1; en vez de 50 si queremos solo un nodo
x0 = linspace (0,3.14,50);
T= zeros(1,50);
for i=1:1:50;
z0= [x0(i), y0];
## Llamada al integrador.
z=lsode ("F", z0, t);
x=z(:,1);#/x0(i);
T(i)=per(x,t);
endfor
## Dibujamos la trayetoria circulo ese...
#plot (z(:,1), z(:,2), "-r")
## Dibujamos
plot (t, x);
## Grafica final
#plot (x0,T)
save file='parteA3';
datos=[t,x];
Sabe(savefile,'datos','ASCII')
Gracias
2 Respuestas
Respuesta de bolkarian
1
Respuesta de blooddragon