Vorwärtsstabilität: Beispiele

Werbung
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
Herunterladen