1. Rechnerzahlen, Kondition, Stabilität 1 1.1. Rechnerzahlen 2 1.2. Kondition 3 1.3. Stabilität 1. Rechnerzahlen, Kondition, Stabilität 1 / 18 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 2 / 18 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 := P` k =1 ak b −k 1. Rechnerzahlen, Kondition, Stabilität 3 / 18 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 , xmax ≈ 1.80 10+308 1. Rechnerzahlen, Kondition, Stabilität 4 / 18 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 5 / 18 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 ⇒ x = ( (0.a1 . . . a` z`+1 . . . )b ) be z`+1 erste wegfallende Ziffer a be , (a + b−` )be , rd(x) := 0, NaN, falls z`+1 < 21 b (abrunden) falls z`+1 ≥ 21 b (aufrunden) falls |x| < xmin (underflow) falls |x| > xmax (overflow) 1. Rechnerzahlen, Kondition, Stabilität 6 / 18 Rundungsfehler Definition (relative Rundungsgenauigkeit) Zu gegebenem x ∈ R mit x 6= 0 heißt εx := rd(x) − x x relative Rundungsgenauigkeit von x. Für x = 0 sei εx := 0, da 0 ∈ G. Genauigkeit der Rundung: Theorem 1.2 ⇒ |εx | ≤ ε = 1 1−` b ≈ 10−16 beim 2 IEEE-Standard Bemerkung: εx = 0.12 bedeutet „12 % Rundungsfehler“ 1. Rechnerzahlen, Kondition, Stabilität 7 / 18 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) und (a ⊕ b) c 6= a c ⊕ b c 1. Rechnerzahlen, Kondition, Stabilität 8 / 18 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 9 / 18 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 q y = f (x1 , x2 ) = x1 − x12 − x2 R1 y = f (x1 , x2 ) = 0 sin(x1 t 2 + x2 ) dt 1. Rechnerzahlen, Kondition, Stabilität 10 / 18 Fehlerquellen Eingangsdaten x ∈ Rn ⇑ ⇒ berechne Lsg. y = f (x) ⇒ Eingangsfehler ∆x = x − x̃ exakte Lsg. y ∈R ⇓ Resultatsfehler ∆y = y − ỹ Beispiele: Messfehler 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 ⇒ ∆xj = 1 −` 10 3 11 / 18 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 := x12 + · · · + xn2 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 12 / 18 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 k∆xk/kxk auf den relativen Resultatsfehler k∆y k/ky k mit ỹ = f (x̃) , d.h. Kf (x) := sup ∆x∈E k∆y k/ky k k∆xk/kxk wobei E = Menge der möglichen Eingangsfehler (6= 0) und ky k := |y | . Folgerung : k∆y k kf (x) − f (x̃)k ≤ Kf (x) · = | {z } ky k kf (x)k | {z } Kondition rel. Resultatsfehler 1. Rechnerzahlen, Kondition, Stabilität kx − x̃k kxk | {z } rel. Eingangsfehler 13 / 18 Beispiel für schlechte Kondition Problem : berechne y = f (x) = √ √ 2 − x für x = 2 − δ , wobei 0 < δ < 0.1 klein sei x̃ = x + ∆x fehlerhafter Eingangswert |∆x| < |∆x| rel. Eingangsfehler e=√ 2−δ relativer Resultatsfehler √ √ |y − ỹ | |( 2 − x) − ( 2 − x̃)| |∆x| √ √ r= = = |y | δ | 2 − ( 2 − δ)| ⇒ Kf (x) = sup ∆x∈E r |∆x|/δ 1 ≥ = e |∆x| δ ⇒ große Fehlerverstärkung für kleines δ („Auslöschung“) ⇒ Subtraktion von fast gleichen Zahlen i.a. schlecht konditioniert 1. Rechnerzahlen, Kondition, Stabilität !! 14 / 18 Berechnung relativer Konditionszahlen Problem: berechne y = f (x) , x = (x1 , . . . , xn ), f : Rn → R Frage: wie wirken sich fehlerhafte Eingangsdaten x̃j = xj + ∆xj , j = 1, . . . , n aus auf den relativen Resultatsfehler εrel = kf (x + ∆x) − f (x)k kf (x)k Ergebnis: εrel n X xj ∂f ∆xj ≈ f (x) ∂x (x) · x j j 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 15 / 18 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 16 / 18 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 17 / 18 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 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 = √ y= 1 √ 1 + 1 + x2 v2 ⇒ v4 = v3 + 1 ⇒ y = 1/v4 siehe Übungsaufgabe !! 1. Rechnerzahlen, Kondition, Stabilität 18 / 18