Vorwärtsstabilität: Beispiele ϕ = ϕk ◦ ϕk−1 ◦ · · · ◦ ϕ1 Funktion: σ = 1 + κk + κk κk−1 + · · · + κk κk−1 · · · κ1 Stabilitätsindikator: √ Auswertung von 1+x− √ 1−x für kleine x: auf zwei Arten: √ √ √ ϕ3 √ x 7→ (1 + x, 1 − x) 7→ ( 1 + x, 1 − x) 7→ ( 1 + x− 1 − x) {z } | ϕ1 Alg I: ϕ2 Auslöschung ϕ1 √ √ ϕ3 x 7→ (2x, 1 + x, 1 − x) 7→ (2x, 1 + x, 1 − x) 7→ √ Alg II: Bei Alg I ist Maple: ϕ2 κ3 groÿ. Bei Alg II sind alle Teilkonditionen mit Digits = 5 liefert für zweiten Fall x = 10−6 κi 2x √ 1+x+ 1−x moderat. im ersten Fall 0.00000 und im 0.10000 · 10−5. 1 versteckte Auslöschung am Bsp von • ϕ(x) = ln(1 + x) für kleine x Das Problem ist gut konditioniert: κrel = x 0 ϕ (x) → 1 ϕ(x) x = 10−16 für x→0 • Numerik: • Analyse: Algorithmische Realisierung mittels Standardfunktionen: Matlab liefert für ϕ den Wert log(1 + x) = 0. ϕ ϕ : x 7→1 1 + x 7→2 ln(1 + x) Für den Stabilitätsindikator κ1 ≈ 1 κ2 = • bei σ = 1 + κ2 + κ2 κ1 gilt: x=0 y 1 0 |ϕ (y)| = |ϕ2(y)| 2 ln y groÿ für y nahe bei 1 Abhilfe: z.B. Verwendung von Taylorentwicklung: 2 ϕ(x) = ln(1 + x) = x − x2 + · · · (geeignet abgebrochen) 2 ϕ(x) = ln(1 + x): Beispiel Simulation der Gleitkommaarithmetik Annahmen an die Gleitkommaarithmetik: • x op∗ y = (x op y)(1 + δ) • ln∗y = (1 + δ) ln y für ein für ein δ = δ(x, y) δ = δ(y) mit mit |δ| ≤ eps |δ| ≤ eps. Dann folgt: ln∗(1 +∗ x) = ln∗ [(1 + x)(1 + δ1)] = (1 + δ2) ln [(1 + x)(1 + δ1)] = (1 + δ2) ln(1 + x) + (1 + δ2) ln(1 + δ1) und damit für den relativen Fehler ∗ ln (1 +∗ x) − ln(1 + x) (1 + δ2) ln(1 + δ1) = δ 2 + ln(1 + x) ln(1 + x) | {z } groÿ für x klein (und δ1 6= 0) 3 Vorwärtsstabilität: Varianzbestimmung Alg I V = Alg II V = Vorteil von Formel (2): n n X 1 X 1 x= (xi − x)2, xi, n − 1 i=1 n i=1 ! 2 n n 1 X 2 1 X xi − xi n − 1 i=1 n i=1 (1) (2) 1 Datendurchgang anstelle von 2 (man denke an groÿe Datensätze!) Nachteil von Formel (2): Instabiler als (1) Beispiel: Ein n = 3, x1 = 10000, x2 = 10001, x3 = 10002. C-Programm V(1) = 1 D.g.: V = 1. mit single precision (alle Zahlen sind vom Typ oat) liefert: (korrekt!) und V(2) = −1.5 (sogar VZ ist falsch). 4 Vorwärtsstabilität: Varianzbestimmung (Forts.) n Alg I Alg II Alg I V = Alg II V = (xi) (xi) ϕI1 7→ ϕII 1 7→ (xi, x) P 2 P ( xi , xi) Stabilitätsind. Kond. der Addition x + y: n 1 X 1X 2 x= (xi − x) , xi, n − 1 i=1 n i=1 0 !2 1 n n X 2 1 X 1 @ xi − xi A n − 1 i=1 n i=1 ϕI2 7→ ϕII 2 7→ (xi − x) P 2 1 P 2 xi − n ( xi) σ I = 1 + κI3 + κI3 κI2 + κI3 κI2 κI1 , κrel = ϕI3 P 7 → (xi − x)2 II II σ II = 1 + κII 2 + κ2 κ1 |x| + |y| |x + y| 5 Vorwärtsstabilität: Varianzbestimmung (Forts.) Alg I Alg II (xi) (xi) ϕI 1 7→ ϕII 1 7→ (xi, x) P P ( x2i , xi) ϕI 2 7→ ϕII 2 7→ Kondition der Addition (xi − x) P 2 P xi − n1 ( xi)2 x + y: κrel ϕI 3 7→ P (xi − x)2 |x| + |y| = |x + y| Zahlenbeispiel: x = [10000; 10001; 10002], x = 10001, 2 i xi P ≈ 3 · 108 2 · 104 ≈ → σ = O(104) 1 2 · 3 · 108 II κrel(ϕ2 ) ≈ → σ = O(108) 2 κrel(ϕI2 ) In single precision (ca. 8 geltende Ziern) kann man also nicht erwarten, daÿ Alg II auch nur eine korrekte Zier liefert. 6