Méthode d'Euler Richardson appliqué au problème de Kepler

Feuille python inspirée du travail de Damien Decout

Les méthodes classiques utilisées pour approcher les solutions des équations différentielles (Euler, Runge-Kutta ou Verlet) présentent l'inconvénient d'avoir un pas fixe. Or, dans de nombreuses situations, une grandeur physique peut varier rapidement un moment, puis plus lentement ensuite. Il est alors judicieux d'adapter le pas en fonction des besoins, c'est-à-dire de le diminuer lorsque les variations sont rapides et de l'augmenter dans l'autre cas, de façon à économiser du temps de calcul. C'est la philosophie des algorithmes à pas adaptatif dont la méthode décrite ici fait partie.

Pour en savoir plus, voir La Méthode d'Euler Richardson

Chargement des bibliothèques

Problème de gravité

L'équation différentielle du problème de Képler peut se mettre sous la forme : $$\dot{\mathbf{y}} = f(t,\mathbf{y}(t)),\quad 0\leq t \leq T \quad\text{avec}\quad \mathbf{y}(0)=\mathbf{y}_{0}$$ avec: $$\mathbf{y}=\left(\begin{array}{c}x\\y\\v_{x}\\v_{y}\end{array}\right) \quad\text{et}\quad f(\mathbf{y})=\left(\begin{array}{c}v_{x}\\v_{y}\\[1mm]-\dfrac{4\pi^{2}x}{(x^{2}+y^{2})^{3/2}}\\[3mm] -\dfrac{4\pi^{2}y}{(x^{2}+y^{2})^{3/2}} \end{array}\right)$$

Algorithme d'Euler Richardson :

On adopte les conditions initiales : $x=0,5\quad y=0\quad v_x=0\quad v_y=12$

On choisit un pas initial de $h=0,04$ (environ 15 jours) et un seuil de 0,018.

Comparaison avec RK4

Algorithme de Runge-Kutta :

Comparaison