You are on page 1of 4

MP,PC,PSI,TSI

3 heures

Calculatrices autorises

2015

Informatique
Autour de la dynamique gravitationnelle

Modliser les interactions physiques entre un grand nombre de constituants mne lcriture de systmes diffrentiels pour lesquels, en dehors de quelques situations particulires, il nexiste aucune solution analytique. Les
problmes de dynamique gravitationnelle et de dynamique molculaire en sont deux exemples. Afin danalyser le
comportement temporel de tels systmes, linformatique peut apporter une aide substantielle en permettant leur
simulation numrique. Lobjet de ce sujet, compos de quatre parties, est ltude de solutions algorithmiques
en vue de simuler une dynamique gravitationnelle afin, par exemple, de prdire une clipse ou le passage dune
comte.
Les programmes doivent tre crits en langage python et les requtes de base de donnes en langage SQL.
Les candidats sont libres de dfinir et de programmer toute fonction auxiliaire dont ils estiment avoir besoin
pour rpondre aux questions poses. Ils veilleront dans ce cas dfinir prcisment, le rle de chaque fonction
introduite, ses paramtres et son rsultat. Ils peuvent galement utiliser librement les fonctions de la bibliothque
standard Python, en particulier celles du module math.
Lorsque le sujet demande lcriture dune fonction python, la rponse doit commencer par lentte de la fonction
(instruction def). Dautre part, si le sujet prcise que la fonction prend un paramtre dun certain type ou qui
rpond une certaine condition, la fonction na pas vrifier la conformit de largument reu.
La lisibilit des codes produits, tant en python quen SQL, est un lment important dapprciation.

I Quelques fonctions utilitaires


I.A

Donner la valeur des expressions python suivantes :

I.A.1)

[1, 2, 3] + [4, 5, 6]

I.A.2)

2 * [1, 2, 3]

I.B
crire une fonction python smul deux paramtres, un nombre et une liste de nombres, qui multiple
chaque lment de la liste par le nombre et renvoie une nouvelle liste : smul(2, [1, 2, 3]) [2, 4, 6].
I.C

Arithmtique de listes

I.C.1) crire une fonction python vsom qui prend en paramtre deux listes de nombres de mme longueur et
qui renvoie une nouvelle liste constitue de la somme terme terme de ces deux listes :
vsom([1, 2, 3], [4, 5, 6]) [5, 7, 9].
I.C.2) crire une fonction python vdif qui prend en paramtre deux listes de nombres de mme longueur et
qui renvoie une nouvelle liste constitue de la diffrence terme terme de ces deux listes (la premire moins la
deuxime) : vdif([1, 2, 3], [4, 5, 6]) [-3, -3, -3].

II tude de schmas numriques


Soient une fonction de classe 2 sur et min et max deux rels tels que min < max . On note lintervalle
[min , max ]. On sintresse une quation diffrentielle du second ordre de la forme :

() = (())

(II.1)

o est une fonction donne, continue sur . De nombreux systmes physiques peuvent tre dcrits par une
quation de ce type.
On suppose connues les valeurs 0 = (min ) et 0 = (min ). On suppose galement que le systme physique
tudi est conservatif. Ce qui entraine lexistence dune quantit indpendante du temps (nergie, quantit de
mouvement, ), note , qui vrifie lquation (II.2) o = .

1
()2 + (()) =
2

(II.2)

II.A Mise en forme du problme


Pour rsoudre numriquement lquation diffrentielle (II.1), on introduit la fonction : dfinie par
, () = ().
2015-03-09 14:08:31

Page 1/4

II.A.1) Montrer que lquation (II.1) peut se mettre sous la forme dun systme diffrentiel du premier ordre
en () et (), not ().

min
II.A.2) Soit un entier strictement suprieur 1 et u = [[0, 1]]. On pose = max
et u ,
1
u = min + . Montrer que, pour tout entier [[0, 2]],
(u+1 ) = (u ) +

uu+1

() d

et

(u+1 ) = (u ) +

uu

uu+1

(II.3)

(()) d

uu

La suite du problme exploite les notations introduites dans cette partie et prsente deux mthodes numriques
dans lesquelles les intgrales prcdentes sont remplaces par une valeur approche.
II.B Schma dEuler explicite
Dans le schma dEuler explicite, chaque terme sous le signe intgrale est remplac par sa valeur prise en la
borne infrieure.
II.B.1) Dans ce schma, montrer que les quations (II.3) permettent de dfinir deux suites (u )uuu et (u )uuu ,
o u et u sont des valeurs approches de (u ) et (u ). Donner les relations de rcurrence permettant de
dterminer les valeurs de u et u connaissant 0 et 0 .
II.B.2) crire une fonction euler qui reoit en argument les paramtres qui vous semblent pertinents et
qui renvoie deux listes de nombres correspondant aux valeurs associes aux suites (u )uuu et (u )uuu . Vous
justifierez le choix des paramtres transmis la fonction.
II.B.3) Pour illustrer cette mthode, on considre lquation diffrentielle , () = 2 () dans
laquelle est un nombre rel.
a) Montrer quon peut dfinir une quantit , indpendante du temps, vrifiant une quation de la forme (II.2).
b) On note u la valeur approche de linstant u , u , calcule en utilisant les valeurs approches de
(u ) et (u ) obtenues la question II.B.1. Montrer que u+1 u = 2 2 u .
c) Quaurait donn un schma numrique qui satisfait la conservation de ?
d) En portant les valeurs de u et u sur laxe des abscisses et laxe des ordonnes respectivement, quelle serait
lallure du graphe qui respecte la conservation de ?
e) La mise en uvre de la mthode dEuler explicite gnre le rsultat graphique donn figure 1 gauche. Dans
un systme dunits adapt, les calculs ont t mens en prenant 0 = 3, 0 = 0, = 0, = 3, = 2 et
= 100.
100
80
60
40
20
0
20
40
60
80
15 10 5

Euler
0

10

15

20

100
80
60
40
20
0
20
40
60
80
10 5

Verlet
0

10

Figure 1
En quoi ce graphe confirme-t-il que le schma numrique ne conserve pas ? Pouvez-vous justifier son allure ?
II.C Schma de Verlet
Le physicien franais Loup Verlet a propos en 1967 un schma numrique dintgration dune quation de la
forme (II.1) dans lequel, en notant u = (u ) et u+1 = (u+1 ), les relations de rcurrence scrivent
u+1 = u + u +

2 u

et

u+1 = u +

( + u+1 )
2 u

II.C.1) crire une fonction verlet qui reoit en argument les paramtres qui vous semblent pertinents et qui
renvoie deux listes de nombres correspondant aux valeurs associes aux suites (u )uuu et (u )uuu .

II.C.2) On reprend lexemple de loscillateur harmonique (question II.B.3) et on compare les rsultats obtenus
laide des schmas dEuler et de Verlet.
a) Montrer que dans le schma de Verlet, on a u+1 u = (3 ).
2015-03-09 14:08:31

Page 2/4

b) La mise en uvre du schma de Verlet avec les mmes paramtres que ceux utiliss au II.B.3e donne le
rsultat de la figure 1 droite. Interprter lallure de ce graphe.
c) Que peut-on conclure sur le schma de Verlet ?

III Problme N corps

On sintresse prsent la dynamique dun systme de corps massifs en interaction gravitationnelle. Dans
la suite, les corps considrs sont assimils des points matriels u de masses u o [[0, 1]], 2 tant
un entier positif donn. Le mouvement de ces points est tudi dans un rfrentiel galilen muni dune base
orthonorme. Linteraction entre deux corps et est modlise par la force gravitationnelle. Laction exerce

u/u
= u u
par le corps sur le le corps est dcrite par la force
u u o uu est la distance sparant les
3
uu
corps et (uu =
u u ) et = 6,67 1011 Nm2 kg2 la constante de gravitation universelle.
tout instant u avec [[0, ]], chaque corps de masse u est repr par ses coordonnes cartsiennes
(uu , uu , uu ) et les composantes de son vecteur vitesse (uuu , uuu , uuu ) dans le rfrentiel de rfrence.
Trois listes sont utilises pour reprsenter ce systme en python
masse conserve les masses de chaque corps : masse[j] = u ;
position contient les positions successives de chaque corps : position[i][j] = [uu , uu , uu ] ;
vitesse mmorise les vitesses successives de chaque corps : vitesse[i][j] = [uuu , uuu , uuu ].
Lobjet de la suite du problme est de construire ces listes en mettant en uvre lalgorithme de Verlet.
III.A Position du problme
u exerce sur le corps u par lensemble des autres corps u , avec .
III.A.1) Exprimer la force
III.A.2) crire une fonction python force2(m1, p1, m2, p2) qui prend en paramtre les masses (m1 et m2
en kilogrammes) et les positions (p1 et p2, sous forme de listes de trois coordonnes cartsiennes en mtres) de
deux corps 1 et 2 et qui renvoie la valeur de la force exerce par le corps 2 sur le corps 1, sous la forme dune
liste trois lments reprsentant les composantes de la force dans la base de rfrence, en newtons.
III.A.3) crire une fonction forceN(j, m, pos) qui prend en paramtre lindice j dun corps, la liste des
u , la force exerce par
masses des corps du systme tudi ainsi que la liste de leurs positions et qui renvoie
tous les autres corps sur le corps j, sous la forme dune liste de ses trois composantes cartsiennes.
III.B Approche numrique
III.B.1) Expliciter la structure et la signification de position[i] et vitesse[i].
III.B.2) crire une fonction pos_suiv(m, pos, vit, h) qui prend en paramtres la liste des masses des
corps du systme tudi (en kilogrammes), la liste de leurs positions (en mtres) linstant u , la liste de leurs
vitesses (en mtres par seconde) au mme instant et le pas dintgration (en secondes) et qui renvoie la liste
des positions des corps linstant u+1 calcules en utilisant le schma de Verlet.

III.B.3) crire une fonction etat_suiv(m, pos, vit, h) qui prend les mmes paramtres que la fonction
pos_suiv et qui renvoie la liste des positions (en mtres) et la liste des vitesses (en m/s) des corps linstant
u+1 calcules en utilisant le schma de Verlet.
ln(u )
III.B.4) En notant u la dure des calculs pour un
nombre de corps, la mise en uvre de la fonction
8
etat_suiv a donn le rsultat graphique de la figure 2
o on a port ln( ) en abscisse et ln(u ) en ordonne.
7
a) Quelle relation simple peut-on tablir entre ln(u )
6
et ln( ) partir de la figure 2 ?
b) Quelle hypothse peut-on mettre quant la com5
plexit de lalgorithme tudi ?
III.B.5)
4
a) Estimer la complexit temporelle de la fonction
etat_suiv sous la forme ( u ).
3
b) Comparer avec le rsultat obtenu la question III.B.4.
2
1
5,5

6,5

7
7,5
ln( )

Figure 2

2015-03-09 14:08:31

Page 3/4

8,5

IV Exploitation dune base de donnes


partir de mesures rgulirement effectues par diffrents observatoires, une base de donnes des caractristiques
et des tats des corps clestes de notre Systme solaire est maintenue jour. Lobjectif de cette partie est
dextraire de cette base de donnes les informations ncessaires la mise en uvre des fonctions dveloppes
dans les parties prcdentes, puis de les utiliser pour prvoir les positions futures des diffrentes plantes. Les
donnes extraire sont les masses des corps tudis et leurs tats (position et vitesse) linstant min du dbut
de la simulation.
Une version simplifie, rduite deux tables, de la base de donnes du Systme solaire est donne figure 3. Les
masses sont exprimes en kilogrammes, les distances en units astronomiques (1 au = 1,51011 m) et les vitesses
en kilomtres par seconde. Le rfrentiel utilis pour exprimer les composantes des positions et des vitesses est
galilen, orthonorm et son centre est situ proximit du Soleil.
CORPS

ETAT

id_corps

nom

masse

id_corps datem

Figure 3

vx

vy

vz

Schma de la base de donnes

La table CORPS rpertorie les corps tudis, elle contient les colonnes
id_corps (cl primaire) entier identifiant chaque corps ;
nom, chaine de caractres, dsigne le nom usuel du corps ;
masse de type flottant, contient la masse du corps.
La table ETAT rassemble lhistorique des tats successifs (positions et vitesses) des corps tudis. Elle est constitue de huit colonnes :
id_corps de type entier, identifie le corps concern ;
datem est la date de la mesure, sous forme dun entier donnant le nombre de secondes coules depuis un
instant dorigine ;
trois colonnes de type flottant pour les composantes de la position x, y, z ;
trois colonnes de type flottant pour les composantes de la vitesse vx, vy, vz.
IV.A crire une requte SQL qui renvoie la liste des masses de tous les corps tudis.
IV.B Les tats des diffrents corps ne sont pas forcment tous dtermins exactement au mme instant.
Nous allons assimiler ltat initial ( la date min ) de chaque corps son dernier tat connu antrieur min .
Dans toute la suite, on supposera que la valeur de min , sous le format utilis dans la table ETAT, est accessible
toute requte SQL via lexpression tmin().
IV.B.1) On souhaite dabord vrifier que tous les corps tudis disposent dun tat connu antrieur tmin().
Le nombre de corps prsents dans la base est obtenu grce la requte SELECT count(*) FROM corps. crire
une requte SQL qui renvoie le nombre de corps qui ont au moins un tat connu antrieur tmin().
IV.B.2) crire une requte SQL qui renvoie, pour chaque corps, son identifiant et la date de son dernier tat
antrieur tmin().
IV.B.3) Le rsultat de la requte prcdente est stock dans une nouvelle table date_mesure deux colonnes :
id_corps de type entier, contient lidentifiant du corps considr ;
date_der de type entier, correspond la date du dernier tat connu du corps considr, antrieur tmin().
Pour simplifier la simulation, on dcide de ngliger linfluence des corps ayant une masse strictement infrieure
une valeur fixe masse_min() et de ne sintresser quaux corps situs dans un cube, centr sur lorigine du
rfrentiel de rfrence et darte arete() donne. Les faces de ce cube sont parallles aux plans forms par les
axes du rfrentiel de rfrence.
crire une requte SQL qui renvoie la masse et ltat initial (sous la forme masse, x, y, z, vx, vy, vz) de
chaque corps retenu pour participer la simulation. Classez les corps dans lordre croissant par rapport leur
distance lorigine du rfrentiel.
IV.C On dispose des variables python t0, p0, v0 et masse initialises partir du rsultat de la requte
prcdente. t0 est un entier qui donne la date des conditions initiales : il correspond min et tmin(). p0 est
une liste de longueur , chaque lment de p0 est une liste 3 lments de la forme [x, y, z] reprsentant
la position initiale dun corps, en unit astronomique. v0 a une structure identique mais indique les vitesses
initiales des corps considrs, en km/s. masse est dcrite en partie III.
crire la fonction python simulation_verlet(deltat, n) qui prend en paramtre un incrment de temps en
secondes (deltat > 0) et un nombre ditrations (n > 0) et qui renvoie la liste des positions des corps considrs
pour chaque instant t0, t0 + deltat, , t0 + n*deltat (cf variable position dfinie en partie III). Les calculs
seront mens en utilisant le schma dintgration de Verlet, le rsultat sera fourni en unit astronomique.
FIN
2015-03-09 14:08:31

Page 4/4