Vidéo terminée
Fin du chapitrePasser le QCM du chapitreLeçon 8
La méthode d'Euler en Python
Le cours écrit
8.1 L'idée
On ne sait pas toujours résoudre une équation différentielle exactement. Le programme cite Euler parmi ceux qui ont structuré ces résolutions, aux côtés de Newton, D'Alembert, Lagrange, Cauchy, Clairaut et Riccati. La méthode d'Euler en donne une solution approchée. Elle repose sur la tangente : près d'un point, la courbe est proche de sa tangente. Pour proche de , On part du point et on avance par petits pas de longueur , chaque fois le long de la droite dont le coefficient directeur est donné par l'équation. On obtient une ligne brisée proche de la courbe de la solution.
8.2 Le cas de
Pour l'équation avec , on calcule de proche en proche :
En langage naturel (« » se lit « prend la valeur »), une étape s'écrit : , puis .
Exemple 40. Pour avec , la solution exacte est . Avec , le premier pas donne , le deuxième . Après pas, on arrive à avec , alors que . Avec et pas, on obtient ; avec et pas, .
En Python. On range les valeurs dans deux listes, construites par ajouts successifs.
from math import exp
def euler(f, x0, y0, h, n):
X = [x0]
Y = [y0]
for k in range(n):
Y.append(Y[k] + h * f(X[k]))
X.append(X[k] + h)
return X, Y
def f(x):
return exp(-x**2)
X, Y = euler(f, 0, 0, 0.1, 10)
print(Y[10])
Ce programme traite la fonction , qui n'a pas de primitive explicite. Il affiche 0.7778168240731773, valeur approchée de pour la solution telle que . Avec un pas de 0.01 et pas, on obtient 0.7499786042621127 ; avec 0.001 et pas, 0.747140131778599. La valeur approchée se stabilise vers .
8.3 Le cas de
La dérivée dépend maintenant de . On remplace par : La suite vérifie : c'est une suite arithmético-géométrique.
def euler2(a, b, x0, y0, h, n):
X = [x0]
Y = [y0]
for k in range(n):
Y.append(Y[k] + h * (a * Y[k] + b))
X.append(X[k] + h)
return X, Y
X, Y = euler2(1, 0, 0, 1, 0.01, 100)
print(Y[100])
Ce programme traite avec , dont la solution est l'exponentielle : il affiche une valeur approchée de . Tu as vu cette construction en Première. Ici .
| Pas | Nombre de pas | Valeur approchée de | Écart avec |
|---|---|---|---|
Ce que l'on observe. Quand on divise le pas par , l'écart est à peu près divisé par . Pour gagner une décimale, il faut dix fois plus de calculs.
Exemple 41 (la tarte). On reprend avec . Avec un pas de minutes, et on obtient :
Euler, Solution exacte L'approximation est grossière. Avec
euler2(-0.1, 2, 0, 180, 0.1, 200), on trouve à , et avec un pas de , : on se rapproche de la valeur exacte .
À quoi ça sert, puisqu'on sait résoudre ? Pour les équations du chapitre, on peut comparer à la solution exacte et voir comment se comporte la méthode. Mais elle s'applique aussi aux équations que l'on ne sait pas résoudre : c'est son intérêt principal.
Exercices 15 et 16
- Exercice 15 : à la main, puis en Python
- Exercice 16 : Euler et les suites
Corrigés
Cherche d'abord les exercices sur ta feuille, puis compare avec le corrigé détaillé.