Reihenfolge der Operationen, numerische Algorithmen


10

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.xzyz(xy)z

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

eps+3|x|+|y||x||y|eps
während der relative Fehler der zweiten Version durch begrenzt ist

3eps+|x|+|y||x||y|eps

Dabei ist die Maschinengenauigkeit.eps

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.i(1+εi)εiepsϵiϵjx


Wo hast du das gelesen?
David Ketcheson

in meinen Vorlesungsunterlagen
Bananach

Antworten:


8

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: ,,×+

[xy]=(x+y)(1+δ),|δ|ϵmach,
ϵmach|δi|ϵmachm
i=1m(1+δi)=1+θ(m),|θ(m)|mϵmach1mϵmach

Definieren wir die wahre Funktion , die mit reellen Zahlen als arbeitetfx,y,z

f(x,y,z)=(x×z)(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~

f1~(x~,y~,z~)=(x~z~)(y~z~),

f2~(x~,y~,z~)=(x~y~)z~.

Fehleranalyse für :f1~

f1~=((x(1+δx)×z(1+δz))(1+δxz)(x~z~)(y(1+δy)×z(1+δz))(1+δyz)(y~z~))(1+δ)=xz(1+δx)(1+δz)(1+δxz)(1+δ)yz(1+δy)(1+δz)(1+δyz)(1+δ)=xz(1+θxz,1)yz(1+θyz,1).
Hier .|θxz,1|,|θyz,1|4ϵmach14ϵmach

In ähnlicher Weise gilt für Hier .f2~

f2~=(((x(1+δx)y(1+δy)(1+δxy))×(z(1+δz)))(1+δ)=xz(1+δx)(1+δz)(1+δxy)(1+δ)yz(1+δy)(1+δz)(1+δxy)(1+δ)=xz(1+θx,2)yz(1+θy,2).
|θx,2|,|θy,2|4ϵmach14ϵmach

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 ).xy

|f1~f||f|=|xz+xzθxz,1yzyzθyz,1(xzyz)||xzyz|=|xθxz,1yθyz,1||xy||x|+|y||xy|4ϵmach14ϵmach,
|f2~f||f|=|xz+xzθx,2yzyzθy,2(xzyz)||xzyz|=|xθx,2yθy,2||xy||x|+|y||xy|4ϵmach14ϵmach.

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(xy)xy

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)F0F0

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.