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

Documents pareils