Hola, tengo este programa de un péndulo que no da el resultado que debería dar, para Longitud = 10m y ángulo = 0.01 rad Debería dar un periodo de 6,34s. Pero da 0,05segundos. Creo que sale del bucle antes de tiempo (hace 253 iteraciones y debería dar [creo] muchas más). Dejo el programar a ver si podéis encontrar el fallo:
Un saludo y gracias de antemano.
Código:
#include <iostream>#include <math.h> #define g 9.8 using namespace std; int main() { double periodo, longitud, angulo1, tiempo, vangular1, aangular1, vangular2, intervalo, cociente; //aangular y vangular se corresponden con la aceleración y la velocidad angular respectivamente. cout << "Introduzca la longitud del pendulo (en metros): "; cin >> longitud; cout << "Introduzca el angulo inicial (en radianes): "; cin >> angulo1; vangular1 = 0; cociente = -(g/longitud); aangular1 = cociente*sin(angulo1); intervalo = 1.0e-4*(sqrt(longitud/g)); tiempo = 0; vangular2 = 0; //g está definida arriba do{ vangular1 = vangular2; vangular2 = vangular1 + aangular1*tiempo; angulo1 = angulo1 + vangular1*tiempo; aangular1 = cociente*sin(angulo1); tiempo = tiempo + intervalo; }while((vangular1 >= 0 && vangular2 > 0) || (vangular1 <= 0 && vangular2 < 0) || vangular2 == 0); periodo = 2*tiempo - intervalo; cout << "El periodo es: " << periodo << " +- " << intervalo <<endl; }
Comentario