[ < ] [ globale Übersicht ] [ Kapitelübersicht ] [ Stichwortsuche ] [ > ]
Wenn in einem Algorithmus nur ein einziger Rechenfehler entsteht (wie es im Beispiel der Quadratischen Gleichung bei Algorithmus QG-1 der Fall war), dann kann man die Empfindlichkeit der Endergebnisses bezüglich dieser Störung folgendermaßen erfassen:
Angenommen, der Fehler entsteht bei der Berechnung des Zwischenergebnisses
zi, sodaß man anstelle des exakten Wertes zi
das Resultat i
erhält. Dann betrachtet man den verbleibenden Teil des arithmetisch
Algorithmus nach der Berechnung von zi als einen eigenen Algorithmus:
den "Restalgorithmus nach zi". Dieser hat als Daten
jene des ursprünglichen Algorithmus - a1,a2,...am
- und die bisher errechneten Zwischenergebnisse z1,z2...zi,
soweit sie im RestAlgorithmus noch explizit vorkommen. Der Wert zi selbst
gehört in jedem Fall zu den Daten des Restalgorithmus, sonst wäre
seine Berechnung sinnlos gewesen. Die Endresultate des Restalgorithmus
sind dieselben wie die des ursprünglichen Algorithmus.
Für den Restalgorithmus kann man wie für jeden anderen Algorithmus
die Kondition bezüglich der änderung seiner Daten, insbesondere
bezüglich der änderugnen von zi, definieren, indem
man die Empfindlichkeit seiner Ergebnisse bezüglich dieser änderungen
betrachtet. Diese Empfindlichkeit kann man wieder mit Hilfe von Konditionszahlen
(siehe Kapitel 2) quantitativ erfassen, Damit kann man dann die änderung
des Endresultates des ursprünglichen Algorithmus auf Grund der Abänderung
von zi in i
abschätzen.
(S.222)
Beispiel (Quadratische Gleichung) Der Restalgorithmus nach z4 lautet:
bei QG-1: z5 := z4 - a1 |
bei QG-2: z5 := z4 -a1 |
y1 := z5 / 2 |
y1: = z5 /2 |
y2 := -a1 - y1 |
y2 := a0 / y1 |
Daten sind a1 und z4 in der Version QG-1 bzw. a1,a0 und z4 in der Variante QG-2.
Die durch QG-1 vermittelte mathematische Abbildung (a1,z4)->y2 lautet
und die relative Konditionszahl (Grenzkondition, siehe Kapitel 2)
ist für den Einfluss einer Änderung von z4 auf die relative Genauigkeit von y2 maßgeblich. Für a1=-5 und z4~5.04 ergibt sich
was die festgestellt Vergrösserung des relativen Fehlers um mehr als 2 Grössenordnungen erklärt.
Auf diese Weise kann man im Prinzip7 bei jedem arithmetischen Algorithmus seine Kondition bezüglich einer Änderung jedes einzelnen Zwischenergebnisses untersuchen. Allerdings beziehen sich die so gewonnenen Konditionszahlen auf die artifizielle Situation, dass sich nur das jeweils betrachtete Zwischenergebnis ein wenig ändert und der Algorithmus sonst exakt abläuft. Eine derartige Situation liegt natürlich in der Praxis nie vor. Es ist jedoch fast immer der Fall, dass die direkten Auswirkungen eines gestörten Zwischenergebnisses auf das Eindergebnis wesentlich stärker sind als die indirekten Effekte überr eine geringfügige änderung des Restalgorithmus selbst, etwa durch eine Beeinflussung der Details der Rundungsvorgänge.
In einer Analyse der Fehlerfortpflanzungseigenschaften geht es in erster Linie darum, qualitativ festzustellen (etwa grössenordnungsmässig), ob die Konditionszahlen bezeuglich der Zwischenergebnisse diejenigen des GesamtAlgorithmus bezüglich seiner Daten deutlich übertreffen oder nicht. Man ist ja in der Praxis nicht einmal in der Lage (wegen des damit verbundenen prohibitiven Aufwands), die Konditionszahlen auch nur annäherungsweise zu berechnen.
Umso wichtiger ist es, zu erkennen, welche Situation in einem arithmetisch Algorithmus regelmässig zu einer Verschlechterung seiner Stabilität führen. Es wird sich heraussetllen, das hiefür fast immer eine typische artih. Konstellation verantwortlich ist, di sich bei insgesamt gut konditionierten Abbildungen zwischen Daten und Ergebnis durch geeignete Gestaltung eines arithmetischen Algorithmus oft vermeiden lässt. Zu diesem Zweck wird im nächsten Abschnitt die Kondition dereinzelnen arithmetisch Operationen untersucht.
7 Daß eine solche Analyse stetige Differenzierbarkeit der untersuchten Zusammenhänge voraussetzt, ist noch das geringere Problem, weil sich die detaillierte Untersuchung eines komplizierten Algorithmus wegen des damit verbundenen Aufwands von selbst verbietet.
(S.223)
Im folgenden wird die Empfindlichkeit einzelner exakter arithmetischr Operationen auf änderungen in ihren "Daten", d.h. in ihren Operanden untersucht. Da es in einer Gleitpunktarithmetisch fast immer um eine relative Größe von Änderungen, Störungen und Fehlern geht - "wieviele Stellen der Mantisse sind richtig ?" - beschränkt man sich bei der Analyse von Auswirkungen der Fehlerfortpflanzung meist auf die Untersuchung der reltiaven Kondition und die Ermittlung relativer Konditionszahlen (siehe Kapitel 2). Die absolute Kondition einzelner Operationen spielt für die Fehlerfortpflanzung nur äusserst selten eine maßgebliche Rolle.
Schlechte relative Kondition bedeutet für eine Einzeloperation, dass sich die Änderung eines Operanden an einer hinteren (weniger wichtigen) Stellen der Mantisse seinerr Gleitpunktdarstellung auf vorderen (bedeutsamen) Stellen der Mantisse des Ergebnisses auswirkt. Diese unerwünschte Situation ergibt sich am häufigsten durch Auslöschung führender Stellen (cancellation of leading digits) bei Addtition / Subtraktion zweier annähernd (gegen-)gleicher Zahlen mit vberschieden/gleichen Vorzeichen. In diesem Fall heben einander die vorderen, übereinstimmenden Mantissenstellen der beiden Operanden auf; Störungen an einer hinteren Mantissenstelle der Daten werden im Ergebnis zu einer Störung an einer vorderen Stelle.
Beispiel (Auslöschung) Es soll die Differenz der annähernd gleichgrossen Zahlen a und b berechnet werden:
a=7.64352, b=7.64286, a-b=0.00066
Verändert man a um 0.00007 , das ist eine relative
Änderung von 10-5 , in ã=7.64359 , dann ändert
sich die Differenz natürlich auch nur um 0.00007 in a-b=0.00073.
Die relative Änderung der Differenz ist hingegen erheblich grösser,
nämlich
Im Gleitpunktzahlensystem F(10,6,-9,9,true) ergibt sich
a - b = .764352 * 101 - .764286 * 101 = .660000 * 10-3
ã - b = .764359 * 101 - .764286 * 101 = .730000 * 10-3
Eine änderung der letzten Stelle der Mantisse von a hat eine Änderung an der ersten Stelle der Mantisse der Differenz a-b bewirkt !
Besonders zu beachten ist die Tatsache, dass im Fall der Auslöschung kein Rechenfehler auftritt. Der grosse relative Fehler des Resultats ist auschliesslich auf die bereits vor der ausgeführten arithmetischen Operation vorhandenen Fehler der Operanden (Daten) zurückzuführen.
Auslöschungssituationen sind die mit Abstand häufigste Ursache für Instabilität arithmetischer Algorithmen. Die lokale Verstärkung des relativen Effekts der Änderung (Störung) einer Eingangsgrösse kann im allgemeinen auch nicht mehr rückgängig gemacht werden.