Contrôle heuristique de la stabilité numérique

12

Supposons que j'ai une fonction réelle ( x 1 , , x N ) de certaines variables x i que je veux évaluer numériquement. En général, la formule de f peut contenir des produits, des rationnels, des fonctions transcendantales, etc. et sera trop longue pour étudier sa stabilité numérique analytiquement. Ou il faudra au moins beaucoup de temps pour le faire dans la pratique. Supposons que je n'ai pas d'équivalent plus court avec une stabilité garantie. Existe-t-il une procédure méthodique pour analyser la stabilité numérique de ff(x1,,xN)xiff. Je pense à le comparer à des résultats de précision arbitraires obtenus en utilisant un système d'algèbre informatique. Supposons que la fonction sera implémentée en C en utilisant les fonctions stdlib et une précision simple ou double. Quelles quantités dois-je comparer pour quantifier la qualité de l'approximation à précision finie? Comment déterminer les valeurs critiques des variables? Comment puis-je choisir le compilateur et les optimisations du compilateur afin que d'autres personnes puissent facilement reproduire les résultats? ... Je sais que le réglage du problème est probablement trop générique pour donner de bonnes réponses. Mais je pense toujours que c'est un problème courant en informatique et je me demande s'il existe des références qui proposent des standards pour effectuer une telle analyse.

highsciguy
la source

Réponses:

7

Ce que vous cherchez, c'est ce qu'on appelle "l'analyse automatique des erreurs" et fait l'objet du chapitre 26 du livre de Higham "Accuracy and Stability of Numerical Algorithms", 2e éd., SIAM Publishers.

Une des techniques qu'il décrit utilise l'optimisation de la recherche directe: essayez de formuler votre problème comme un problème d'optimisation et utilisez l'algorithme d'optimisation pour trouver des coefficients ou des valeurs de paramètres qui maximisent ou minimisent une quantité liée à la précision de votre algorithme / formule. Il utilise l'exemple du facteur de croissance en élimination gaussienne (quelle matrice maximise ce facteur de croissance) ou les racines d'un cube (comme je l'ai répondu dans l'une de vos questions précédentes).

Je vous suggère d'obtenir une copie de ce livre, de lire les chapitres d'introduction et ce chapitre 26 et les références qui s'y trouvent.

GertVdE
la source
3

±1

x±11/xx=01/(1x)1/(1+x)x=0

Arnold Neumaier
la source
0

|f(x+ε)f(x)|C|ε|
Cfx,ϵ
Wolfgang Bangerth
la source
Et que faire si les fonctions varient énormément sur son domaine ou si aucun dérivé n'est disponible? Existe-t-il d'autres techniques ou finirions-nous par une approche Monte Carlo?
André
1
-1: Vous expliquez la notion de condition, pas de stabilité numérique.
Arnold Neumaier