IPT_ PCSI utilisation de odeint : oscillateur harmonique et trajectoires de satellites
- page 3 -
f
t
= − m 1
r
3
r
→
, c'est à dire γ
t
= − 1
r
3
r
→
2.1 Implémentation de l’équation γ
γγ
γ
t
= −
− −
− 1
r
3
r
→
Comme γ
t
(t) = (x"(t), y"(t)), on a affaire à un système différentiel du second ordre où l’inconnue est le vecteur (x(t) , y(t)).
Il faut le transformer en un système du premier ordre en augmentant la dimension.
Pour cela, on pose Y(t) = (x(t), x'(t), y(t), y'(t))). On a alors,
Y'(t) =
x'(t)
x"(t)
y'(t)
y"(t)
=
x'(t)
− x(t)
(x(t)
2
+ y(t)
2
)
3/2
y(t)
− y(t)
(x(t)
2
+ y(t)
2
)
3/2
= f (Y(t), t) , Y
0
= Y(t
0
) =
x
0
vx
0
y
0
vy
0
En Python, on définira donc (observer et comprendre la syntaxe),
def f(z, t):
| (x, dx, y, dy) = z
| return [dx , − 1/(x**2 + y**2)**(3/2)*x , dy , − 1/(x**2 + y**2)**(3/2)*y]
odeint retournera le tableau Y avec 4 colonnes, la première fournissant les valeurs de x(t), la troisième celles de y(t).
2.2 Trajectoire du satellite soumis à l’attraction d’un seul corps
>>> Ecrire une fonction orbite(ini, T, f) où ini est une liste de la forme [x
0
, vx
0
, y
0
, vy
0
] fixant les conditions initiales à
l’instant 0, T la durée d’observation et f la fonction qu'on vient de définir.
La fonction devra tracer successivement,
• La trajectoire du satellite (le portrait de phase) : (x(t), y(t)) , t ∈ [0,T]
• La courbe de la fonction t # x(t) : (t, x(t)) , t ∈ [0,T]
• La courbe de la fonction t # y(t) : (t, y(t)) , t ∈ [0,T]
On testera la fonction avec les jeux de données suivants :
ini = [2, − 0.2 , 0 , 0.4] , ini = [2,− 0,5, 0, 1] et un exemple où le vecteur vitesse initial est dirigé vers l’astre.
Deviner la nature de la trajectoire.
2.3 Avec une force de frottement
>>> Rajouter un frottement : le satellite est donc soumis à une force supplémentaire proportionnelle à la vitesse − k V
t
. On
prendra k/m = 0.05.
Modifier la fonction f donnée en 2.1 et écrire une fonction orbite_amortie(ini, T, f) sur le modèle de orbite(ini, T, f).
Observer et commenter l’effet du frottement sur le mouvement.
2.4 Trajectoire avec deux astres
>>> On rajoute un deuxième astre S situé en position (1,0) avec GM
s
= 0.5. Le satellite est alors soumis à l’attraction des
deux astres. On ne sait pas résoudre explicitement les équations du mouvement (problème des 3 corps) ni même garantir
la stabilité de l’orbite.
Modifier la fonction f en rajoutant le terme dû au deuxième astre − 1/MS
3
SM
→
.
Procéder ensuite comme pour orbite(ini, T, f).
On pourra tester avec le jeu de données ini = [2,0,0,0.25] et T = 20, 30, ... (adapter la durée) et ini = [2,0,-0.5,1].