Gleitkommaarithmetik und Pivotsuche bei Gauß

Werbung
Gleitkommaarithmetik und Pivotsuche bei Gauß-Elimination
Vorlesung
Computergestützte Mathematik zur Linearen Algebra
Lehrstuhl für Angewandte Mathematik
Wintersemester 2009/10
14. Januar 2010
Instabilitäten bei Gauß-Elimination
Beispiele:
◮
◮
0 1
A=
1 1
Division durch 0 im 1. Schritt, LR-Zerlegung existiert nicht
−20 10
1
A=
1
1
Pivotelement 10−20 =
6 0, LR-Zerlegung existiert
−20
1
0
10
1
L=
,
R=
1020 1
0
1 − 1020
richtig, wenn keine Rundefehler auftreten
Gleitkommaarithmetik
◮
Wie werden Zahlen im Rechner dargestellt?
◮
Welche Fehler können bei Grundrechenarten passieren?
◮
Wie kann man Instabilitäten im Gauß-Algorithmus vermeiden?
Gleitpunktdarstellung reeller Zahlen
x ∈ R, x 6= 0 kann eindeutig durch
x = ±a · 10b
dargestellt werden:
◮
a Mantisse, 0.1 ≤ a < 1
◮
b Exponent
Einschränkungen durch den Rechner:
◮
nur ℓ Ziffern für die Mantisse
◮
nur ℓ′ Ziffern für den Exponenten
hier zur Vereinfachung: ℓ′ = ∞
Gleitpunktdarstellung reeller Zahlen
sei a auf ℓ Ziffern gerundete Mantisse von x = ±a · 10b , so kann
nur mit
fl(x) = ±a · 10b
statt x gerechnet werden.
Beispiel: ℓ = 8, x = π = 3.141592653 . . .
fl(π) = 0.31415927 · 101
Definition. Die Maschinengenauigkeit eps ist die kleinste positive
Zahl für die
fl(1 + eps) > 1.
Dezimalsystem mit ℓ-stelliger Genauigkeit: eps = 5 · 10−ℓ ,
Binärsystem (Basis 2): eps = 2−ℓ (Matlab: ℓ = 52)
IEEE std 754 - 1985: Gleitkommazahlen
Standardisierung der Darstellung im Rechner durch IEEE:
single precision: 32 bit, double precision 64 bit
Genauigkeit
einfach = single
doppelt = double
Vorzeichen
1(31)
1(63)
Exponent
8(30-23)
11(62-52)
Mantisse
23(22-0)
52(51-0)
Eine Gleitkommazahl x wird dargestellt durch
x = s · m · be
◮
◮
◮
b Basis (b = 2)
e Exponent (8 bzw. 11 bits)
m Mantisse (23 bzw. 52 bits)
Damit ergibt sich
eps = 2−23 ≈ 1.2 · 10−7 bzw.
eps = 2−52 ≈ 2.2 · 10−16
In Matlab wird standardmäßig doppelt genau gerechnet.
Relative Fehler
Satz. Für jedes x 6= 0 ist
|fl(x) − x| ≤ eps|x|,
der relative Fehler ist also durch die Maschinengenauigkeit
beschränkt.
Beweis. Sei x = a · 10b und fl(x) = a · 10b . Bei ℓ signifikanten
Stellen ist |a − a| ≤ 5 · 10−l−1 , also
|fl(x) − x|
|a − a| · 10b
5 · 10−l−1
=
≤
= eps,
|x|
|a| · 10b
10−1
da a ≥ 10−1 .
Schreibe daher fl(x) = x(1 + ǫ) mit |ǫ| ≤ eps
Kondition eines Problems
Ein Problem sei durch Auswertung einer Abbildung F : Rn → R
beschrieben, wobei F z.B.
◮
Polynom
◮
rationale Funktion
◮
Lösung von Ax = b
◮
Lösung eines Eigenwertproblems Ax = λx
Wie wirken sich Störungen in den Eingabedaten x = (x1 , . . . , xn )
auf das Resultat F (x) aus?
Kondition eines Problems
Definition. Die relative Kondition κr von F ist die kleinste Zahl, für
die für eine Störung ǫ gilt
|b
xi − xi |
≤ǫ
|xi |
=⇒
|F (b
x ) − F (x)|
≤ κr · ǫ.
|F (x)|
Definition. Die absolute Kondition κa von F ist die kleinste Zahl,
für die für eine Störung ǫ gilt
|b
xi − xi | ≤ ǫ
=⇒
|F (b
x ) − F (x)| ≤ κa · ǫ.
Das Problem heißt gut konditioniert, falls κr und/oder κa nicht zu
groß ist und anderenfalls schlecht konditioniert.
Multiplikation zweier reeller Zahlen
Sei F (x1 , x2 ) = x1 x2 . Für die gestörten Werte
ist
b
x1 = x1 (1 + ǫ1 ),
b
x2 = x2 (1 + ǫ2 ),
|ǫi | ≤ eps
b
x2 − x1 x2
x1 b
= (1 + ǫ1 )(1 + ǫ2 ) − 1 = ǫ1 + ǫ2 + ǫ1 ǫ2 .
x1 x2
eps klein, vernachlässige ǫ1 ǫ2 :
b
x2 − x1 x2 x1 b
≤ 2eps.
x1 x2
damit: κr (F ) = 2, Multiplikation ist gut konditioniert.
Subtraktion zweier reeller Zahlen
Für F (x1 , x2 ) = x1 − x2 ist
(b
x2 ) − (x1 − x2 ) x1 ǫ1 − x2 ǫ2 |x1 | + |x2 |
x1 − b
= x1 − x2 ≤ |x1 − x2 | eps = κeps.
x1 − x2
◮
signx1 = −signx2 (Addition):
κr (F ) = 1, Problem gut konditioniert
◮
x1 ≈ x2 :
κr (F ) sehr groß, Subtraktion zweier etwa gleich großer Zahlen
ist sehr schlecht konditioniert (Auslöschung)
Beispiel bei eps = 10−16
A=
10−20 1
1
1
Pivotelement 10−20 6= 0, LR-Zerlegung von A existiert:
−20
1
0
10
1
L=
,
R=
1020 1
0
1 − 1020
damit
fl(L) = e
L=
damit
1
0
,
1020 1
−20
10
1
e
fl(R) = R =
0
−1020
−20 −20 10
1
10
1
e
e
LR =
6 A=
=
1
0
1
1
also
fl(L) = e
L=
1
0
,
1020 1
e=
fl(R) = R
10−20
1
0
−1020
−20 −20 10
1
1
e
e = 10
6 A=
=
LR
1
1
1
0
1
e
e
, so ergibt sich
löst man mit L und R das LGS Ax = b mit b =
0
1
e x = ye
(richtig) und dann aus Re
aus e
Le
y = b zunächst ye =
−1020
0
−1
die Lösung e
x=
(statt richtig x =
)
1
1
Spaltenpivotsuche
Problem. L-Faktor enthält großes Element.
Erinnerung: k − 1 Schritte Gauß-Elimination liefern

× · · · × α1 × · · ·

..
..
..

.
.
.


×
α
×
···
k−1
A → Ak−1 = 

αk
× ···


..
..

.
.
αn
× ···

×
.. 
.

×

×

.. 
.
×
Spaltenpivotsuche: wähle |αj | = max |αi | als Pivotelement.
k≤i≤n
damit: |ℓik | ≤ 1
Beispiel für n = 4

2
4
A=
8
6
Matlab-Demo: lrdemo



1
0 0 1 0
3 1
0 0 0 1

4

0 1 0 0 A =  1 − 2
2
7
1
3
1 0 0 0
−
4
7
1
3
7
7
1
3
9
9

0
1

5
8

8 7 9
9
7

4
4

1 
− 76
1
3 1
5

17 
4 
− 27 
2
3
Gauß-Elimination mit Spaltenpivotsuche
nach n − 1 Schritten Gauß-Elimination:
Ln−1 Pn−1 · · · L2 P2 L1 P1 A = R
mit Permutationsmatrizen P1 , . . . , Pn−1 oder
Ln−1 Pn−1 · · · L2 P2 L1 P1 = (L′n−1 · · · L′2 L′1 )(Pn−1 · · · P2 P1 ) =: L−1 P
mit
−1
−1
L′k = Pn−1 · · · Pk+1 Lk Pk+1
· · · Pn−1
wichtig: Pj führt nur Vertauschungen zwischen Zeilen j und m mit
m > j durch, daher bleibt die Struktur von Lk unverändert,
lediglich die Elemente unterhalb der Diagonalen werden permutiert
LR-Zerlegung mit Spaltenpivotsuche
Satz. Jede nichtsinguläre Matrix A ∈ Kn,n hat eine Zerlerung
PA = LR mit
1. P Permutationsmatrix
2. L untere Dreiecksmatrix mit ℓi,i = 1 und |ℓj,k | ≤ 1
3. R obere Dreiecksmatrix mit rj,j 6= 0
Anwendung: Lösung linearer Gleichungssysteme
Ax = b ⇐⇒ PAx = Pb
⇐⇒ LRx = Pb
⇐⇒ Ly = Pb,
Rx = y
Stabilität
Definition: Ein Verfahren zur Berechnung von y = F (x) heißt
stabil im Sinne der Vorwärtsanalyse, falls bei einer
Rechengenauigkeit von eps für das berechnete Resultat ŷ
|ŷ − y |
≤ C κr eps
|y |
für eine nicht zu große Konstante C gilt.
Stabilität
Definition: Ein Verfahren zur Berechnung von y = F (x) heißt stabil
im Sinne der Rückwärtsanalyse, falls bei einer Rechengenauigkeit
von eps das berechnete Resultat ŷ als exakte Lösung eines leicht
gestörten Problems aufgefasst werden kann, d.h. ŷ = F (x̂), mit
|x̂ − x|
≤ C eps
|x|
für eine nicht zu große Konstante C gilt.
Herunterladen