Méthodes de Runge-Kutta

Un article de Wikipédia, l'encyclopédie libre.
Aller à : navigation, rechercher

Les méthodes de Runge-Kutta sont des méthodes d'analyse numérique d'approximation de solutions d'équations différentielles. Elles ont été nommées ainsi en l'honneur des mathématiciens Carl Runge et Martin Wilhelm Kutta lesquels élaborèrent la méthode en 1901.

Ces méthodes reposent sur le principe de l'itération, c'est-à-dire qu'une première estimation de la solution est utilisée pour calculer une seconde estimation, plus précise, et ainsi de suite.

Principe général[modifier | modifier le code]

Considérons le problème suivant :

 y' = f(t, y), \quad y(t_0) = y_0

que l'on va chercher à résoudre en un ensemble discret t_0 < t_1 < \ldots < t_N. Plutôt que de chercher une méthode directe, les méthodes de Runge-Kutta proposent d'introduire les points intermédiaires \{ (t_{n,i}, y_{n,i})\}_{1 \leqslant i \leqslant q} afin de calculer par récurrence les valeurs (t_n, y_n) avec

t_{n,i} = t_n + c_i h_n, \, c_i \in [0;1].

Pour chaque point intermédiaire, on note la pente correspondante

p_{n,i} = f(t_{n,i}, y_{n,i}).

Ainsi, pour une solution exacte y du problème, on a

y(t_{n,i}) = y(t_n) + \int_{t_n}^{t_{n,i}} f(t, y(t)) \mathrm{d}t = y(t_n) + h_n \int_0^{c_i} f(t_n + uh_n, y(t_n + uh_n)) \mathrm{d}u, \, \forall i = 1 , \ldots , q,
y(t_{n+1}) = y(t_n) + \int_{t_n}^{t_{n+1}} f(t, y(t)) \mathrm{d}t = y(t_n) + h_n \int_0^1 f(t_n + uh_n, y(t_n + uh_n)) \mathrm{d}u.

On calculera ces intégrales par une méthode de quadrature, qu'on peut choisir différentes pour deux valeurs distinctes de i :

\int_0^{c_i} g(u) \mathrm{d}u \approx \sum_{k = 1}^i a_{ik} g(c_k), \, \int_0^1 g(u) \mathrm{d}u \approx \sum_{k = 1}^q b_k g(c_k),

calculées ici pour g(t) = f(t,y(t)).

La méthode de Runge-Kutta d'ordre q sera donc donnée par :

\forall i = 1 , \ldots , q, \begin{cases}t_{n,i} &= t_n + c_i h_n, \\ y_{n,i} &= y_n + h_n \sum_{k = 1}^i a_{ik} p_{n,k}\\ p_{n,i} &= f(t_{n,i}, y_{n,i}) \end{cases}
y_{n+1} = y_n + h_n \sum_{k = 1}^q b_k p_{n,k}.

On résume la méthode souvent par le tableau des différents poids de quadrature, appelé tableau de Butcher :

 c_1
 c_2  a_{21}
 c_3  a_{31}  a_{32}
 \vdots  \vdots  \ddots
 c_q  a_{q1}  a_{q2}  \cdots  a_{q,s-1}
 b_1  b_2  \cdots  b_{q-1}  b_q

La méthode est consistante si

\sum_{k = 1}^{i-1} a_{ik} = c_i, \forall i = 2, \ldots , q.

Exemples[modifier | modifier le code]

La méthode de Runge-Kutta d'ordre 1 (RK1)[modifier | modifier le code]

Cette méthode est équivalente à la méthode d'Euler, une méthode simple de résolution d'équations différentielles du 1er degré.

Considérons le problème suivant :

 y' = f(t, y), \quad y(t_0) = y_0

La méthode RK1 utilise l'équation

 y_{n+1} = y_n + h f \left( t, y_n \right)

h est le pas de l'itération. Le problème s'écrit donc :

 0  0
 1

La méthode de Runge-Kutta d'ordre 2 (RK2)[modifier | modifier le code]

La méthode RK2 du point milieu est une composition de la méthode d'Euler :

 y_{n+1} = y_n + h f \left( t + \frac{h}{2}, y_n + \frac{h}{2} f \left( t, y_n \right) \right)

h est le pas de l'itération.

Elle consiste à estimer la dérivée au milieu du pas d'intégration :

 y_{n+\frac{1}{2}} = y_n + \frac{h}{2} f \left( t, y_n \right)
 y'_{n+\frac{1}{2}} = f \left( t + \frac{h}{2}, y_{n+\frac{1}{2}} \right)

et à refaire le pas d'intégration complet à partir de cette estimation :

 y_{n+1} = y_n + h y'_{n+\frac{1}{2}}.

Ce schéma est couramment appelé schéma prédicteur-correcteur explicite.

C'est le cas particulier pour \alpha=\frac12 de la méthode plus générale :

 0  0  0
 \alpha  \alpha  0
 1- \tfrac{1}{2\alpha}  \tfrac{1}{2\alpha}

On reconnait ainsi que la méthode de quadrature utilisée pour les temps intermédiaires est celle du point milieu.

C'est une méthode d'ordre 2 car l'erreur est de l'ordre de h^3.

La méthode de Runge-Kutta classique d'ordre quatre (RK4)[modifier | modifier le code]

C'est un cas particulier d'usage très fréquent, noté RK4.

Considérons le problème suivant :

 y' = f(t, y), \quad y(t_0) = y_0

La méthode RK4 est donnée par l'équation :

 y_{n+1} = y_n + \frac {h}{6}\left (k_1 + 2k_2 + 2k_3 + k_4\right)

 k_1 = f \left( t_n, y_n \right)
 k_2 = f \left( t_n + {h \over 2}, y_n + {h\over 2} k_1 \right)
 k_3 = f \left( t_n + {h \over 2}, y_n + {h\over 2} k_2 \right)
 k_4 = f \left( t_n + h, y_n + h k_3\right)

L'idée est que la valeur suivante (yn+1) est approchée par la somme de la valeur actuelle (yn) et du produit de la taille de l'intervalle (h) par la pente estimée. La pente est obtenue par une moyenne pondérée de pentes :

  • k1 est la pente au début de l'intervalle ;
  • k2 est la pente au milieu de l'intervalle, en utilisant la pente k1 pour calculer la valeur de y au point tn + h/2 par le biais de la méthode d'Euler ;
  • k3 est de nouveau la pente au milieu de l'intervalle, mais obtenue cette fois en utilisant la pente k2 pour calculer y;
  • k4 est la pente à la fin de l'intervalle, avec la valeur de y calculée en utilisant k3.

Dans la moyenne des quatre pentes, un poids plus grand est donné aux pentes au point milieu.

 0  0  0  0  0
 \tfrac12  \tfrac12   0  0  0
 \tfrac12  0  \tfrac12   0  0
 1  0  0  1  0
 \tfrac{1}{6}  \tfrac{1}{3}  \tfrac{1}{3}  \tfrac{1}{6}

La méthode RK4 est une méthode d'ordre 4, ce qui signifie que l'erreur commise à chaque étape est de l'ordre de h5, alors que l'erreur totale accumulée est de l'ordre de h4.

Ces formules sont aussi valables pour des fonctions à valeurs vectorielles.

La méthode de Runge-Kutta d'ordre quatre avec dérivée seconde[modifier | modifier le code]

Dans le cas  y'' = f(y), \quad y(t_0) = y_0 , \quad y'(t_0) = y'_0

 k_1 = f \left( y_n \right)
 k_2 = f \left( y_n + {h\over 2} y'_n \right)
 k_3 = f \left( y_n + {h\over 2} y'_n + {h^2\over 4} k_1 \right)
 k_4 = f \left( y_n + h y'_n + {h^2\over 2} k_2 \right)

On en déduit y_{n+1} et y'_{n+1}

 y_{n+1} = y_n + h y'_n + {h^2 \over 6} \left(k_1 + k_2 + k_3\right)
 y'_{n+1} = y'_n + {h \over 6} \left(k_1 + 2 k_2 + 2 k_3 + k_4 \right)

Stabilité des méthodes[modifier | modifier le code]

En tant que méthodes à un pas et explicites, il convient de s'interroger sur leur stabilité. On peut montrer le résultat suivant[1] :

Supposons que f est k-lipschitzienne en y. Soit \alpha= \max_{i = 1, \ldots, q} \sum_{k=1}^i |a_{ik}|. Les méthodes de Runge-Kutta sont stables sur [0,T], avec pour constante de stabilité e^{\Lambda T}, avec

\Lambda = k \sum_{i=1}^q |b_i|\left( 1 + \alpha k h_\max + \ldots + (\alpha k h_\max)^{i-1}\right).

Références[modifier | modifier le code]

  1. Jean-Pierre Demailly, Analyse numérique et équations différentielles, EDP Sciences, coll. « Grenoble Sciences »,‎ 2006 (ISBN 2-86889-891-X[à vérifier : isbn invalide])

Article connexe[modifier | modifier le code]