//******************************************************************************** // Pendule simple - Tracé de l'évolution de l'énergie // Dominique Lefebvre - TangenteX.com // septembre 2010 //******************************************************************************** // Définition des paramètres l = 1. // longueur en m g = 9.81 // accélération de la pesanteur en m.s-2 m = 1. // masse en kilogramme Omega2 = g/l; // pulsation du pendule // Définition du système différentiel décrivant le modèle du pendule function du = Pendule(t,u) du(1) = u(2); du(2) = -Omega2*sin(u(1)); endfunction // Définition des conditions initiales theta0 = input("Angle initial (en rd): "); vtheta0 = input("Vitesse angulaire initiale (en rd/s): "); Ep0 = m*g*l*(1 - cos(theta0)); Ec0 = (1/2)*m*(l^2)*vtheta0^2; u0 = [theta0;vtheta0]; t0 = 0; // Définition des paramètres de calcul T = 2*%pi; pas = 0.001; t = t0:pas:T; // intégration du système [u] = ode(u0,t0,t,Pendule); // u(1): angle(t) u(2): vitesse angulaire(t) // calcul des valeurs Ep et Ec [Ep] = m*g*l*(1 - cos(u(1,:))); [Ec] = (1/2)*m*(l^2)*u(2,:)^2; // Affichage des diagrammes d'énergie clf; a=gca(); a.x_label.text = "Temps"; a.y_label.text = "Energie"; plot2d(t,Ep', style = 5); plot2d(t,Ec', style = 1); legends(['Ep';'Ec'],[5,1],opt="ur"); xgrid(2);