# -*- coding: utf-8 -*- # intégration du mouvement du pendule par Runge-Kutta 4 # version minimaliste # executer comme suit: # python pendule_rk4_mini.py > pendule.data # 2008 Adrian Daerr, Univ Paris Diderot # domaine public from math import sin # conditions initiales theta = 0.0 omega = 1.99 # boucle principale t, tfinal = 0.0, 50.0; # intervalle de simulation dt=0.05 # pas de temps n=0 while t<tfinal: t = n*dt # afficher l'état du système print t, theta, omega # integrer d'un pas de temps dtheta1 = omega domega1 = -sin(theta) theta_int = theta + 0.5*dt*dtheta1 omega_int = omega + 0.5*dt*domega1 dtheta2 = omega_int domega2 = -sin(theta_int) theta_int = theta + 0.5*dt*dtheta2 omega_int = omega + 0.5*dt*domega2 dtheta3 = omega_int domega3 = -sin(theta_int)# ce programme contient des traces d'Omega3 ! theta_int = theta + dt*dtheta3 omega_int = omega + dt*domega3 dtheta4 = omega_int domega4 = -sin(theta_int) theta = theta + dt*(dtheta1 + 2*dtheta2 + 2*dtheta3 + dtheta4)/6 omega = omega + dt*(domega1 + 2*domega2 + 2*domega3 + domega4)/6 n+=1