Pendules couplés θ θ2
Transcription
Pendules couplés θ θ2
Université Pierre et Marie Curie, Paris VI Licence de physique ENS Cachan Physique fondamentale, PHYTEM — PHYSIQUE NUMÉRIQUE Devoir sur table du 15 novembre 2007 Pendules couplés Durée de l’épreuve : 2h Les téléphones portables doivent être éteints. On considère un système de deux pendules simples couplés comme sur la figure ci-contre, où la barre oblique qui relie les deux pendules exerce un couple proportionnel à la torsion qu’on lui impose (on peut imaginer par exemple une barre métallique élastique en torsion, comme une lame de scie à métaux, fixée aux tiges rigides qui portent les deux masses). Les documents ne sont pas autorisés. θ2 I— L’énergie potentielle d’un tel système peut s’écrire : θ1 1 V = −mgℓ cos θ1 − mgℓ cos θ2 + C(θ1 − θ2 )2 2 où g = 9, 81ms−2 est l’accélération gravitationnelle à la surface de la terre, ℓ la longueur des pendule, m leur masse, C la constante de couplage et θ1 et θ2 les angles qu’ils font avec la verticale. 1– En écrivant que ∂V − = mℓθ̈i , i ∈ [1, 2] ℓ∂θi montrer que les équations du mouvement de ces pendules s’écrivent : g θ̈1 = − sin θ1 − ℓ g θ̈2 = − sin θ2 − ℓ C (θ1 − θ2 ) mℓ2 C (θ2 − θ1 ) mℓ2 2– Trouver les fréquences de vibration de ce système dans l’approximation des petites oscillations, c’est-à-dire : sin θ1 ∼ θ1 et sin θ2 ∼ θ2 (on cherchera des solutions du type θ1 = α1 eiωt et θ2 = α2 eiωt , où α1 et α2 sont des constantes, et on écrira le déterminant du système obtenu pour en déduire ω). II— On dispose du sous-programme suivant qui fait un pas d’intégration d’un système d’équations différentielles du premier ordre par la méthode de Runge-Kutta d’ordre 4 : subroutine rk4(x,y,dx,n,deriv) ! 4th order Runge-Kutta. See Numerical Recipes p. 701ff ! f90 implicit none integer , intent(in) :: n real , intent(in) :: x, dx real, dimension(n), intent(inout) :: y real :: ddx real, dimension(n) :: yp, k1, k2, k3, k4 1 ddx = 0.5*dx call deriv(x,y,k1,n) call deriv(x+ddx,yp,k2,n) call deriv(x+ddx,yp,k3,n) call deriv(x+dx,yp,k4,n) end ; ; ; ; yp yp yp y = = = = y y y y + ddx*k1 + ddx*k2 + dx*k3 + dx*( k1 + 2.0*k2 + 2.0*k3 + k4 )/6.0 1– Comment peut-on transformer une équation différentielle du deuxième ordre en un système d’équations différentielles du premier ordre. En conséquence, quelle valeur faut-il donner à n dans ce problème ? Justifer votre réponse. 2– Écrire un sous-programme subroutine pendules (t, theta, dtheta, n) utilisé par rk4 et qui calcule les dérivées dtheta des variables theta. On précisera au passage quelles sont les grandeurs physiques représentées par les différents éléments du tableau theta, de dimension n. Si un module vous paraı̂t utile, donnez-en également le listing. 3– Écrire aussi un programme principal qui calcule les valeurs des angles et de leurs dérivées temporelles, ainsi que l’énergie du système à chaque pas de temps. On fixera les valeurs suivantes g = 9.91, m = 0.1, ℓ = 0.2 et C = 0.01. Estimer et fixer un pas de temps raisonnable compte-tenu des résultats analytiques obtenus précédemment. La durée totale de la simulation devra pouvoir être saisie sur le clavier au moment de l’exécution. On prévoira de placer les résultats de ces calculs dans des fichiers appropriés. 4– On a intégré les équations du mouvement avec des pas de temps dt différents. Les figures cidessous montrent la valeurs de l’énergie calculées au cours du temps pour les différents choix de pas. Quel choix préconisez-vous ? Justifier votre réponse. dt=0.05 dt=0.01 -0.39135 -0.391369 -0.39137 -0.3914 -0.39137 -0.39145 -0.3915 E E -0.391371 -0.391371 -0.391372 -0.39155 -0.391372 -0.3916 -0.391373 -0.39165 -0.391373 0 50 100 150 200 250 t 300 350 400 450 500 0 50 100 150 200 300 350 400 450 500 dt = 0.002 -0.39137 -0.39137 -0.39137 -0.39137 -0.39137 -0.39137 -0.39137 -0.39137 E E dt=0.005 250 t -0.39137 -0.39137 -0.39137 -0.39137 -0.39137 -0.39137 0 50 100 150 200 250 t 300 350 400 450 500 0 2 50 100 150 200 250 t 300 350 400 450 500 5– On a tracé les courbes de theta(i) pour i = 1, 4 avec comme conditions initiales : theta(1:2) = 0.1 et theta(3:4) = 0. pour la figure de gauche, et theta(1) = 0.1, theta(2) = -0.1 et theta(3:4) = 0. pour la figure de droite. On a choisi les paramètres du problème tels que : 1 2π r g = 1.11 ℓ et 1 2π s 2C g + = 1.17 ℓ mℓ2 theta1(0) = theta2(0) theta1(0) = - theta2(0) 0.8 0.8 theta 1 theta 2 theta 3 theta 4 0.6 theta 1 theta 2 theta 3 theta 4 0.6 0.4 0.4 0.2 0.2 0 0 -0.2 -0.2 -0.4 -0.4 -0.6 -0.6 -0.8 -0.8 0 2 4 6 8 10 0 2 4 t 6 8 10 t Pouvez-vous expliquer les figures obtenues et justifier les valeurs des périodes que l’on observe sur ces figures ? III— 1– Comment modifier le sous-programme subroutine pendules pour forcer le pendule 1 avec une 2π « force » a sin( t) ? τ 2– Pour a = 10, on obtient les courbes ci-dessous (θ1 (t) et θ2 (t)) : a=10 a=10 1.5 0.4 theta 1 theta 2 0.3 1 0.2 0.5 0.1 0 0 -0.1 -0.5 -0.2 -1 -0.3 -1.5 -0.4 0 100 200 300 400 500 t 600 700 800 900 1000 0 Pour a = 11, on obtient les deux suivantes : 3 100 200 300 400 500 t 600 700 800 900 1000 a=11 a=11 600 600 theta 1 theta 2 500 500 400 400 300 300 200 200 100 100 0 0 -100 -100 -200 -200 0 100 200 300 400 500 600 700 800 900 1000 0 t 100 200 300 400 500 t Que s’est-il passé ? 4 600 700 800 900 1000 Corrigé I— 1– 1 V = −mgℓ cos θ1 − mgℓ cos θ2 + C(θ1 − θ2 )2 2 ∂V 1 C mℓθ̈1 = − = − mgℓ sin θ1 − (θ1 − θ2 ) ℓ∂θ1 ℓ ℓ 1 C ∂V = − mgℓ sin θ2 − (θ2 − θ1 ) mℓθ̈2 = − ℓ∂θ2 ℓ ℓ g C (θ1 − θ2 ) θ̈1 = − sin θ1 − ℓ mℓ2 θ̈ = − g sin θ − C (θ − θ ) 2 2 1 2 ℓ mℓ2 2– Si θ1 et θ2 sont petits, on fait l’approximation habituelle et on pose θ1 = α1 eiωt θ2 = α2 eiωt g −ω 2 α1 = − α1 + ℓ g 2 −ω α2 = − α2 + ℓ C (α2 − α1 ) mℓ2 C (α1 − α2 ) mℓ2 Ce qui s’écrit matriciellement : g C ℓ + mℓ2 C − 2 mℓ C − 2 mℓ g C + ℓ mℓ2 α1 α2 ! =ω 2 α1 α2 ! ω 2 est donc une valeur propre de la matrice, on obtient alors soit et deux solutions : g C + − ω2 ℓ mℓ2 2 − C mℓ2 2 =0 g C C + − ω2 = ± 2 ℓ mℓ2 mℓ g C +2 2 ℓ g mℓ 2 ω− = ℓ La solution ω− est celle du pendule simple, avec α1 = α2 , l’autre, ω+ correspond à α1 = −α2 . ω2 + = II— 1– Quand on a par exemple ẍ = f (t, x, ẋ), il suffit d’introduire y = ẋ et ça donne le système ( ẋ = y ẏ = f (t, x, y) autrement dit, une équation différentielle du deuxième ordre égale deux équations différentielles du premier ordre. Ici, on en a deux, soit n = 4 2– 5 module pendules implicit none real :: m, g, l, C end subroutine pendul(t,theta, dtheta, use pendules ! definit g, l, C, m implicit none integer, intent(in):: n real, intent(in) :: t real, dimension(n), intent(in) :: real, dimension(n), intent(out) :: n) et g theta dtheta ! theta(1) et theta(2) = angles ! theta(3) et theta(4) = vitesses angulaires dtheta(1:2) = theta(3:4) dtheta(3) = -g/l*sin(theta(1)) + C/(m*l*l)*(theta(2)-theta(1)) dtheta(4) = -g/l*sin(theta(2)) + C/(m*l*l)*(theta(1)-theta(2)) end 3– program d_p use pendules implicit none integer, parameter :: n = 4 ! theta(1:2) = theta(1:2) ; theta(3:4) = d theta(1:2)/dt real, dimension(n) :: theta real :: t, dt = 0.002, v, k integer :: step, nstep external :: pendul g = 9.81 ; l = 0.2; m = 0.1 ; c =0.01 write(*,’("Duree : ",$)’) ; read(*,*) t nstep = nint(t/dt) ! nbr. pas theta = 0. ; theta(1) = 0.1 ! cond. init. open(1,file=’d_pendules.out’) ; open(2,file=’d_pendules.ener’) do step = 1, nstep t = step*dt call rk4(t,theta,dt,n,pendul) v = -m*g*l*(cos(theta(1)) + cos(theta(2))) + 0.5*c*(theta(1)-theta(2))**2 k = 0.5*m*l*l*(theta(3)**2 + theta(4)**2) write(1,*) t, theta write(2,*) t, v+k, v, k enddo close(1) ; close(2) end 4– dt = 0.005 parce que pour dt plus grand, l’énergie dérive, et pour dt plus petit, on ne gagne rien de sensible, alors qu’on consomme inutilement du temps de calcul. 5– Sur la figure de droite, les deux pendules ont le même mouvement à cause des conditions initiales, autrement dit, les courbes se superposent deux à deux, ainsi on n’en voit que deux sur quatre. . . On voit environ 11 périodes sur l’intervalle de temps [0, 10] soit une fréquence de 1.1 qui 6 p correspond bien à celle ( g/ℓ/2π) qu’on avait trouvé pour les deux pendules en phase pour de petites oscillations. Sur la figure de gauche, les pendules sont en opposition de phase, et donc on voit les 4 courbes (θ1 , θ2 , θ̇1 , θ̇2 ) et environ onze périodes et demi, soit une fréquence de 1.15 ce qui n’est pas très loin de 1.17. III— 1– Par exemple : subroutine pendul(t,theta, dtheta, n) use pendules implicit none integer, intent(in):: n real, intent(in) :: t real, dimension(n), intent(in) :: theta real, dimension(n), intent(out) :: dtheta real, parameter :: pi = 3.14159265 dtheta(1:2) = theta(3:4) dtheta(3) = -g/l*sin(theta(1)) + C/(m*l*l)*(theta(2)-theta(1)) + & a*sin(2*pi*t/tau) dtheta(4) = -g/l*sin(theta(2)) + C/(m*l*l)*(theta(1)-theta(2)) end les valeurs de a et tau étant définies dans le module pendules. 2– Pour a = 10 l’amplitude du mouvement des pendules reste en-deça de ±π/2, donc les deux pendules oscillent, mais pour a = 11, on dépasse cette limite : or cela correspond au mouvement où le couple de rappel dû au poids diminue au lieu d’augmenter quand l’angle augmente. Le pendule peut ainsi faire plusieurs tours (entraı̂nant l’autre) ce qui donne le mouvement de grande amplitude et d’apparence désordonnée que l’on voit sur la deuxième figure. 7