Erreurs numériques et stabilité
Vidéo disponible dans la version Premium
Durée : 50 min
Erreurs numériques et stabilité
1. Représentation des nombres en machine
Un ordinateur ne représente les nombres réels qu'avec une précision finie (en général en virgule flottante, sur bits pour le type "double" usuel, soit environ - chiffres décimaux significatifs). Tout calcul introduit potentiellement une petite erreur d'arrondi, de l'ordre de pour le double.
Erreur absolue et erreur relative : si est une valeur approchée de , on définit :
L'erreur relative est souvent plus pertinente : une erreur absolue de est négligeable si , mais catastrophique si .
2. Propagation des erreurs dans les opérations élémentaires
Addition/soustraction : si et , alors : les erreurs absolues s'additionnent (au pire, en valeur absolue).
Phénomène de cancellation catastrophique : lorsqu'on soustrait deux nombres très proches, l'erreur relative du résultat peut devenir énorme, même si les erreurs absolues initiales sont minimes. Exemple : si et (connus chacun avec une erreur absolue ), alors , mais l'erreur absolue sur ce résultat (qui reste ) représente maintenant une erreur relative de sur le résultat — alors qu'elle n'était que de sur et séparément.
Exemple classique de reformulation pour éviter la cancellation : pour résoudre avec grand et petit, la formule usuelle souffre de cancellation pour la racine proche de (différence de deux quantités proches). On préfère alors calculer d'abord la racine "facile" (somme, pas de cancellation), puis utiliser la relation produit des racines pour obtenir sans soustraction dangereuse.
3. Conditionnement d'un problème
Le conditionnement mesure la sensibilité de la solution d'un problème à de petites perturbations des données d'entrée. Pour une fonction et une perturbation relative de l'entrée , le conditionnement (relatif) est approximativement :
Un problème est dit bien conditionné si est petit (les petites erreurs sur les données restent petites sur le résultat), et mal conditionné si est grand (de minuscules erreurs d'entrée peuvent être amplifiées énormément).
Exemple : pour , : c'est un problème bien conditionné, peu sensible. En revanche, pour près de , le conditionnement explose ( varie extrêmement vite), traduisant une grande sensibilité.
Important : le conditionnement est une propriété du problème mathématique lui-même, indépendante de l'algorithme utilisé pour le résoudre. Un problème mal conditionné restera difficile à résoudre précisément quel que soit l'algorithme.
4. Stabilité d'un algorithme
La stabilité d'un algorithme, à l'inverse, décrit comment celui-ci propage (ou amplifie) les erreurs d'arrondi au cours de ses propres calculs intermédiaires, même pour résoudre un problème bien conditionné. Un algorithme instable peut donner des résultats très imprécis (ou complètement faux), même appliqué à un problème bien conditionné, à cause d'une accumulation ou amplification d'erreurs à chaque étape.
Exemple classique (calcul d'une suite récurrente) : la suite définie par et (provenant du calcul de ) vérifie mathématiquement , mais le calcul numérique de cette récurrence, démarré avec légèrement arrondi, voit son erreur initiale multipliée par à chaque étape : après quelques itérations seulement, les valeurs calculées deviennent absurdes (négatives ou explosant en valeur absolue), bien que la suite exacte reste positive et tende vers . C'est un algorithme numériquement instable, car le facteur d'amplification (, en valeur absolue ) fait croître l'erreur exponentiellement.
5. Stabilité : critère qualitatif
De façon générale, un algorithme itératif de la forme sur l'erreur est :
- Stable si (l'erreur ne croît pas, ou décroît) ;
- Instable si (l'erreur est amplifiée à chaque étape, donc explose exponentiellement après suffisamment d'itérations).
Remède pratique courant : lorsqu'une récurrence "vers l'avant" est instable, on peut souvent la rendre stable en la parcourant "à l'envers" (de grand vers petit), si le problème s'y prête, car le facteur d'amplification est alors inversé (, qui devient si ).
6. Exemple résolu de synthèse
Énoncé : on veut calculer pour grand (par exemple ). Pourquoi le calcul direct est-il numériquement mauvais, et quelle reformulation éviter ce problème ?
Résolution : pour grand, et sont deux nombres très proches : leur soustraction directe souffre de cancellation catastrophique (perte de précision relative). On reformule en multipliant par la quantité conjuguée :
Cette nouvelle expression ne comporte qu'une somme au dénominateur (pas de soustraction de quantités proches), donc elle est numériquement stable et se calcule sans perte de précision, même pour très grand.
Exercices
Quelle est l'erreur relative si et ?
Vrai ou faux : l'erreur relative est toujours plus pertinente que l'erreur absolue pour juger de la qualité d'une approximation.
Le phénomène de cancellation catastrophique se produit typiquement lors de :
Un algorithme dont l'erreur est multipliée par à chaque étape est-il stable ?
Vrai ou faux : un problème bien conditionné, résolu par un algorithme instable, peut tout de même donner des résultats numériquement faux.
Suivez votre progression
Connectez-vous pour sauvegarder votre avancement et gagner des XP.