Retour au blog

Méthodes Numériques pour EDO : Euler et Runge-Kutta

Huit exercices corrigés pour calculer à la main avec Euler explicite et implicite, Heun et RK4, puis comprendre l'ordre et la stabilité d'une méthode.

Cet article a été rédigé à des fins pédagogiques. Les informations présentées peuvent évoluer. Nous t’invitons à vérifier auprès de sources officielles.

Niveau : du facile au difficile. Durée estimée : 70 min, calculatrice en main. 8 exercices avec corrections détaillées.

Rappel des notions clés

Pour approcher la solution de $y' = f(t, y)$ avec $y(t_0) = y_0$, on avance par pas de longueur $h$ : $t_n = t_0 + nh$, et $y_n$ est la valeur approchée de $y(t_n)$. La méthode d'Euler explicite suit la tangente sur chaque pas : $y_{n+1} = y_n + h\,f(t_n, y_n)$. Par exemple, pour $y' = t - y$, $y(0) = 1$ et $h = 0{,}1$, on obtient $y_1 = 1 + 0{,}1 \times (0 - 1) = 0{,}9$, pour une valeur exacte $y(0{,}1) \approx 0{,}910$.

Les autres méthodes changent la pente utilisée. Euler implicite prend la pente en fin de pas : il faut alors résoudre une équation d'inconnue $y_{n+1}$. Heun et RK4 (Runge-Kutta d'ordre 4) calculent plusieurs pentes $k_i$ dans le pas et avancent avec leur moyenne pondérée, sans rien résoudre. Une méthode est d'ordre $p$ quand l'erreur au temps final se comporte comme $h^p$ : diviser $h$ par 2 divise l'erreur par environ $2^p$.

Formules à retenir :

  • Euler explicite, ordre 1 : $y_{n+1} = y_n + h\,f(t_n, y_n)$.
  • Euler implicite, ordre 1 : $y_{n+1} = y_n + h\,f(t_{n+1}, y_{n+1})$.
  • Heun, ordre 2 : $k_1 = f(t_n, y_n)$, $k_2 = f(t_n + h, y_n + h k_1)$, puis $y_{n+1} = y_n + \frac{h}{2}(k_1 + k_2)$.
  • RK4, ordre 4 : $k_1 = f(t_n, y_n)$, $k_2 = f\big(t_n + \frac{h}{2}, y_n + \frac{h}{2} k_1\big)$, $k_3 = f\big(t_n + \frac{h}{2}, y_n + \frac{h}{2} k_2\big)$, $k_4 = f(t_n + h, y_n + h k_3)$, puis $y_{n+1} = y_n + \frac{h}{6}(k_1 + 2k_2 + 2k_3 + k_4)$.
  • Sur $y' = \lambda y$ : Euler explicite donne $y_n = (1 + h\lambda)^n y_0$ et Euler implicite $y_n = \dfrac{y_0}{(1 - h\lambda)^n}$.

Remarque : le nom « méthode de Heun » ne désigne pas partout le même calcul. Le cours de l'ENS de Lyon cité en sources le donne à une méthode à trois pentes, d'ordre 3. Fie-toi à la formule de ton énoncé.

Piège classique : croire que le pas ne règle que la précision. Pour $\lambda < 0$, la solution de $y' = \lambda y$ tend vers 0, mais Euler explicite multiplie $y_n$ par $1 + h\lambda$ à chaque pas. Dès que $h > \dfrac{2}{|\lambda|}$, ce facteur dépasse 1 en valeur absolue : la suite oscille et explose. Euler implicite divise par $1 - h\lambda > 1$ : sa suite décroît quel que soit $h$.

Exercices : niveau facile

Exercice 1 : On considère $y' = y$ avec $y(0) = 1$. Avec la méthode d'Euler explicite et le pas $h = 0{,}1$, calcule une valeur approchée de $y(0{,}2)$, puis l'erreur commise par rapport à la solution exacte.

Correction :

Ici $f(t, y) = y$, donc chaque pas multiplie par $1 + h$ : $y_{n+1} = 1{,}1\,y_n$. Il faut deux pas pour aller de 0 à $0{,}2$.

$$y_1 = 1{,}1 \qquad y_2 = 1{,}1^2 = 1{,}21$$

La solution exacte est $y(t) = e^t$, et $e^{0{,}2} \approx 1{,}2214$. On obtient $y(0{,}2) \approx 1{,}21$, avec une erreur d'environ $0{,}0114$. Euler explicite sous-estime ici, car la solution est convexe et la tangente passe sous sa courbe.

Exercice 2 : Même problème, $y' = y$ et $y(0) = 1$, mais avec la méthode d'Euler implicite et $h = 0{,}1$. Exprime $y_{n+1}$ en fonction de $y_n$, calcule la valeur approchée de $y(0{,}2)$ et compare l'erreur à celle de l'exercice 1.

Correction :

On écrit la formule, puis on isole $y_{n+1}$ :

$$y_{n+1} = y_n + h\,y_{n+1} \iff y_{n+1} = \frac{y_n}{1 - h}$$

Avec $h = 0{,}1$, $y_1 = \dfrac{1}{0{,}9}$ et $y_2 = \dfrac{1}{0{,}81} = \dfrac{100}{81}$, soit $y(0{,}2) \approx 1{,}2346$, avec une erreur d'environ $0{,}0132$. L'erreur a la même taille qu'avec Euler explicite, car les deux méthodes sont d'ordre 1, mais l'implicite surestime.

Exercice 3 : Un condensateur, chargé à $u(0) = 5\ \text{V}$, se décharge dans une résistance. On prend $R = 10\ \text{k}\Omega$ et $C = 10\ \mu\text{F}$ (valeurs d'exercice). La tension vérifie $u' = -\dfrac{u}{RC}$. Calcule $\tau = RC$, puis une valeur approchée de $u(0{,}1\ \text{s})$ en un seul pas $h = 0{,}1\ \text{s}$, avec Euler explicite puis avec Euler implicite. Compare à la valeur exacte.

Correction :

$\tau = 10^4 \times 10^{-5} = 0{,}1\ \text{s}$, donc $u' = -10\,u$ et $\dfrac{h}{\tau} = 1$.

Euler explicite : $u_1 = u_0\left(1 - \dfrac{h}{\tau}\right) = 0\ \text{V}$. Euler implicite : $u_1 = \dfrac{u_0}{1 + h/\tau} = 2{,}5\ \text{V}$. Valeur exacte : $5\,e^{-1} \approx 1{,}84\ \text{V}$.

Résultat : $0\ \text{V}$ avec l'explicite et $2{,}5\ \text{V}$ avec l'implicite, pour $1{,}84\ \text{V}$ exacts. Avec un pas égal à $\tau$, les deux méthodes sont grossières : l'explicite décharge le condensateur d'un coup, l'implicite reste trop haut. Pour un résultat fiable, prends $h$ nettement plus petit que $\tau$.

Exercices : niveau moyen

Exercice 4 : Reprends $y' = y$, $y(0) = 1$ et $h = 0{,}1$ avec la méthode de Heun. Calcule $k_1$, $k_2$ et $y_1$, puis $y_2$, valeur approchée de $y(0{,}2)$. Combien de fois l'erreur est-elle plus petite qu'avec Euler explicite ?

Correction :

Premier pas : $k_1 = y_0 = 1$, puis $k_2 = y_0 + h k_1 = 1{,}1$, d'où $y_1 = 1 + 0{,}05 \times 2{,}1 = 1{,}105$.

Comme $f(t, y) = y$, chaque pas multiplie par $1 + h + \frac{h^2}{2} = 1{,}105$, donc $y_2 = 1{,}105^2 = 1{,}221025$.

Avec $e^{0{,}2} \approx 1{,}221403$ : $y(0{,}2) \approx 1{,}221025$, avec une erreur d'environ $3{,}8 \times 10^{-4}$, environ 30 fois plus petite qu'avec Euler explicite, pour deux évaluations de $f$ par pas au lieu d'une.

Exercice 5 : Toujours pour $y' = y$, $y(0) = 1$, fais un seul pas de RK4 avec $h = 0{,}2$. Donne $k_1$, $k_2$, $k_3$, $k_4$ et la valeur approchée de $y(0{,}2)$. Compare à Heun (exercice 4), qui a demandé le même nombre d'évaluations de $f$.

Correction :

On évalue les quatre pentes, avec $\frac{h}{2} = 0{,}1$ : $k_1 = 1$, $k_2 = 1 + 0{,}1 \times 1 = 1{,}1$, $k_3 = 1 + 0{,}1 \times 1{,}1 = 1{,}11$ et $k_4 = 1 + 0{,}2 \times 1{,}11 = 1{,}222$.

$$y_1 = 1 + \frac{0{,}2}{6}\,(1 + 2{,}2 + 2{,}22 + 1{,}222) = 1{,}2214$$

Avec $e^{0{,}2} \approx 1{,}2214028$ : $y(0{,}2) \approx 1{,}2214$, avec une erreur d'environ $2{,}8 \times 10^{-6}$, plus de 100 fois plus petite qu'avec Heun pour le même travail : quatre évaluations de $f$ dans les deux cas.

Exercice 6 : On considère l'équation non linéaire $y' = y^2$ avec $y(0) = 1$, dont la solution exacte est $y(t) = \dfrac{1}{1 - t}$ pour $t < 1$. Calcule une valeur approchée de $y(0{,}1)$ par un pas de Heun avec $h = 0{,}1$, puis par un pas d'Euler explicite, et compare les deux erreurs.

Correction :

Heun reste explicite : on évalue $f$ au point prédit, sans équation à résoudre. On trouve $k_1 = 1^2 = 1$, puis $k_2 = (1 + 0{,}1 \times 1)^2 = 1{,}21$, d'où $y_1 = 1 + 0{,}05 \times 2{,}21 = 1{,}1105$.

Euler explicite donne $1 + 0{,}1 \times 1 = 1{,}1$. Valeur exacte : $\dfrac{1}{0{,}9} = \dfrac{10}{9} \approx 1{,}1111$.

Résultat : Heun donne $1{,}1105$ (erreur d'environ $6 \times 10^{-4}$) et Euler $1{,}1$ (erreur d'environ $1{,}1 \times 10^{-2}$). L'erreur à éviter : calculer $y_n^2 + h k_1$ au lieu de $(y_n + h k_1)^2$ pour $k_2$.

Exercices : niveau difficile

Exercice 7 : On considère $y' = -20\,y$ avec $y(0) = 1$.

a) Montre que la méthode d'Euler explicite de pas $h$ donne $y_n = (1 - 20h)^n$.

b) Avec $h = 0{,}15$, calcule $y_1$, $y_2$, $y_3$ et compare à la valeur exacte $y(0{,}45)$.

c) Pour quels pas $h > 0$ la suite $(y_n)$ tend-elle vers 0 comme la solution exacte ? Pour lesquels ne change-t-elle pas de signe ?

Correction :

a) Chaque pas donne $y_{n+1} = y_n + h \times (-20\,y_n) = (1 - 20h)\,y_n$ : la suite est géométrique de raison $1 - 20h$, avec $y_0 = 1$.

b) Avec $h = 0{,}15$, la raison vaut $1 - 3 = -2$ : $y_1 = -2$, $y_2 = 4$, $y_3 = -8$. La valeur exacte est $y(0{,}45) = e^{-9} \approx 1{,}2 \times 10^{-4}$. La suite oscille et explose alors que la solution s'éteint.

c) $y_n \to 0$ si et seulement si $|1 - 20h| < 1$, soit $0 < h < 0{,}1$. La suite ne change pas de signe si de plus $1 - 20h \geq 0$, soit $h \leq 0{,}05$.

Résultat : la suite tend vers 0 pour $h < 0{,}1$, et sans osciller pour $h \leq 0{,}05$. Au-delà de $\dfrac{2}{|\lambda|} = 0{,}1$ (ici $\lambda = -20$), Euler explicite donne une suite qui n'a plus rien à voir avec la solution, quelle que soit la précision des calculs.

Exercice 8 : On considère $y' = -100\,y + 100\,e^{-t}$ avec $y(0) = 1$, sur $[0\,;\,0{,}2]$.

a) Vérifie que $y(t) = \dfrac{100\,e^{-t} - e^{-100t}}{99}$ est la solution.

b) Avec $h = 0{,}05$, calcule $y_1$ à $y_4$ par Euler explicite, puis par Euler implicite, et compare aux valeurs exactes.

c) Quel pas la stabilité impose-t-elle à Euler explicite ? Conclus sur le choix de la méthode.

Correction :

a) $y(0) = \dfrac{100 - 1}{99} = 1$. En dérivant, $y'(t) = \dfrac{-100\,e^{-t} + 100\,e^{-100t}}{99}$, et le calcul de $-100\,y + 100\,e^{-t}$ donne la même expression.

b) Euler explicite s'écrit $y_{n+1} = -4\,y_n + 5\,e^{-t_n}$ : $y_1 = 1$, $y_2 \approx 0{,}756$, $y_3 \approx 1{,}500$, $y_4 \approx -1{,}695$. Euler implicite s'écrit $6\,y_{n+1} = y_n + 5\,e^{-t_{n+1}}$ : $y_1 \approx 0{,}959$, $y_2 \approx 0{,}914$, $y_3 \approx 0{,}870$, $y_4 \approx 0{,}827$. Valeurs exactes : $0{,}961$, $0{,}914$, $0{,}869$ et $0{,}827$.

c) Le coefficient de $y$ dans $f$ vaut $-100$ : à chaque pas d'Euler explicite, tout écart est multiplié par $1 - 100h$. Il faut $|1 - 100h| < 1$, soit $h < 0{,}02$. Avec $h = 0{,}05$, le facteur vaut $-4$, d'où l'explosion. Pourtant, dès $t \approx 0{,}05$, le terme en $e^{-100t}$ est négligeable et la solution varie lentement, comme $\frac{100}{99}\,e^{-t}$. On dit que l'équation est raide : c'est la stabilité, et non la précision, qui impose le pas d'une méthode explicite. Euler implicite divise l'écart par $1 + 100h = 6$ à chaque pas et n'a pas cette contrainte.

Résultat : Euler explicite exige $h < 0{,}02$ ; avec $h = 0{,}05$, il donne $y_4 \approx -1{,}695$, quand Euler implicite donne $0{,}827$, la valeur exacte de $y(0{,}2)$ à $10^{-3}$ près. Pour une équation raide, choisis une méthode implicite.

Bilan et conseils

Avant tout calcul, écris $f(t, y)$ et note en quel point chaque pente est évaluée. Pour tester un programme, lance-le sur $y' = y$ avec le pas $h$ puis $h/2$ : l'erreur finale doit être divisée par environ 2 avec Euler, 4 avec Heun et 16 avec RK4. Tu retrouves ainsi l'ordre de la méthode.

Ce qu'il faut retenir : à nombre d'évaluations de $f$ égal, une méthode d'ordre élevé gagne largement (exercices 4 et 5). Pour Euler explicite, le pas doit d'abord vérifier $|1 + h\lambda| < 1$, où $\lambda$ est le coefficient de $y$ dans $f$ (exercices 7 et 8). Quand cette condition impose un pas minuscule, passe à une méthode implicite.

Sources

Tu peux partager cette page librement, en citant ORBITECH AI Academy avec son lien.