Reale und Robuste Implementierung Geometrischer Algorithmen

Werbung
Reale und Robuste Implementierung Geometrischer
Algorithmen SS09
Übungsblatt 2: Thema Floating Point und Expansionen
Besprechung am 19.5.2009
Universität Bonn, Institut für Informatik I
Dr. Elmar Langetepe
Aufgabe 1:
Guard Digit bei Subtraktion (Aufgabenteil b)
In der Vorlesung wurde eine Fehlerabschätzung für die Subtraktion von FloatingPoint-Zahlen durchgeführt.
a) Lemma 9.9 sagt aus, dass der relative Fehler bei einer normalen Subtraktionsberechnung den Wert β − 1 erreichen kann, wobei β die Basis des FloatingPoint-Systems bezeichnet. An der wievielten Stelle des Ergebnisses kann dabei
der erste Fehler auftreten?
b) Zum Ausbessern dieses verheerenden Ergebnisses kann man ein so genanntes
Guard-Bit benutzen. Theorem 9.10 sagt dann, dass der relative Fehler der Subtraktion kleiner als 2ε ist. Geben Sie ein Beispiel für β = 2 an, bei dem die
Subtraktion mit einem Guard-Bit zu einem relativen Fehler führt, der größer
als ε ist! Können Sie Beispiele finden, mit denen man beliebig nah an den
größtmöglichen relativen Fehler von 2ε heran kommt?
Aufgabe 2:
Vergleich verschiedener Berechnungsmöglichkeiten
Wenn man mit Fließkomma-Arithmetik (mit Guard-Bit) für bestimmte Werte x, y
den Wert f (x, y) := x2 − y 2 berechnen möchte, welche Berechnungsvorschrift ist dann
besser: (x + y)(x − y) oder (x · x) − (y · y)? Warum? Diskutieren Sie Vor- und Nachteile
der Berechnungen anhand von Beispielwerten!
Aufgabe 3:
Konvertierung von Fließkommazahlen
Theorem 9.11 sagt aus, dass man nicht für jede binäre 24-Bit Fließkommazahl den
Originalwert zurück erhält, wenn man sie zunächst in die nächstgelegene DezimalFließkommazahl mit Präzision 8 wandelt und anschließend in die nächstgelegene
binäre 24-Bit Fließkommazahl zurück konvertiert. Zeigen Sie dies an einem konkreten
Beispiel! Zeigen Sie am gleichen Beispiel, dass die gleiche Prozedur bei Wandlung in
eine 9-stellige Dezimal-Fließkommazahl funktioniert!
1
Aufgabe 4:
FastTwo-Sum für Dezimalzahlen
Der Algorithmus Fast-Two-Sum erzeugt, wie in der Vorlesung bewiesen, aus zwei
Fließkommazahlen a, b mit Präzision p und Basis β = 2 unter der Bedingung |a| >
|b| eine absteigend sortierte, nicht-überlappende Expansion x, y mit a + b = x +
y. Beachten Sie dabei, dass Addition und Subtraktion durch Rundung (Round-ToNearest mit Tie-Breaking-Rule Round-to-Even1 ) der exakten Ergebnisse simuliert
werden.
a) Was ergibt der Algorithmus für die Binärzahlen a = −10100 und b = 101, wenn
mit Basis β = 2 und Präzision p = 3 gerechnet wird? Gelten in diesem Beispiel
die Aussagen x a = x − a und b bv = b − bv ?
b) Welches Ergebnis würde der Algorithmus für die Dezimalzahlen a = b = 9999
berechnen, wenn immer mit Basis β = 10 und Präzision p = 4 gerechnet wird?
Gelten in diesem Beispiel die Aussagen x a = x − a und b bv = b − bv ?
c) An welcher Stelle lässt sich der Beweis von Theorem 9.18 nicht auf β = 10
übertragen?
Aufgabe 5:
Beweistechnik
Seien a, b p-bit Floating Point Zahlen für β = 2 und sei a ⊕ b = a + b + err(a ⊕ b).
a) Zeigen Sie: Falls |err(a ⊕ b)| ≥ 2i für ein i ∈ ZZ, dann gilt: |a ? b| ≥ 2i (2p + 1).
b) Zeigen Sie: Falls |err(a ⊕ b)| > 2i für ein i ∈ ZZ, dann gilt: |a ? b| > 2i (2p+1 + 1).
1
Das bedeutet, dass immer zum nächsten darstellbaren Wert gerundet wird. Ist die Entscheidung
nach dieser Regel nicht eindeutig, so wird betragsmäßig so gerundet, dass die letzte Stelle eine gerade
Zahl ergibt.
2
Herunterladen