1. Rechnerzahlen, Kondition, Stabilität 14. April 2016 1 1.1. Rechnerzahlen 2 1.2. Kondition 3 1.3. Stabilität 1. Rechnerzahlen, Kondition, Stabilität 1 1.1. Rechnerzahlen allgemeine Zahlendarstellung zur Basis b: jedes x ∈ R hat eine exakte (ggf. unendliche) Darstellung x=s ∞ X ak b−k be k=1 wobei s ∈ {−1, +1} Vorzeichen ak ∈ {0, 1, . . . , b − 1} Ziffern b≥2 Basis (z.B. 10, 2, 16) e∈Z Exponent 1. Rechnerzahlen, Kondition, Stabilität 1.1. Rechnerzahlen 2 normalisierte Gleitpunktzahlen Definition (1.1) Menge der normalisierten Gleitpunktzahlen (Rechnerzahlen) G = G(b, `, Emin , Emax ) zur Basis b, mit Mantissenlänge ` und Exponentenschranken Emin < 0 < Emax ist definiert als Menge aller Zahlen x mit der Darstellung x=s ` X ak b−k be mit s ∈ {−1, +1}, ak ∈ {0, . . . , b − 1}, a1 6= 0, k=1 Emin ≤ e ≤ Emax , e ∈ Z und der Zahl 0. Schreibweise: (0.a1 a2 . . . a` )b := 1. Rechnerzahlen, Kondition, Stabilität P` −k k=1 ak b 1.1. Rechnerzahlen 3 Das Gitter der Rechnerzahlen !! Auf jedem Rechner kann man nur endlich viele Zahlen darstellen !! darstellbarer Bereich D (sei B := b − 1) x = a be > 0 ⇒ xmin = (0.10 . . . 0)b bEmin = bEmin −1 ⇒ xmax = (0.BB . . . B)b bEmax = bEmax (1 − b−` ) also G ⊂ D := [−xmax , −xmin ] ∪ {0} ∪ [xmin , xmax ] Beispiel : double precision numbers (IEEE-Standard) G = G(b, `, Emin , Emax ) = G(2, 53, −1021, 1024) Eine Rechnerzahl x ∈ G beansprucht 64 Bit = 8 Byte. xmin ≈ 2.23 10−308 , 1. Rechnerzahlen, Kondition, Stabilität xmax ≈ 1.80 10+308 1.1. Rechnerzahlen 4 relative Genauigkeit der Gleitpunkt-Darstellung Theorem (1.2.) Voraussetzung: • G = G(b, `, Emin , Emax ) • x ∈ R, Behauptung: min x̃∈G xmin ≤ |x| ≤ xmax |x − x̃| 1 ≤ b1−` =: ε |x| 2 Beispiel: "relative Maschinengenauigkeit" ε beim IEEE-Standard b = 2, ` = 53 ⇒ ε = 2−53 ≈ 1.11022 e − 16 Man beachte: ε 6= Matlab-Konstante eps = 2−52 = Abstand zwischen 1 und der nächst größeren Rechnerzahl 1. Rechnerzahlen, Kondition, Stabilität 1.1. Rechnerzahlen 5 Die Rundung Ziel: zu jeder Zahl x ∈ R eine Rechnerzahl rd(x) ∈ G finden mit |x − rd(x)| = min |x − x̃| x̃∈G Intervallschachtelung: sei e so dass betrachten nur den Fall x > 0 x ∈ [be−1 , be [ sei x̃1 = a be so dass x ∈ [x̃1 , x̃1 + b−` be [, a = (0.a1 a2 . . . a` )b e ⇒ x = ( (0.a1 . . . a` z`+1 . . . )b ) b z`+1 erste wegfallende Ziffer rd(x) := a be , falls z`+1 < 12 b (abrunden) (a + b−` )be , falls z`+1 ≥ 1 b (aufrunden) 2 0, NaN, 1. Rechnerzahlen, Kondition, Stabilität falls |x| < xmin (underflow) falls |x| > xmax (overflow) 1.1. Rechnerzahlen 6 Rundungsfehler Definition (relativer Rundungsfehler) Zu gegebenem x ∈ R mit x 6= 0 heißt εx := rd(x) − x x relativer Rundungsfehler von x. Für x = 0 sei εx := 0, da 0 ∈ G. Genauigkeit der Rundung: Theorem 1.2 ⇒ 1 |εx | ≤ ε = b1−` ≈ 10−16 beim IEEE-Standard 2 Bemerkung: εx = 0.12 bedeutet 1. Rechnerzahlen, Kondition, Stabilität "12 % Rundungsfehler" 1.1. Rechnerzahlen 7 Maschinenoperationen auf dem Computer wird jede arithmetische Grundoperation ∗ ∈ {+, −, ·, /} mit ∗:R×R→R durch eine entsprechende Maschinenoperation ersetzt: ~ ∈ {⊕, , , } mit ~:G×G→G Realisierung durch: ( a ~ b := rd(a ∗ b), falls |a ∗ b| ≤ xmax NaN (not a number), falls |a ∗ b| > xmax Man beachte: i.a. sind Rechengesetze verletzt, d.h. (a ⊕ b) ⊕ c 6= a ⊕ (b ⊕ c) 1. Rechnerzahlen, Kondition, Stabilität und (a ⊕ b) c 6= a c ⊕ b c 1.1. Rechnerzahlen 8 Realisierung mathematischer Funktionen auf dem Computer werden auch elementare math. Funktionen √ f : R → R, z.B f (x) = sin(x), f (x) = ex , f (x) = x näherungsweise dargestellt durch: f ≈ f˜ : G → G Realisierung durch: ( f˜(x) := rd(f (x)), falls |f (x)| ≤ xmax NaN (not a number), falls |f (x)| > xmax + endliche Stellengenauigkeit 1. Rechnerzahlen, Kondition, Stabilität 1.1. Rechnerzahlen 9 1.2. Kondition eines Problems Definition (Problem) Unter einem Problem verstehen wir im folgenden die Aufgabe, aus einem gegebenen Vektor von Daten x ∈ Rn ein Resultat y ∈ R nach einer Vorschrift f : Rn → R , d.h. y = f (x), zu berechnen. Beispiele: f : R2 → R, f: R2 → R, f: R2 → R, y = f (x1 , x2 ) = x1 − x2 p y = f (x1 , x2 ) = x1 − x21 − x2 R1 y = f (x1 , x2 ) = 0 sin(x1 t2 + x2 ) dt 1. Rechnerzahlen, Kondition, Stabilität 1.2. Kondition 10 Fehlerquellen Eingangsdaten x ∈ Rn ⇑ ⇒ berechne Lsg. y = f (x) ⇒ exakte Lsg. y∈R ⇓ Resultatsfehler 4y = y − ỹ Eingangsfehler 4x = x − x̃ Beispiele: Meßfehler Rundung von xj ∈ R auf Rechnerzahl x̃j = rd(xj ) ∈ G Bsp. : xj = 1 = 0.3̄ ≈ 0. 33 . . . 3} = x̃j | {z 3 ` - Stellen 1. Rechnerzahlen, Kondition, Stabilität ⇒ 1 4xj = 10−` 3 1.2. Kondition 11 absoluter und relativer Fehler Definition (absoluter und relativer Fehler) Sei x̃ ∈ Rn eine Näherung von x ∈ Rn . Dann heißt εabs := kx̃ − xk absoluter Fehler der Näherung x̃ εrel := kx̃−xk kxk relativer Fehler der Näherung x̃ (Vor. x 6= 0), wobei kxk die Norm des Vektors x bezeichnet z.B. q kxk = kxk2 := x21 + · · · + x2n oder kxk = kxk∞ := max |xj |. 1≤j≤n Beispiele: x = 3000, x̃ = 3060 : εabs = 60 groß, εrel = 0.02 ∼ 2 % x = 0.003, x̃ = 0.0036 : εabs = 0.0006 klein, εrel = 0.2 ∼ 20 % 1. Rechnerzahlen, Kondition, Stabilität 1.2. Kondition 12 Kondition eines Problems Definition (Kondition eines Problems) Die Kondition Kf (x) eines Problems y = f (x) ist der größte auftretende Verstärkungsfaktor für den Einfluß des relativen Eingangsfehlers k4xk/kxk auf den relativen Resultatsfehler k4yk/kyk mit ỹ = f (x̃) , d.h. Kf (x) := sup 4x∈E k4yk/kyk k4xk/kxk wobei E = Menge der möglichen Eingangsfehler (6= 0) und kyk := |y| . Folgerung : k4yk kf (x) − f (x̃)k = ≤ Kf (x) · kyk kf (x)k | {z } | {z } Kondition rel. Resultatsfehler 1. Rechnerzahlen, Kondition, Stabilität kx − x̃k kxk | {z } rel. Eingangsfehler 1.2. Kondition 13 Beispiel für schlechte Kondition Problem : berechne y = f (x) = √ 2 − x für x = √ 2−δ , wobei 0 < δ < 0.1 klein sei x̃ = x + 4x fehlerhafter Eingangswert |4x| rel. Eingangsfehler e= √ < |4x| 2−δ relativer Resultatsfehler √ √ |y − ỹ| |( 2 − x) − ( 2 − x̃)| |4x| √ √ r= = = |y| δ | 2 − ( 2 − δ)| |4x|/δ 1 r ≥ = ⇒ Kf (x) = sup e |4x| δ 4x∈E ⇒ große Fehlerverstärkung für kleines δ ("Auslöschung") ⇒ Subtraktion von fast gleichen Zahlen i.a. schlecht konditioniert 1. Rechnerzahlen, Kondition, Stabilität 1.2. Kondition !! 14 Berechnung relativer Konditionszahlen Problem: berechne y = f (x) , x = (x1 , . . . , xn ), f : Rn → R Frage: wie wirken sich fehlerhafte Eingangsdaten x̃j = xj + 4xj , j = 1, . . . , n aus auf den relativen Resultatsfehler εrel = f (x + 4x) − f (x) f (x) Ergebnis: εrel n X xj ∂f 4xj ≈ (x) · f (x) ∂xj xj j=1 | {z } | {z } =:kj (x) =εj kj (x) = Verstärkungsfaktor des rel. Eingangsfehlers εj von xj die kj (x) heißen relative Konditionszahlen des Problems 1. Rechnerzahlen, Kondition, Stabilität 1.2. Kondition 15 Begriff: schlecht konditioniert Definition (Konditionierung eines Problems) Problem berechne y = f (x) heißt schlecht konditioniert, wenn k(x) := max |kj (x)| >> 1, 1≤j≤n sonst heißt es gut konditioniert. 1. Rechnerzahlen, Kondition, Stabilität 1.2. Kondition 16 1.3. Stabilität eines numerischen Verfahrens Definition (1.3) Ein numerisches Verfahren heißt instabil, wenn es die relativen Eingangsfehler wesentlich mehr verstärkt als die Kondition des Problems. Es heißt stabil, wenn die relativen Eingangsfehler in gleicher Größenordnung verstärkt werden wie durch die Kondition des Problems. Man beachte: hat ein Problem eine schlechte Kondition, so kann dies niemals durch ein numerisches Verfahren behoben werden aber: auch bei einem gut konditionierten Problem kann ein numerisches Verfahren eine extreme Fehlerverstärkung aufweisen (siehe folgendes Beispiel . . . ) 1. Rechnerzahlen, Kondition, Stabilität 1.3. Stabilität 17 Beispiel für stabiles und instabiles numer. Verfahren √ Problem : zu geg. x > 0 berechne y = f (x) := √ Verfahren A : nach Formel y = 1 + x2 − 1 x2 u1 = x ∗ x ⇒ u2 = u1 + 1 ⇒ u3 = √ u2 ⇒ u4 = u3 − 1 ⇒ y = u4 /u1 Verfahren B : nach äquivalenter Formel v1 = x ∗ x ⇒ v2 = v1 + 1 ⇒ v3 = 1 + x2 − 1 x2 √ y= 1 √ 1 + 1 + x2 v2 ⇒ v4 = v3 + 1 ⇒ y = 1/v4 siehe Übungsaufgabe !! 1. Rechnerzahlen, Kondition, Stabilität 1.3. Stabilität 18