Le problème des trois corps Grand Oral · mathématiques, physique-chimie, HGGSP Un support de connaissances pour construire sa propre question

← Tous les textes du Grand Oral

MathsPCHGGSP

Depuis Newton, on connaît la loi qui gouverne les astres : deux corps s'attirent avec une force proportionnelle à leurs masses et inversement proportionnelle au carré de leur distance. Avec deux corps, comme le Soleil et une planète, on sait tout calculer. Avec trois, comme le Soleil, la Terre et la Lune, personne n'a jamais trouvé de formule générale : c'est le problème des trois corps. Il a occupé les plus grands mathématiciens pendant trois siècles, a donné naissance à la théorie du chaos, et sert aujourd'hui à placer des télescopes dans l'espace.

Ce texte présente ce problème avec les outils de terminale : dérivation, approximation affine, théorème des valeurs intermédiaires, dichotomie, suites et méthode d'Euler. Il rassemble des connaissances ; à chacun d'y choisir une direction et d'y construire sa question.

Sommaire
  1. Deux corps : ce que l'on sait résoudre
  2. Trois corps : un problème qui résiste
  3. Poincaré et le prix du roi de Suède
  4. Les points de Lagrange
  5. Calculer pas à pas : la méthode d'Euler
  6. Programmer la sensibilité aux conditions initiales
  7. Des directions pour construire sa question
Deux corps : ce que l'on sait résoudre

Pour deux corps seulement, par exemple le Soleil et une planète, Newton a montré en 1687 que la planète décrit une ellipse dont le Soleil occupe un foyer. Il retrouvait ainsi les trois lois que Kepler avait tirées des observations au début du XVIIe siècle. La troisième relie la durée $T$ d'une révolution et le demi-grand axe $a$ de l'orbitede l'orbite : $\dfrac{T^2}{a^3}$ est le mêmenbsp;: le quotient $\dfrac{T^2}{a^3}$ est le même pour toutes les planètes du Soleil.

Le texte sur la mécanique newtonienne la démontre dans le cas d'une orbite circulaire. Un exemple à la main. Pour la Terre, $T = 1$ an et $a = 1$ unité astronomique (UA, environ $150$ millions de km), donc $\dfrac{T^2}{a^3} = 1$. Mars est à $a \approx 1{,}52$ UA :

Le problème à deux corps est donc résolu : connaissant les positions et les vitesses à un instant, une formule donne les positions à tout instant, aussi loin qu'on veut dans le futur.

Trois corps : un problème qui résiste

Ajoutons un troisième corps. Chacun attire les deux autres, et ces attractions changent sans cesse puisque les distances changent. La Lune, par exemple, est attirée par la Terre et par le Soleil : son orbite n'est pas exactement une ellipse, elle se déforme, et prévoir sa position avec précision a été un casse-tête pendant des siècles, ce qui avait des conséquences pratiques : la position de la Lune servait à déterminer la longitude en mer.

Les savants ont trouvé des solutions particulières. En 1767, Euler décrit des configurations où les trois corps restent alignés ; en 1772, Lagrange en trouve d'autres où ils forment en permanence un triangle équilatéral. On les retrouvera avec les points de Lagrange. Ils ont aussi développé des méthodes d'approximation, qui considèrent l'attraction du troisième corps comme une petite perturbation : c'est ainsi qu'Alexis Clairaut a prévu, à la fin des années 1750, le retour de la comète de Halley, avec l'aide des calculs de Nicole-Reine Lepaute (voir le texte Nicole-Reine Lepaute).

Mais la question générale restait ouverte : existe-t-il une formule qui donne les positions des trois corps à tout instant, quelles que soient les conditions de départ ? Et le système solaire est-il stable, ou une planète peut-elle un jour être éjectée ?

Poincaré et le prix du roi de Suède Photographie en noir et blanc d'un homme barbu à lunettes, en costume sombre, de trois quarts. Henri Poincaré (1854-1912). Photo : auteur inconnu, Wikimedia Commons, domaine public.

En 1885, sur une idée du mathématicien suédois Gösta Mittag-Leffler, le roi Oscar II de Suède et de Norvège ouvre un concours pour ses soixante ans. L'une des questions porte sur le problème des $n$ corps et la stabilité du système solaire. Le jury, formé de Mittag-Leffler, de l'Allemand Karl Weierstrass et du Français Charles Hermite, attribue le prix le 21 janvier 1889 au mémoire du Français Henri Poincaré, alors âgé de 34 ans.

Le mémoire est imprimé dans la revue de Mittag-Leffler, Acta Mathematica. Mais un jeune mathématicien chargé de la relecture, Lars Edvard Phragmén, pose des questions sur des passages obscurs. En y répondant, Poincaré découvre une erreur grave. Les exemplaires déjà imprimés sont récupérés et détruits, et Poincaré paie la réimpression, qui lui coûte davantage que le montant du prix. La version corrigée paraît en 1890.

L'erreur se révèle féconde. En la corrigeant, Poincaré comprend que certaines trajectoires des trois corps sont d'une complexité inextricable : deux départs presque identiques peuvent conduire à des évolutions complètement différentes. C'est la première apparition de ce que l'on appellera le chaos. Le texte Suites récurrentes et chaos cite la phrase célèbre de Poincaré sur la « cause très petite » qui produit un « effet considérable » ; on en verra une illustration plus bas.

En 1912, le Finlandais Karl Sundman a montré qu'on peut écrire la solution du problème des trois corps sous la forme d'une somme infinie. Mais cette somme se rapproche si lentement de la solution qu'elle est inutilisable en pratique : aujourd'hui encore, on calcule les trajectoires pas à pas, avec des ordinateurs.

Les points de Lagrange Cinq positions d'équilibre

Simplifions : deux corps massifs, le Soleil et la Terre, et un troisième très léger, un satellite, qui ne les dérange pas. Lagrange a montré qu'il existe cinq positions où le satellite tourne autour du Soleil exactement au même rythme que la Terre : il reste alors immobile par rapport au Soleil et à la Terre. Ce sont les points de Lagrange, notés $L_1$ à $L_5$.

  • $L_1$ et $L_2$ sont sur la droite Soleil-Terre, de part et d'autre de la Terre, à environ $1{,}5$ million de km d'elle ;
  • $L_3$ est de l'autre côté du Soleil, à l'opposé de la Terre ;
  • $L_4$ et $L_5$ forment avec le Soleil et la Terre des triangles équilatéraux.
var opt = {fontSize: 12, useKatex: false, useMathJax: false, parse: false, fixed: true, highlight: false}; board.create('circle', [[0, 0], 1], {strokeColor: '#90a4ae', strokeWidth: 1, dash: 2, fixed: true, highlight: false, hasInnerPoints: false}); var c = Math.sqrt(3) / 2; board.create('polygon', [[0, 0], [1, 0], [0.5, c]], {fillOpacity: 0, borders: {strokeColor: '#c5cae9', strokeWidth: 1, dash: 1}, vertices: {visible: false}, fixed: true, highlight: false}); board.create('polygon', [[0, 0], [1, 0], [0.5, -c]], {fillOpacity: 0, borders: {strokeColor: '#c5cae9', strokeWidth: 1, dash: 1}, vertices: {visible: false}, fixed: true, highlight: false}); board.create('point', [0, 0], {name: '', size: 7, fillColor: '#fbc02d', strokeColor: '#f57f17', fixed: true, highlight: false, showInfobox: false}); board.create('point', [1, 0], {name: '', size: 4, fillColor: '#1565c0', strokeColor: '#0d47a1', fixed: true, highlight: false, showInfobox: false}); var P = [[0.82, 0, 'L1'], [1.18, 0, 'L2'], [-1, 0, 'L3'], [0.5, c, 'L4'], [0.5, -c, 'L5']]; for (var i = 0; i < P.length; i++) { board.create('point', [P[i][0], P[i][1]], {name: '', size: 3, fillColor: '#c62828', strokeColor: '#c62828', fixed: true, highlight: false, showInfobox: false}); } board.create('text', [0.7, 0.13, 'L1'], opt); board.create('text', [1.12, 0.13, 'L2'], opt); board.create('text', [-1.3, 0.13, 'L3'], opt); board.create('text', [0.58, c + 0.06, 'L4'], opt); board.create('text', [0.58, -c - 0.06, 'L5'], opt); board.create('text', [-0.33, -0.15, 'Soleil'], opt); board.create('text', [1.03, -0.13, 'Terre'], opt); board.create('text', [-1.4, -1.32, 'distances de L1 et L2 très exagérées'], Object.assign({}, opt, {fontSize: 11, strokeColor: '#546e7a'})); Les cinq points de Lagrange du couple Soleil-Terre (schéma). En pointillés, l'orbite de la Terre et les deux triangles équilatéraux qui donnent $L_4$ et $L_5$. En réalité, $L_1$ et $L_2$ sont à $1\,\%$ seulement de la distance Soleil-Terre de la Terre.

Autour des points $L_4$ et $L_5$ de Jupiter, on a découvert à partir de 1906 des milliers d'astéroïdes, les « Troyens », qui accompagnent Jupiter sur son orbite. Les points $L_1$ et $L_2$ servent aux missions spatiales : la sonde SOHO observe le Soleil depuis $L_1$, et le télescope spatial James Webb, lancé le 25 décembre 2021, observe l'Univers depuis les environs de $L_2$, où la Terre, la Lune et le Soleil sont toujours du même côté et peuvent être cachés par un seul grand pare-soleil.

Image de synthèse du télescope James Webb : un grand miroir doré fait d'hexagones, posé sur un pare-soleil argenté à plusieurs couches en forme de losange. Le télescope spatial James Webb, avec son miroir de $6{,}5$ m et son pare-soleil (image de synthèse). Image : NASA, Wikimedia Commons, domaine public.
Mettre en équation le point $L_2$

Notons $R$ la distance Soleil-Terre et $x$ la distance de la Terre au point $L_2$, situé au-delà de la Terre. Un corps qui tourne sur un cercle de rayon $r$ à la vitesse angulaire $\omega$ (l'angle parcouru par seconde) doit subir une accélération dirigée vers le centre égale à $\omega^2 r$ : c'est le résultat du mouvement circulaire uniforme vu en physique-chimie. La Terre tourne en un an à la vitesse angulaire $\omega$, et c'est l'attraction du Soleil qui fournit cette accélération :

$$\frac{G M_S}{R^2} = \omega^2 R, \quad \text{donc} \quad \omega^2 = \frac{G M_S}{R^3},$$

où $G$ est la constante de la gravitation et $M_S$ la masse du Soleil. Le satellite en $L_2$ doit tourner au même rythme $\omega$, sur un cercle de rayon $R + x$. Il est attiré vers le Soleil à la fois par le Soleil et par la Terre (qui est entre les deux), d'où l'équation, avec $M_T$ la masse de la Terre :

$$\frac{G M_S}{(R+x)^2} + \frac{G M_T}{x^2} = \omega^2 (R + x).$$

Remplaçons $\omega^2$, divisons par $\dfrac{G M_S}{R^2}$, et posons $u = \dfrac{x}{R}$ et $\mu = \dfrac{M_T}{M_S} \approx 3{,}0 \times 10^{-6}$ (le Soleil est environ $333\,000$ fois plus massif que la Terre). On obtient

$$\frac{1}{(1+u)^2} + \frac{\mu}{u^2} = 1 + u.$$
Une solution unique, trouvée par dichotomie

Posons, pour $u > 0$,

$$f(u) = (1 + u) - \frac{1}{(1+u)^2} - \frac{\mu}{u^2}.$$ L'équation $f(u) = 0$ a une unique solution sur $[0{,}001\,;0{,}1]$

Étape 1 : la dérivée. La dérivée de $\dfrac{1}{(1+u)^2} = (1+u)^{-2}$ est $-2(1+u)^{-3}$, et celle de $\dfrac{\mu}{u^2} = \mu u^{-2}$ est $-2\mu u^{-3}$. Donc

$$f'(u) = 1 + \frac{2}{(1+u)^3} + \frac{2\mu}{u^3}.$$

C'est une somme de nombres strictement positifs : $f$ est strictement croissante sur $]0\,;+\infty[$.

Étape 2 : les valeurs aux bornes. À la calculatrice, $f(0{,}001) \approx -3{,}0 < 0$ et $f(0{,}1) \approx 0{,}27 > 0$.

Étape 3. La fonction $f$ est continue et strictement croissante sur $[0{,}001\,;0{,}1]$, et $0$ est compris entre $f(0{,}001)$ et $f(0{,}1)$ : d'après le théorème des valeurs intermédiaires (cas strictement monotone), l'équation $f(u) = 0$ a une unique solution dans cet intervalle.

La dichotomie. On coupe l'intervalle en deux, on regarde le signe de $f$ au milieu, et on garde la moitié où $f$ change de signe (voir le texte Approximation des solutions d'une équation).

étape$a$$b$milieu $m$signe de $f(m)$
$0$$0{,}001$$0{,}1$$0{,}0505$$+$
$1$$0{,}001$$0{,}0505$$0{,}0258$$+$
$2$$0{,}001$$0{,}0258$$0{,}0134$$+$
$3$$0{,}001$$0{,}0134$$0{,}0072$$-$
$4$$0{,}0072$$0{,}0134$$0{,}0103$$+$
$5$$0{,}0072$$0{,}0103$$0{,}0087$$-$

En poursuivant, on trouve $u \approx 0{,}0100$, c'est-à-dire $x \approx 0{,}01 \times 150$ millions de km $= 1{,}5$ million de km : c'est bien la distance du télescope James Webb à la Terre.

Une approximation qui explique le résultat. Pour $u$ petit, on remplace $\dfrac{1}{(1+u)^2}$ par son approximation affine en $0$ : sa dérivée en $0$ vaut $-2$, donc $\dfrac{1}{(1+u)^2} \approx 1 - 2u$. L'équation devient $1 + u - (1 - 2u) \approx \dfrac{\mu}{u^2}$, soit $3u \approx \dfrac{\mu}{u^2}$ et

$$u^3 \approx \frac{\mu}{3} \approx 10^{-6}, \quad \text{donc} \quad u \approx 0{,}01.$$

Le même calcul pour $L_1$, entre le Soleil et la Terre, donne aussi environ $1{,}5$ million de km. Attention : $L_1$, $L_2$ et $L_3$ sont des équilibres instables, comme une bille posée sur une crête. Le télescope James Webb ne reste pas exactement en $L_2$ : il décrit une large orbite autour de ce point et corrige régulièrement sa trajectoire avec de petits moteurs. Au contraire, $L_4$ et $L_5$ sont stables pour le couple Soleil-Jupiter, ce qui explique que les Troyens s'y accumulent.

Calculer pas à pas : la méthode d'Euler Le principe

Faute de formule, on calcule les positions de proche en proche, avec un petit pas de temps $h$. Si l'on connaît à l'instant $t$ la position $x$, la vitesse $v$ et donc l'accélération $a$ (donnée par la loi de Newton), on calcule :

  • la nouvelle vitesse $v + h \times a$, car l'accélération est la dérivée de la vitesse ;
  • la nouvelle position $x + h \times (\text{nouvelle vitesse})$, car la vitesse est la dérivée de la position.

C'est la méthode d'Euler, ici dans une variante (utiliser la vitesse déjà mise à jour) qui se comporte mieux pour les orbites. On remplace la dérivée par un taux d'accroissement sur un petit intervalle, ce qui revient à suivre la tangente sur une petite durée. On obtient des suites définies par récurrence, comme dans le texte sur les systèmes proies-prédateurs.

Un pas à la main. Prenons des unités où le Soleil, fixe à l'origine, donne à une planète située à la distance $r$ une accélération de norme $\dfrac{1}{r^2}$, dirigée vers le Soleil. La planète part de $(1\,;0)$ avec la vitesse $(0\,;1)$, et $h = 0{,}1$.

  • Accélération au départ : $r = 1$, donc $a = (-1\,;0)$.
  • Nouvelle vitesse : $(0\,;1) + 0{,}1 \times (-1\,;0) = (-0{,}1\,;1)$.
  • Nouvelle position : $(1\,;0) + 0{,}1 \times (-0{,}1\,;1)$, c'est-à-dire $(0{,}99\,;0{,}1)$.
  • Distance au Soleil : $\sqrt{0{,}99^2 + 0{,}1^2} \approx 0{,}995$ : la planète reste presque sur son cercle de rayon $1$, comme il se doit.
Un astéroïde, le Soleil et Jupiter

Appliquons la méthode à un problème des trois corps simplifié : le Soleil est fixe, Jupiter tourne sur un cercle de rayon $1$ (en un tour toutes les $2\pi \approx 6{,}3$ unités de temps), et un petit astéroïde, attiré par les deux, part sur une orbite circulaire de rayon $0{,}9$, tout près de celle de Jupiter. La masse de Jupiter est prise égale à un millième de celle du Soleil.

La figure calcule deux astéroïdes : le bleu part exactement de la distance $0{,}9$ ; le rouge part d'une distance très légèrement différente, réglée par le second curseur (de $10^{-2}$ à $10^{-9}$). Le premier curseur règle la durée du calcul.

var opt = {fontSize: 12, useKatex: false, useMathJax: false, parse: false, fixed: true, highlight: false}; board.create('circle', [[0, 0], 1], {strokeColor: '#bdbdbd', strokeWidth: 1, dash: 2, fixed: true, highlight: false, hasInnerPoints: false}); board.create('point', [0, 0], {name: '', size: 5, fillColor: '#fbc02d', strokeColor: '#f57f17', fixed: true, highlight: false, showInfobox: false}); var sT = board.create('slider', [[-2.1, -2.45], [0.4, -2.45], [10, 60, 150]], {withLabel: false, snapWidth: 5}); var sK = board.create('slider', [[-2.1, -2.75], [0.4, -2.75], [2, 6, 9]], {withLabel: false, snapWidth: 1}); board.create('text', [0.6, -2.45, function () { return 'durée : ' + Math.round(sT.Value()); }], opt); board.create('text', [0.6, -2.75, function () { return 'écart : 10⁻' + '⁰¹²³⁴⁵⁶⁷⁸⁹'.charAt(Math.round(sK.Value())); }], opt); var cle = '', D = null; function calc() { var T = Math.round(sT.Value()), k = Math.round(sK.Value()), key = T + '|' + k; if (key === cle && D) { return D; } cle = key; function run(r0) { var x = r0, y = 0, vx = 0, vy = Math.sqrt(1 / r0), t = 0, h = 0.005, mu = 0.001, X = [x], Y = [y]; var n = Math.round(T / h); for (var s = 1; s <= n; s++) { var jx = Math.cos(t), jy = Math.sin(t), r3 = Math.pow(x * x + y * y, 1.5), dx = jx - x, dy = jy - y, d3 = Math.pow(dx * dx + dy * dy, 1.5); vx += h * (-x / r3 + mu * dx / d3); vy += h * (-y / r3 + mu * dy / d3); x += h * vx; y += h * vy; t += h; if (s % 10 === 0) { X.push(x); Y.push(y); } } return {X: X, Y: Y, x: x, y: y, t: t}; } var a = run(0.9), b = run(0.9 + Math.pow(10, -k)); D = {a: a, b: b, d: Math.sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y))}; return D; } var ca = board.create('curve', [[0], [0]], {strokeColor: '#1565c0', strokeWidth: 1, highlight: false}); ca.updateDataArray = function () { var d = calc(); this.dataX = d.a.X; this.dataY = d.a.Y; }; var cb = board.create('curve', [[0], [0]], {strokeColor: '#c62828', strokeWidth: 1, strokeOpacity: 0.8, highlight: false}); cb.updateDataArray = function () { var d = calc(); this.dataX = d.b.X; this.dataY = d.b.Y; }; board.create('point', [function () { var d = calc(); return Math.cos(d.a.t); }, function () { var d = calc(); return Math.sin(d.a.t); }], {name: '', size: 4, fillColor: '#8d6e63', strokeColor: '#5d4037', fixed: true, highlight: false, showInfobox: false}); board.create('text', [-2.2, 2.85, function () { var d = calc(); var s = d.d < 0.001 ? d.d.toExponential(1).replace('.', ',').replace('e-', ' × 10^-') : d.d.toFixed(3).replace('.', ','); return 'distance entre les deux astéroïdes : ' + s; }], opt); board.create('text', [-2.2, 2.55, 'Soleil au centre, Jupiter : point brun'], Object.assign({}, opt, {fontSize: 11, strokeColor: '#546e7a'})); board.update(); Deux astéroïdes calculés par la méthode d'Euler (pas $h = 0{,}005$). Le bleu part à la distance $0{,}9$ du Soleil, le rouge à une distance qui en diffère de l'écart choisi. En pointillés, l'orbite de Jupiter.

Avec un écart de départ de $10^{-6}$, les deux trajectoires sont indiscernables pendant longtemps, puis, après une centaine d'unités de temps (une quinzaine de tours de Jupiter), elles se séparent complètement, au point que les deux astéroïdes se retrouvent en des endroits sans rapport. Un écart d'un millionième, bien inférieur à toute précision de mesure, finit par tout changer : c'est la sensibilité aux conditions initiales découverte par Poincaré.

Une conséquence troublante : dans une telle situation, le pas de calcul $h$ lui-même change le résultat à long terme, car chaque pas introduit une minuscule erreur qui est amplifiée comme un écart de départ. Les astronomes utilisent des méthodes bien plus précises que la méthode d'Euler, mais ils se heurtent à la même limite : on estime que l'on ne peut pas prédire en détail les positions des planètes au-delà de quelques dizaines de millions d'années.

Programmer la sensibilité aux conditions initiales

Le programme suivant fait le même calcul que la figure : deux astéroïdes partant à des distances $0{,}9$ et $0{,}9 + 10^{-6}$ du Soleil, et affiche la distance qui les sépare toutes les $10$ unités de temps. On peut changer l'écart de départ ou le pas $h$ pour voir l'effet sur le résultat. Le calcul prend quelques secondes.

from math import cos, sin, sqrt def asteroide(r0, duree, h): x, y = r0, 0.0 # position de départ vx, vy = 0.0, sqrt(1 / r0) # vitesse d'une orbite circulaire mu = 0.001 # masse de Jupiter / masse du Soleil t = 0.0 positions = [] n = int(duree / h) for s in range(1, n + 1): jx, jy = cos(t), sin(t) # position de Jupiter r3 = (x * x + y * y) ** 1.5 dx, dy = jx - x, jy - y d3 = (dx * dx + dy * dy) ** 1.5 ax = -x / r3 + mu * dx / d3 # attraction du Soleil et de Jupiter ay = -y / r3 + mu * dy / d3 vx, vy = vx + h * ax, vy + h * ay # méthode d'Euler : la vitesse x, y = x + h * vx, y + h * vy # puis la position t = t + h if s % int(10 / h) == 0: positions.append((x, y)) return positions h = 0.005 A = asteroide(0.9, 150, h) B = asteroide(0.9 + 1e-6, 150, h) for k in range(len(A)): d = sqrt((A[k][0] - B[k][0]) ** 2 + (A[k][1] - B[k][1]) ** 2) print("t =", 10 * (k + 1), " distance :", "%.1e" % d)
Des directions pour construire sa question

Ce texte n'est pas un Grand Oral. Il rassemble des connaissances dans lesquelles chacun peut choisir une direction, la creuser et formuler sa propre question. Quelques directions possibles :

Pour l'échange avec le jury : les notions du cours à maîtriser

Le jury peut interroger sur les chapitres de spécialité mobilisés. Avec ce thème, il est utile de connaître parfaitement : la dérivation (fonctions puissances, composées simples) et le lien entre le signe de la dérivée et les variations ; l'approximation affine et la tangente ; la continuité et le théorème des valeurs intermédiaires ; l'algorithme de dichotomie ; les suites définies par récurrence ; la méthode d'Euler pour approcher la solution d'une équation différentielle.

Pour réviser ces chapitres, l'application Maths FlashBac reprend tout le cours de spécialité en cartes.

Pour aller plus loin