Ich habe das gelesen
(1) Schlecht konditionierte Operationen sollten vor gut konditionierten durchgeführt werden.
Als Beispiel sollte man als berechnen, da die Subtraktion schlecht konditioniert ist, während die Multiplikation nicht ist.
Eine Fehleranalyse erster Ordnung beider Algorithmen zeigt jedoch, dass sie sich nur um den Faktor drei (*) unterscheiden, und ich verstehe nicht, warum man dies auf Aussage (1) verallgemeinern kann, und ich verstehe die Bedeutung von nicht intuitiv Reihenfolge der Operationen. Denken Sie, dass die Aussage (1) eine akzeptierte Regel ist, und haben Sie andere Erklärungen dafür?
*: Insbesondere hat die erste Version einen relativen Fehler, der durch begrenzt ist
Dabei ist die Maschinengenauigkeit.
Diese Analyse basiert auf der Annahme, dass das te Zwischenergebnis mit multipliziert wird (aufgrund von Rundungsfehlern), wobei iid Zufallsvariablen sind, die durch . "Erste Ordnung" bedeutet, dass Begriffe höherer Ordnung wie vernachlässigt werden.
quelle
Antworten:
Bezeichnen wir mit (ich war faul beim Versuch, eine eingekreiste Version des Divisionsoperators zu erhalten) die Gleitkommaanaloga der exakten Multiplikation ( ), Addition ( ) bzw. Subtraktion ( ). Wir nehmen an (IEEE-754), dass für alle von ihnen wobei das Maschinen-Epsilon ist, das eine Obergrenze für den relativen Fehler aufgrund von Rundungen angibt. Wir werden auch das folgende Lemma verwenden (vorausgesetzt, alle und ist nicht zu groß), das leicht bewiesen werden kann:⊗,⊕,⊖ × + −
Definieren wir die wahre Funktion , die mit reellen Zahlen als arbeitetf x,y,z
und zwei Versionen der Funktionsimplementierung in IEEE-kompatibler Gleitkomma-Arithmetik als und , die mit Gleitkomma-Darstellungen wie folgt:f1~ f2~ x~=x(1+δx),y~,z~
Fehleranalyse für :f1~
In ähnlicher Weise gilt für Hier .f2~
Also haben wir sowohl für als auch für Ausdrücke des gleichen Typs erhalten, daher sehe ich nicht, warum eine Implementierung aus numerischer Sicht einer anderen vorgezogen wird (mit Ausnahme der Tatsache, dass führt im Vergleich zu ) nur 2 Gleitkommaoperationen aus .f1~ f2~ f2~ f1~
Die Berechnung des relativen Fehlers zeigt, dass das Problem darin besteht, dass und sehr nahe beieinander liegen können ( Löschung ).x y
Geringe Unterschiede zwischen 's können dazu führen, dass eine der beiden numerischen Implementierungen je nach geringfügig besser oder schlechter wird . Ich bezweifle jedoch, dass dies von Bedeutung sein kann. Das Ergebnis ist absolut sinnvoll, denn egal was passiert, wenn Sie berechnen müssen , wenn und nahe genug an Werten (für die Genauigkeit, mit der Sie arbeiten) unter Verwendung von Gleitkomma-Arithmetik liegen, hilft Ihnen keine Skalierung erheblich: Sie sind bereits in Schwierigkeiten.θ x,y,z (x−y) x y
NB: Alle obigen Diskussionen setzen keinen Überlauf oder Unterlauf voraus, dh , wobei die Menge aller normalen Gleitkommazahlen ist.x,y,z,f(x,y,z)∈F0 F0
quelle