Projekt I/6: Fehlerquellen

Werbung
Übungen zur Computernumerik, LVA 106.054
WS 2007/08
Projekt I/6: Fehlerquellen
Dieses Projekt hat zum Ziel, die Ursachen der Ungenauigkeiten in den auf Rechnern ermittelten
Resultate zu studieren. Dabei soll gelernt werden wie man mögliche Fehlerquellen erkennt und was
man tun kann, um sie zu beseitigen oder abzuschwächen.
Beispiel 1
Zur Auswertung der folgenden Ausdrücke in dem angegeben Bereich von x stehen zwei mathematisch
äquivalente Formen zur Verfügung.
Ausdruck
Bereich
(a)
1−cos x
x
x≈0
sin2 x
x(1+cos x)
(b)
1
1+3x
x≈0
6x2
(1+3x)(1+x)
−
1−2x
1+x
Alternative
(1.1) Über die Betrachtung des Restalgorithmus stelle man fest, welche der beiden Rechenvorschriften bezüglich des Fehlers bei der Auswertung des cos numerisch stabil ist. Für die numerisch
instabile Variante gebe man die Größenordnung des Verstärkungsfaktors für den relativen Fehler in cos x an.
(1.2) Analoge Untersuchung bezüglich des Fehlers bei der Berechnung von 1 + 3x.
(1.3) Zu beiden Beispielen gebe man einige Taschenrechner- oder Computerberechnungen an, die
den Effekt zeigen.
Beispiel 2
Bei einer schlecht konditionierten Problemstellung wird normalerweise auch ein grundsätzlich stabiler
numerischer Algorithmus kein genaues Resultat liefern können, weil wegen der schlechten Kondition
auch die im Laufe der Rechnung unvermeidlichen Rechenfehler große Fehler im Endergebnis bewirken
werden – in derselben Größenordnung wie die (selbst bei exakter Rechnung) unvermeidlich starke
Auswirkung der Datenfehler.
Trotzdem kann man wenigstens die starken Rechenfehlereffekte oft dadurch in den Griff bekommen, dass man an kritischen“ Stellen im numerischen Algorithmus vorübergehend mit doppelter
”
Genauigkeit arbeitet1 (sogenannte partielle doppelte Genauigkeit).
(2.1) Man quantifiziere die relative Kondition der Nullstellen2 x1 , x2 der quadratischen Gleichung
x2 + px + q
und zeige, dass die Kondition schlecht ist, wenn x1 und x2 sehr nahe beieinanderliegen. Man
versuche auch, die schlechte Kondition geometrisch zu interpretieren.
1
Dies kann insbesondere dann sinnvoll sein, wenn die Problemdaten als exakte Maschinenzahlen vorliegen (keine
Datenfehler aufweisen).
2
Man betrachte nur den Fall zweier verschiedener reeller Nullstellen.
1
Übungen zur Computernumerik, LVA 106.054
WS 2007/08
(2.2) In der Lösungsformel
r
p
p2
x1,2 = − ±
−q
2
4
identifiziere man jene Teile, bei denen man partielle doppelte Genauigkeit einsetzen muss,
um in der unter (2.1) ermittelten schlecht konditionierten Situation ein genauers numerisches
Ergebnis zu erhalten.
(2.3) Man versuche auch, den Unterschied zu einer durchwegs in einfacher Genauigkeit errechneten Lösung experimentell zu dokumentieren. Dazu wählt man einfach genaue Maschinenzahlen
p, q und betrachtet diese als exakte, ungestörte Problemdaten. Eine Referenzlösung“ ver”
schafft man sich mit Hilfe eines Computeralgebrasystems (z.B. Maple) oder aus der durchwegs doppelt genauen Rechnung zu denselben einfach genauen Daten (was Datenfehlereffekte
ausschließt).
Beispiel 3
Gegeben sei die 4×4 - Hilbert-Matrix



H4 = 

1
1
2
1
3
1
4
1
2
1
3
1
4
1
5
1
3
1
4
1
5
1
6
1
4
1
5
1
6
1
7



.

(3.1) Man betrachte das ungestörte Gleichungssystem
H4 x = b
und das gestörte Gleichungssystem
H4 (x + ∆x) = b + ∆b .
Man löse die beiden Gleichungssysteme (z.B. mit Maple) für
µ
¶T
77 57 319
b = 1,
,
,
, und b̃ = b + ∆b = b + 10−7 (1, −1, 1, −1)T ,
125 125 875
vergleiche die Größe der relativen Störung in der rechten Seite k∆bk/kbk mit dem daraus
resultierenden relativen Fehler in x, k∆xk/kxk und kommentiere das Resultat.
(3.2) Man benütze vorhandene Software, um die obigen linearen Systeme näherungsweise zu lösen.
Beispiel 4
Die Nullstellen x1 und x2 der quadratischen Gleichung x2 + bx + c = 0 seien bekannt. Jemand möchte
daraus die Koeffizienten b = −(x1 + x2 ) und c = x1 · x2 und anschließend die Größen d = c/b und
e = b/c berechnen. Bei allen Überlegungen dieses Beispiels werde angenommen, dass x1 und x2 reelle
Zahlen sind, für die 1/10 ≤ |xi | ≤ 1 (i = 1, 2) gilt und dass die Berechnung von b, c, d und e auf einem
Taschenrechner mit den Gleitpunktzahlen F(10, 10, −98, 100, true) durchgeführt wird (sodass sowohl
bei der Eingabe von x1 und x2 als auch bei der weiteren Rechnung entsprechende Rundungsfehler
auftreten). Weiters nehme man an, dass nach jedem Rechenschritt abgeschnitten wird und dass keine
Schutzstellen vorhanden sind.
2
Übungen zur Computernumerik, LVA 106.054
WS 2007/08
(4.1) Man gebe ein Nullstellenpaar x1 und x2 an, für das sich bei der Berechnung von b nur vier
richtige Stellen ergeben.
(4.2) Nun betrachte man die absoluten Rundungsfehler, die bei der Berechnung von b, c, d und e
entstehen. Konkret untersuche man, für welche der Größen b, c, d oder e es Nullstellenpaare
x1 und x2 gibt, für die das absolute Fehlerniveau
(i) in der Größenordnung von 10−8 liegt,
(ii) in der Größenordnung von 100 liegt,
(iii) unendlich groß ist.
Man begründe theoretisch und belege durch Experimente.
(4.3) Man gebe (mittels (1 + ε)-Technik“) eine möglichst scharfe Rundungsfehlerschranke für den
”
absoluten Rundungsfehler bei der Berechnung von e an, die für sämtliche Nullstellenpaare x1 , x2
mit 1/10 ≤ |xi | ≤ 1 gilt.
Beispiel 5
(5.1) Es sei
sn = 1 +
n
X
k=1
1
.
k(k + 1)
Man berechne s9 , s99 , s999 , s9999 , s99999 und vergleiche sowohl mit dem exakten Resultat als
auch mit Ergebnissen, die man aus der Summation in umgekehrter Reihenfolge erhält:
sn =
1
1
1
1
+
+ ··· +
+
+ 1.
n · (n + 1) (n − 1) · n
2·3 1·2
Welches der grundlegenden Gesetze der Analysis ist offensichtlich verletzt? Man erkläre die
Unterschiede in den Berechnungen.
(5.2) Manchmal ist es notwendig, unendliche Summen näherungsweise zu berechnen. Hier geht es
um die Reihe
∞
X
1
.
2
n +1
n=1
Man berechne die obige Summe mit einem Fehler, der eine Einheit der siebenten signifikanten
Stelle nicht übersteigt. Bei der Entscheidung wieviele Summanden man zu berücksichtigen hat,
können die Rechenfehler (Fehler bei der Berechnung der einzelnen Brüche und Summationen)
vernachlässigt werden.
Hinweis:
∞
∞
X
X
π2
1
π4
1
=
,
=
.
n2
6
n4
90
n=1
n=1
Warnung: Man verschwende keine (Rechen-)Zeit auf Summation von Reihen, wenn man über
deren Konvergenzgeschwindigkeit nicht Bescheid weiß!
3
Übungen zur Computernumerik, LVA 106.054
WS 2007/08
Beispiel 6
Das quadratische Polynom
p(x) := x2 − 4x + 3
sei in Gleitpunktarithmetik (mit relativer Genauigkeit eps) auszuwerten, wobei x ≈ 1.0 exakt als
Maschinenzahl (!) gegeben sei, x ∈ F. Das folgende Matlab-Skript realisiert dies auf zwei verschiedene
(mathematisch äquivalente) Arten:
x = ... % x ist Maschinenzahl nahe an 1.0
result1 = (3.0 - 4.0*x) + x*x
Result2 = 3.0 + x*(x - 4.0)
(6.1) Leiten Sie für result1 eine Schranke für den relativen Fehler (im Vergleich zum exakten Resultat) des erhaltenen, durch Rundungsfehler verfälschten Wertes her.
(6.2) Interpretieren Sie das unter a) erhaltenen Ergebnis ausführlich. Ist mittels result2 ein signifikant genaueres Ergebnis zu erwarten? (Begründung!)
(6.3) Geben Sie eine alternative, verbesserte Auswertungsvariante an (mit Begründung!) und analysieren Sie deren Rundungsfehlereffekte analog wie unter a).
(6.4) Überprüfen Sie die unter(6.1)–(6.3) erhaltenen Aussagen durch gezielte numerische Experimente mit Werten von x ∈ F nahe an 1.0.
(6.5) Kommentieren Sie den Fall x ≈ 1.0 mit x 6∈ F. Was ist hier prinzipiell anders?
Zusatzfragen
Man versuche gute Argumente dafür zu finden, ob die untenstehenden Aussagen wahr oder falsch
sind:
• Bewirken kleine Änderungen in den Eingangsdaten große Änderungen im Ergebnis einer numerischen Rechnung, so muss der Algorithmus instabil sein.
• Bewirken kleine Änderungen in den Eingangsdaten große Änderungen im Ergebnis einer numerischen Rechnung, so ist das zugrundeliegende mathematische Problem schlecht konditioniert.
• Bewirken kleine Änderungen in den Eingangsdaten Änderungen der gleichen Größenordnung
im Ergebnis einer numerischen Rechnung, so ist das zugrundeliegende mathematische Problem
gut konditioniert und der Algorithmus stabil.
• Die Auswertung von
x2 − 6.25
x − 2.5
für x ≈ 2.5 ist schlecht konditioniert.
• Bei der Berechnung von
x2 − 6.25
für x ≈ 2.5
x − 2.5
in Gleitpunktarithmetik tritt Auslöschung auf und deshalb ist diese Auswertung instabil.
4
Übungen zur Computernumerik, LVA 106.054
WS 2007/08
• In allen Auswertungen der untenstehenden Ausdrücke tritt für die angeführten Bereiche
Auslöschung auf:
Ausdruck
√
x+1−
Bereich
√
x
x positiv und klein
x ≈ − π2 , c klein
sin(x + c) − sin x
arctan(a + 1) − arctan a a klein
1
1+3x
−
1−2x
1+x
x groß
1−cos x
x
x≈π
1
cosh x−sinh x
x positiv und groß
1
cosh x−sinh x
x negativ und groß
ex −e−x
2
x groß
1−
p
√
1 − 2−n π
n ∈ N groß
tan2 x − sin2 x
x klein
5
Herunterladen