Résolution d'équations non linéaires
Cours · Python (école d'ingénieur), chapitre 11 · école d'ingénieur, informatique · le début du chapitre, la suite sur Adloun
11.1 Introduction et Ordre de Convergence
Dans ce chapitre, nous nous intéressons à l'approximation des zéros d'une fonction réelle d'une variable réelle. Étant donné un intervalle et une application continue , on cherche à calculer une valeur approchée de telle que .
Toutes les méthodes de résolution présentées sont des méthodes itératives. Elles consistent à construire une suite de valeurs qui converge vers la racine . La vitesse de convergence de la suite détermine la qualité et la performance pratique de l'algorithme.
Soit une suite convergeant vers . On note l'erreur absolue à l'étape . On dit que la convergence est d'ordre s'il existe une constante (appelée facteur asymptotique) telle que :
- et : convergence linéaire.
- et : convergence superlinéaire (plus rapide que linéaire).
- : convergence quadratique.
Lien avec la précision décimale
Si désigne le nombre de décimales exactes à l'étape , alors pour assez grand :
- Convergence linéaire () : . Le nombre de décimales augmente de façon additive. Pour la dichotomie (), on gagne décimale par itération (soit 1 décimale toutes les 3 itérations).
- Convergence quadratique () : . Le nombre de décimales exactes est doublé à chaque étape (la précision passe par exemple de 4 à 8 puis 16 décimales).
Critères d'Arrêt
En pratique, on doit arrêter le processus itératif lorsque l'approximation est jugée satisfaisante. On utilise principalement trois critères :
- Nombre maximal d'itérations : évite les boucles infinies en cas de divergence.
- Tolérance sur l'incrément : .
- Tolérance sur le résidu : .
11.2 Méthode de la Fausse Position (Regula Falsi)
La méthode de la fausse position est une alternative à la dichotomie. Plutôt que de diviser l'intervalle systématiquement par son milieu, on calcule l'intersection de la droite sécante reliant et avec l'axe des abscisses.
L'abscisse de cette intersection s'écrit :
L'algorithme de recherche itère alors les bornes en posant , et :
Contrairement à la dichotomie, la largeur de l'intervalle ne tend pas nécessairement vers 0. C'est le cas par exemple si la fonction est strictement convexe : l'une des bornes reste fixe (stationnaire) tandis que l'autre converge vers la racine .
Si est de classe , strictement convexe et , alors la suite construite par la méthode de la fausse position converge linéairement (ordre 1) vers l'unique racine .
def regula_falsi(f, a, b, epsilon=1e-12, maxiter=100):
"""
Methode de la fausse position.
"""
if f(a) * f(b) > 0:
raise ValueError("f(a) et f(b) doivent être de signes opposés")
u, v = a, b
for n in range(maxiter):
# Calcul du point d'intersection
x = (u * f(v) - v * f(u)) / (f(v) - f(u))
if abs(f(x)) < epsilon or abs(v - u) < epsilon:
return x
if f(u) * f(x) <= 0:
v = x
else:
u = x
raise RuntimeError(f"Non convergence après {maxiter} itérations")
11.3 Méthode de Newton-Raphson
La méthode de Newton-Raphson s'affranchit de la contrainte d'encadrement en procédant par approximations successives basées sur la tangente locale à la courbe.
11.3.1 Principe de l'Algorithme
À l'étape , on modélise la fonction par son approximation affine tangente :
L'intersection avec l'axe donne la valeur suivante :
La suite de Newton-Raphson est définie par la relation de récurrence :
11.3.2 Théorème de Convergence Quadratique
Soit une fonction de classe sur un voisinage de telle que et . Alors il existe un voisinage de tel que pour tout choix initial , la suite converge de manière quadratique (ordre 2) vers .
Démonstration
Soit la fonction itératrice. Sa dérivée s'écrit :
Comme , on a .
Par le développement de Taylor de en :
d'où :
En réarrangeant :
Soit .
En prenant suffisamment proche de , est minoré par une constante et . Ainsi :
Posons . Si est choisi tel que , alors par récurrence :
La convergence est quadratique ().
11.3.3 Application : Méthode de Héron (Racine Carrée)
Calculer la racine carrée d'un nombre réel revient à chercher la racine positive de . La suite de Newton associée s'écrit :
def heron(alpha, x0=None, tol=1e-12, maxiter=100):
"""
Calcule sqrt(alpha) par la methode de Heron (Newton pour x**2 - alpha = 0).
"""
if x0 is None:
x0 = alpha if alpha >= 1 else 1.0
x = x0
for n in range(maxiter):
x_new = 0.5 * (x + alpha / x)
if abs(x_new - x) < tol:
return x_new
x = x_new
raise RuntimeError(f"Non convergence après {maxiter} itérations")
# Exemple
print(heron(2)) # 1.414213562373095
print(heron(10)) # 3.1622776601683795
11.3.4 Dangers et Limites de Newton
- Convergence uniquement locale : Si est trop éloigné, une divergence est possible.
- Dérivée nulle : Si (racine de multiplicité ), la convergence de Newton devient simplement linéaire. On peut restaurer l'ordre quadratique en modifiant la formule :
- Cycle : Pour certaines fonctions, la méthode de Newton peut osciller indéfiniment sans converger.
Pour avec , la suite oscille entre 0 et 1 indéfiniment :
11.4 Dérivée Numérique et Choix du Pas
Pour appliquer Newton-Raphson sans connaître analytiquement la dérivée , on l'approxime par un taux de variation avec un pas petit.
11.4.1 Différences Finies
- Différence en avant : (erreur )
- Différence en arrière : (erreur )
- Différence centrée : (erreur )
11.4.2 Le Choix Optimal du Pas
Intuitivement, on pourrait penser qu'il faut choisir le pas le plus petit possible. En informatique binaire, c'est faux en raison du compromis entre :
- L'erreur de troncature (mathématique) : due aux termes négligés dans le développement de Taylor.
- L'erreur d'arrondi (machine) : due à la soustraction de deux valeurs proches (cancellation), de l'ordre de où .
Pour la différence en avant, l'erreur totale est . L'étude des variations montre que cette erreur est minimale pour :
Pour la différence centrée, l'erreur totale est , avec un optimum :
def derivee_centree(f, x, h=1e-5):
"""Approximation de la dérivée par différence centrée."""
return (f(x + h) - f(x - h)) / (2 * h)
11.5 Méthode de la Sécante
La méthode de la sécante évite d'avoir à évaluer la dérivée en la remplaçant par la pente de la corde reliant les deux points précédents et .
La suite est définie par la formule de récurrence :
Cette méthode requiert deux points initiaux et .
Si est suffisamment régulière et sont choisis dans un voisinage de la racine avec , alors la méthode de la sécante converge localement avec un ordre :
C'est le nombre d'or, qui vérifie .
Démonstration (Esquisse)
L'erreur vérifie asymptotiquement . La valeur est la racine positive de .
La suite du cours est sur Adloun
Le chapitre en entier, formules et figures comprises, avec le tuteur, les fiches, les QCM et les exercices.
Lire la suite du coursEn accès libre, sans inscription.