Examen de Méthodes Numériques (ph404) janvier 2006
documents autorisés: notes de cours, site
http://www.pmmh.espci.fr/~daerr/ph404/
temps: 2 heures
bon courage!
Notes:Vous devez imprimer les programmes et graphiques que
vous créez. Si toutefois vous n'y parvenez pas (en cas de panne
d'imprimante par exemple), prevoyez de sauvegarder tous les fichiers
(programmes, graphiques, ...) dans un répertoire que vous archivez à
la fin de l'examen avec la commande tar
(voir doc
Unix). Cette archive, vous pouvez soit nous l'envoyer par
courrier électronique (en pièce jointe), soit la déposer par
ftp sur la machine ftp.espci.fr (user: anonymous, mot de passe: toto)
dans le repertoire /incoming/ph404, soit encore la copier dans
/home/profs/adrian/ex2006/
[plus de détails c.f. TD9 ou ce site Web]
Nous allons considérer le mouvement d'un petit corps P dans le champ
gravitationnel créé par deux corps plus lourds S et J (p.ex. Soleil et
Jupiter). Notons μ=mJ/mS=0.001
le rapport des masses de
J et S. La masse de P est supposée suffisamment petite pour n'avoir
aucune influence sur la dynamique de S et J. En se plaçant dans un
référentiel tournant tel que les positions de S et J sont fixes:
S = (xS, yS) = (-μ, 0), J = (xJ, yJ) = (1-μ, 0)
(le barycentre est à l'origine), les équations du mouvement pour la
position (x,y)
de P s'écrivent alors:
d²x/dt² = 2 dy/dt + x - (1-μ) (x+μ)/rS³ - μ (x-1+μ)/rJ³ d²y/dt² = -2 dx/dt + y - (1-μ) y/rS³ - μ y/rJ³
Les distances rS = distance(P,S)
et
rJ = distance(P,J)
sont définies par les
relations rS² = (x+μ)² + y²
et
rJ² = (x-1+μ)² + y²
. La vitesse de P selon Ox
est notée dx/dt
, l'accélération selon Ox par conséquent
d²x/dt²
.
Vu qu'il n'y a pas de terme dépendant explicitement du temps, l'énergie du système
E = ½((dx/dt)² + (dy/dt)²) - (1-μ)/rS - μ/rJ - ½(x² + y²) =: ½((dx/dt)² + (dy/dt)²) + Vj
est conservée (la quantité C = -2E
s'appelle aussi
constante de Jacobi). Le potentiel effectif
Vj
s'appelle potentiel de Jacobi.
On peut montrer que dans le repère tournant avec le Soleil et Jupiter, il y a 5 points d'équilibre (voir TD 9 (minimisation/points de Lagrange)):
Il existe une population d'astéroïdes piégées prés des points L4 et L5, appelé « Troyens ».
Réécrivez les équations du mouvement comme un système de 4 équations d'ordre 1. Précisez quelles sont les quantités à intégrer, en fonction de quel(s) paramètre(s).
Écrivez un programme en C qui intégre le mouvement du corps P sur une
durée d
par pas de temps h
, en utilisant la méthode de Runge-Kutta
4. Dans un premier temps, on voudrait que le programme affiche
l'énergie E
au début (t=0
) et à la fin (t=d
) de l'intégration.
Quelles sont les instructions pour compiler et executer le programme ?
Pour contrôler la qualité de notre intégration, nous utilisons
l'énergie E
, qui en théorie doit être strictement
conservée. Pour les conditions initiales (x,y,dx/dt,dy/dt)t=0
= (0.7,0.7,0.1,0.1)
, utilisez le programme pour calculer
l'énergie E
initiale et au bout d'un temps
t=100
et pour les trois valeurs suivantes du pas de temps
h
: h=0.01
, h=0.1
et
h=1.0
. Commentez le résultat. Si on exige une erreur
inférieure à 1%, lequel des trois pas de temps a-t-on intérêt à
choisir ?
N'oubliez pas d'imprimer/de sauvegarder votre programme.
Modifiez le programme qu'il affiche, en plus de l'énergie, la position
et la vitesse de P après chaque pas d'intégration. Utilisez-le pour
calculer les orbites correspondant aux conditions initiales (x,y,dx/dt,dy/dt)t=0 = (0.5-μ+0.002,sqrt(3)/2,dv,dv)
pour
dv=0
dv=0.05
Dans chaque cas, précisez quel pas de temps vous avez choisi pour avoir un erreur sur l'énergie inférieure à 1%.
Utilisez gnuplot pour afficher les orbites calculées. Sauvegardez et imprimez vos graphes et votre programme.
Déterminez (à l'aide de gnuplot, en regardant x(t)) dans le premier
cas la période de rotation autour du point de Lagrange, et dans le
deuxième cas la période de circulation autour de Jupiter. Comment se
compare-t-elles à la pérode orbitale T=2π
du système S-J ?
Nous voulons intégrer l'orbite de 1000 particules distribuées au
hasard au voisinage de l'orbite de Jupiter. Modifiez encore votre
programme pour qu'il intègre N=1000 fois le mouvement d'un corps P sur
une durée d=100
, avec des conditions initiales différentes à chaque
fois. Comme conditions initiales, on prendra
(x,y,dx/dt,dy/dt)t=0 = (r cos(α),r sin(α),-v sin(α),v cos(α))
où r ? (0.7, 1.3)
et α ? (0, 2π)
sont tirés
au hasard à chaque itération (fonction rand ou votre propre générateur
pseudo-aléatoire) et v=1/sqrt(r³)-1
.
On n'affichera la position et la vitesse de P qu'une fois à la fin de chaque intégration (c'est-à-dire à t=d, en non plus après chaque pas d'intégration individuel).
On prendra ici μ=0.01
et un pas d'intégration
h=0.1
.
Affichez dans un graphique l'ensemble des positions finales obtenues. Commentez la figure. En particulier, peut-on distinguer des zones stables ou instables ? Sauvegardez/imprimez le graphe et votre programme.