Fiche récapitulative générée pour impression / export PDF.
Licence 2 · Analyse numérique L2 — Méthodes d'approximation
Erreurs numériques et stabilité
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 de la leçon
Exercice 1
Quelle est l'erreur relative si et ?
Corrigé
Erreur absolue . Erreur relative .
Exercice 2
Vrai ou faux : l'erreur relative est toujours plus pertinente que l'erreur absolue pour juger de la qualité d'une approximation.
Corrigé
Vrai (dans la quasi-totalité des cas pratiques). L'erreur relative tient compte de l'ordre de grandeur de la quantité approchée, contrairement à l'erreur absolue qui peut être trompeuse (négligeable pour un grand nombre, énorme pour un petit nombre).
Exercice 3
Le phénomène de cancellation catastrophique se produit typiquement lors de :
Corrigé
La cancellation catastrophique survient lors de la soustraction de deux nombres très proches en valeur : l'erreur absolue (petite) reste similaire, mais le résultat (petit) fait que l'erreur relative explose.
Exercice 4
Un algorithme dont l'erreur est multipliée par à chaque étape est-il stable ?
Corrigé
Oui, l'algorithme est stable car : l'erreur décroît à chaque étape, elle ne s'amplifie pas.
Exercice 5
Calculer le conditionnement pour .
Corrigé
. . Le conditionnement est constant (égal à ) : élever au carré amplifie modérément (et de façon constante) les erreurs relatives.
Exercice 6
Reformuler pour proche de afin d'éviter la cancellation (indication : utiliser ).
Corrigé
En utilisant , on obtient . En écrivant , . Cette formule évite complètement la soustraction (qui souffre de cancellation pour proche de , car ), en la remplaçant par une expression utilisant uniquement le sinus, numériquement stable.
Exercice 7
Vrai ou faux : le conditionnement d'un problème dépend de l'algorithme utilisé pour le résoudre.
Corrigé
Faux. Le conditionnement est une propriété intrinsèque du problème mathématique (la sensibilité de la solution exacte aux perturbations des données), indépendante de l'algorithme. C'est la stabilité, en revanche, qui dépend de l'algorithme choisi.
Exercice 8
Calculer pour par la formule directe et par la formule reformulée , et comparer la fiabilité.
Corrigé
Formule directe : et . Leur différence théorique est , mais en représentation flottante (environ - chiffres significatifs), ne conserve que quelques chiffres significatifs après la virgule utiles, ce qui peut dégrader fortement la précision relative du résultat de la soustraction. Formule reformulée : , calculée comme une simple division de deux quantités bien représentées, sans aucune soustraction dangereuse : le résultat est numériquement fiable. Cet exemple illustre concrètement l'intérêt de la reformulation algébrique pour la stabilité numérique.
Exercice 9
Une récurrence vérifie sur l'erreur (où est l'écart entre la valeur calculée et la valeur exacte). Si (erreur d'arrondi initiale), estimer et conclure sur la stabilité.
Corrigé
(le signe disparaît car l'exposant est pair). . Donc . Une erreur initiale microscopique (, de l'ordre de la précision machine) est devenue, après seulement étapes, de l'ordre de — totalement inacceptable. L'algorithme est fortement instable (facteur d'amplification à chaque étape).
Exercice 10
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.
Corrigé
Vrai. Le conditionnement (propriété du problème) et la stabilité (propriété de l'algorithme) sont des notions distinctes. Même si le problème mathématique est peu sensible aux perturbations, un algorithme mal conçu peut amplifier les erreurs d'arrondi à chaque étape de calcul et produire un résultat final très imprécis, voire absurde.
Exercice 11
Pour résoudre , expliquer pourquoi la formule usuelle des racines pose un problème pour l'une des deux racines, et proposer une meilleure méthode de calcul.
Corrigé
(la correction due au est négligeable face à ). Donc la racine est le quotient par d'une soustraction de deux quantités quasi identiques ( et ) : cancellation catastrophique, perte de précision relative importante. En revanche (addition) est calculée sans problème. Méthode stable : calculer par la formule directe (fiable), puis utiliser la relation produit des racines (ici dans ) pour obtenir , qui ne comporte qu'une division, sans cancellation.
Exercice 12
Vrai ou faux : la précision machine (de l'ordre de pour le type double) signifie qu'aucun calcul numérique ne peut jamais avoir d'erreur supérieure à .
Corrigé
Faux. La précision machine est l'ordre de grandeur de l'erreur d'arrondi à chaque opération élémentaire. Mais ces erreurs peuvent s'accumuler ou être amplifiées au fil de nombreuses opérations (en particulier avec un algorithme instable), conduisant à des erreurs finales bien supérieures à — voire à des résultats complètement faux, comme illustré par l'exemple de la suite du cours.
Exercice 13
Soit , calculée près de par la formule directe (calcul de puis soustraction de ). Pourquoi cela pose-t-il un problème, et comment l'éviter (mention du développement en série) ?
Corrigé
Pour proche de , , donc le calcul est une soustraction de deux quantités très proches : cancellation catastrophique, perte de précision relative importante sur le résultat (qui devrait être proche de , une petite quantité). Solution : utiliser directement le développement en série , qui ne comporte aucune soustraction de grandes quantités, ou (en pratique informatique) la fonction dédiée souvent appelée \"expm1\" dans les bibliothèques numériques, spécifiquement conçue et implémentée pour rester stable près de .
Exercice 14
Donner la définition du conditionnement absolu (plutôt que relatif) d'un problème en un point , et expliquer en quoi il diffère du conditionnement relatif.
Corrigé
Le conditionnement absolu est : il mesure directement de combien une petite erreur absolue sur se traduit en erreur absolue sur , via l'approximation . Le conditionnement relatif normalise cette sensibilité par les ordres de grandeur de et eux-mêmes, ce qui le rend indépendant des unités de mesure choisies et généralement plus pertinent pour juger de la difficulté intrinsèque d'un problème (une grande sensibilité absolue peut être anodine si et sont eux-mêmes très grands).
Exercice 15
Expliquer pourquoi, pour calculer pour grand, on préfère souvent travailler avec (ou la formule de Stirling) plutôt que de calculer directement, du point de vue de la stabilité/représentation numérique.
Corrigé
croît extrêmement vite (plus vite que toute exponentielle) et dépasse la plage représentable par un nombre flottant standard (overflow) pour des valeurs de relativement modestes (par exemple dépasse , la limite du type double, vers ). En revanche, croît beaucoup plus lentement (de l'ordre de par la formule de Stirling), restant dans une plage de valeurs numériquement représentable sans dépassement de capacité, même pour des très grands. De nombreux calculs pratiques (rapports de factorielles, coefficients binomiaux, vraisemblances en statistique) peuvent alors se faire en passant par les logarithmes (additions au lieu de multiplications, soustractions au lieu de divisions) puis en repassant à l'exponentielle seulement à la fin si nécessaire, évitant ainsi tout débordement intermédiaire.
AlphaMath Académie · Erreurs numériques et stabilité · Analyse numérique L2 — Méthodes d'approximation