Stabilité numérique
# Stabilité numérique

En analyse numérique, une branche des mathématiques, la stabilité numérique est une propriété globale d’un algorithme numérique, une qualité nécessaire pour espérer obtenir des résultats ayant du sens.

Une définition rigoureuse de la stabilité dépend du contexte. Elle se réfère à la propagation des erreurs au cours des étapes du calcul, à la capacité de l’algorithme de ne pas trop amplifier d’éventuels écarts, à la précision des résultats obtenus.

Le concept de stabilité ne se limite pas aux erreurs d’arrondis et à leurs conséquences. Les algorithmiques dédiés à la résolution d’équations différentielles ou d’équations aux dérivées partielles (en particulier la méthode des différences finies et la méthode des éléments finis) se basent sur une discrétisation ou un maillage de l’espace (et du temps) ; dans ce cas, la stabilité se réfère à un comportement numérique robuste lorsque le pas de discrétisation ou la taille des mailles tend vers 0.

Un algorithme instable peut être qualifié d’inutilisable car les résultats générés peuvent être totalement altérés.

Une des tâches de l'analyse numérique est de rechercher des algorithmes dont la stabilité est garantie.

## Exemples

### Évaluation d’un polynôme

Le plus souvent, un calcul peut être conduit de plusieurs manières qui sont algébriquement équivalentes ; dans la pratique toutefois, les résultats différent car les stabilités respectives ne sont pas les mêmes. Un cas classique est la Méthode de Ruffini-Horner pour l’évaluation d’un polynôme, en comparaison avec la méthode naïve et peu efficace consistant à évaluer chaque monôme pour les sommer.

### Résolution d’un système linéaire

Les méthodes classiques de résolution d’un système linéaire (élimination de Gauss-Jordan, décomposition LU, factorisation de Cholesky pour les matrices définies positives) sont stables.

Cependant, pour de grands systèmes linéaires, l’imprécision des nombreuses opérations de calculs élémentaires séquentiels de ces méthodes peut conduire à des erreurs significatives sur la solution obtenue.

* Si le résultat ${\tilde {x}}$ de $A\;x=b$ satisfait $A\;{\tilde {x}}=b+\Delta b$ où $\displaystyle \Delta b$ est jugé trop important, il faudra déterminer une correction $\Delta x\;$ satisfaisant $A\;\Delta x=-\Delta b$ afin de poser $x={\tilde {x}}+\Delta x$.
* Au lieu de résoudre un second système semblable à l’aide de la même méthode (ce qui serait long et donnerait généralement des résultats médiocres), il est préférable d’entreprendre quelques itérations d’une méthode récursive (méthode du gradient conjugué pour les matrices définies positives ou biconjugué sinon, ou encore la méthode de surrelaxation successive dont l’approche semble être a priori plus simple).

Quelle que soit la méthode de résolution, la précision des résultats obtenus restera médiocre lorsque la matrice $A$ est mal conditionnée.

### Schéma numérique aux différences finies

Pour résoudre un problème bien posé décrit par un système d’équations aux dérivées partielles, l’utilisation d’un schéma numérique aux différences finies peut rapidement conduire à des résultats totalement erronés si la stabilité du schéma n’est pas assurée. Un tel phénomène peut se manifester en dépit du fait que le schéma soit parfaitement adapté à représenter les équations du problème d’origine (consistance du schéma numérique).

## Stabilité inverse

Considérons un problème résolu au moyen d'un algorithme numérique considéré comme une fonction $y=f(x)$ qui, à la donnée $x$, associe la solution algébrique $y$. Le résultat du calcul réel (noté $y^{*}$) s'écartera en général de la solution algébrique.

Les principales causes sont les erreurs d'arrondi, les erreurs de troncature et les erreurs de donnée.

L'erreur aval d'un algorithme est la différence entre le résultat réel et la solution algébrique. L'erreur amont ou erreur inverse est le plus petit $\Delta x$ tels que $f\left(x+\Delta x\right)=y^{*}$; en d'autres termes, l'erreur amont nous indique de quelle façon le problème est réellement résolu par l'algorithme. Les erreurs amont et aval sont reliées par le nombre condition : l'erreur aval possède tout au plus le même ordre de grandeur que le nombre condition multiplié par l'ordre de grandeur de l'erreur amont.

L'algorithme est dit inversement stable ou stable en amont si l'erreur amont est assez petite pour toutes les données $x$. « Petit » est un terme relatif et son appréciation dépendra bien sûr du contexte. Il est souvent souhaité que l'erreur soit du même ordre que..., ou seulement plus grande que ... de quelques ordres de grandeur, à une unité près.

Dans de nombreuses situations, il est naturel de considérer l'erreur relative ${\frac {|\Delta x|}{|x|}}$ à la place de l'erreur absolue $\Delta x$.

