W I S S E N T E C H N I K L E I D E N S C H A F T Technische Numerik Einführung Peter Gangl Institut für Numerische Mathematik, Technische Universität Graz c Alle Rechte vorbehalten. Nachdruck und Weitergabe nur mit Genehmigung des Autors TU Graz, 04.10.2017 www.numerik.math.tugraz.at www.numerik.math.tugraz.at Motivation Numerical Computing gone wrong... 1996: Rakete Ariane 5 explodiert kurz nach Start aufgrund von overflow error 1991: Amerikanische Patriot-Rakete verfehlt eine anfliegende irakische Scud-Rakete wegen Rundungsfehlern 1991: Öl-Plattform Sleipner A nahe Stavanger (Norwegen) sinkt wegen ungenauer FEM-Simulation http://www-users.math.umn.edu/∼arnold/disasters/ Modellfehler 1940: Tacoma-Narrows Brücke (WA, USA) stürzt ein weil Einfluss von Wind im Modell vernachlässigt wurde https://youtu.be/3mclp9QmCGs ,→ Computerprogrammen nicht blind vertrauen, kritisch hinterfragen! 2 P. Gangl, Institut für Numerische Mathematik, Technische Universität Graz TU Graz, 04.10.2017 www.numerik.math.tugraz.at Beispiel für Zyklus vom Problem zur Lösung Anwendungsproblem Modell des Problems behandelbares mathematisches Problem mathematische Analyse (Existenz, Eindeutigkeit, . . . ) Konstruktion und Analyse numerischer Verfahren Implementierung Berechnung Interpretation und Anwendung der Ergebnisse Dabei handelt es sich um keine Einbahnstraße, vielmehr sollte eine Interaktion der einzelnen Schritte erfolgen. 3 P. Gangl, Institut für Numerische Mathematik, Technische Universität Graz TU Graz, 04.10.2017 www.numerik.math.tugraz.at Arten von Fehlern Programmier- oder Hardwarefehler Modellierungsfehler (wichtig bei der Bewertung der Ergebnisse) Eingangsfehler (Mess-)Datenfehler Eingabefehler (z.B. Rundung auf Maschinendarstellung) Fehler im Algorithmus Verfahrensfehler (z.B. Abbruch unendlicher Reihen, Diskretisierung usw.) Rundungsfehler Fehlerfortpflanzung 4 P. Gangl, Institut für Numerische Mathematik, Technische Universität Graz TU Graz, 04.10.2017 www.numerik.math.tugraz.at Kondition am Beispiel Geradenschnittpunkt y y x x z z Für |a| groß haben kleine Änderungen von x geringen Einfluss auf den Schnittpunkt. Der Fehler ist in der Größenordnung des Datenfehlers → gut konditioniert. 5 Für |a| klein haben kleine Änderungen von x großen Einfluss auf den Schnittpunkt. Schlechte Fehlerschranken im Verhältnis zum Eingabefehler → schlecht konditioniert. P. Gangl, Institut für Numerische Mathematik, Technische Universität Graz TU Graz, 04.10.2017 www.numerik.math.tugraz.at Werteverteilung M(2, 3, −2, 3) Exponenten: 2−2 = 14 , 2−1 = 12 , 20 = 1, 21 = 2, 22 = 4, 23 = 8. Mantisse ±100 Werte ± 12 ±101 ± ±110 ± ±111 ± 1 2 1 2 1 2 + + + 1 5 8 = ±8 1 3 4 = ±4 1 1 + 4 8 = ± 78 Zahlenstrahl der positiven Werte: Lücke 0 xmin 20 2−1 1 2 3 4 Werte sind nicht gleichmäßig verteilt. 6 P. Gangl, Institut für Numerische Mathematik, Technische Universität Graz TU Graz, 04.10.2017 xmax 5 6 7 www.numerik.math.tugraz.at Standardisiertes Format nach IEEE 754 prinzipiell: normalisierte Gleitpunktzahl zur Basis b = 2 Aufbau: s characteristic mantisse Bits single precision double precision Gesamt 32 64 s 1 1 characteristic 8 11 mantisse 23 52 s . . . Vorzeichen Besonderheiten: Characteristic hidden bit denormalisierten Zahlen 7 P. Gangl, Institut für Numerische Mathematik, Technische Universität Graz TU Graz, 04.10.2017 www.numerik.math.tugraz.at IEEE 754: Characteristic Um das Bit zur Speicherung des Vorzeichens des Exponenten e einzusparen, wird statt e die Characteristic c gespeichert mit ( e + 127 für single precision c = e + (2r −1 − 1) = e + 1023 für double precision mit r Bits für c ∈ N mit 0 ≤ c ≤ 2r − 1, r ∈ {8, 11}. Ausnahmen: c = 00 . . . 00: m = 00 . . . 00 entspricht ±0 c = 11 . . . 11 und m = 00 . . . 00: ±INF (z.B. für 1/0, log(0)) c = 11 . . . 11 und m 6= 00 . . . 00: NaN (Not a Number) z.B. 0/0, log(−1), 0/INF , INF /INF Somit bleibt für normalisierte ( Gleitpunktzahlen: 254 für single precision 1 ≤ c ≤ 2r − 2 = 2046 für double precision und 2 − 2r −1 ≤ e = c − (2r −1 − 1) ≤ 2r − 2 − (2r −1 − 1) = 2r −1 − 1 d.h. −126 ≤ e ≤ 127 bzw. −1022 ≤ e ≤ 1023. 8 P. Gangl, Institut für Numerische Mathematik, Technische Universität Graz TU Graz, 04.10.2017 www.numerik.math.tugraz.at IEEE 754: hidden Bit, denormalisierte Zahlen Da das erste Bit der Mantisse m für normalisierte Gleitpunktzahlen zur Basis 2 stets 1 ist, muss es nicht gespeichert werden (hidden bit). → Gewinn an Genauigkeit: x = (−1)s (1.m) 2e Um die Lücke um 0 zu “schließen”, werden denormalisierte Zahlen zugelassen mit c = 00 . . . 00 und m 6= 00 . . . 00, dabei muss das führende Bit nicht mehr 1 sein. Dann gilt: x = (−1)s (0.m) 22−2 r −1 . Allerdings besitzen diese Zahlen eine geringere Genauigkeit. 9 P. Gangl, Institut für Numerische Mathematik, Technische Universität Graz TU Graz, 04.10.2017 www.numerik.math.tugraz.at IEEE 754: Maschinengenauigkeit eps 1 < fl(1 + ε) = fl((1 + 0.mε )20 ) mit mε = 00 . . . 001 wobei 1 an der t-ten Stelle, dann wird noch aufgerundet. Somit: eps = 0.mε = 2−t . Überblick über wichtige Darstellungen: single precision (32 bit): b = 2, t = 24, emin = −126, emax = 127 double precision (64 bit):b = 2,t = 53,emin = −1022,emax = 1023 |xmin | (norm.) |xmin | (denorm.) |xmax | eps 10 single precision 2 ≈ 1 · 10−38 2−23 · 2−126 ≈ 5 · 10−45 (1 − 2−24 ) · 2128 ≈ 3 · 1038 2−24 ≈ 5.960 · 10−8 −126 P. Gangl, Institut für Numerische Mathematik, Technische Universität Graz TU Graz, 04.10.2017 double precision 2 ≈ 2 · 10−308 2−52 · 2−1022 ≈ 5 · 10−324 (1 − 2−53 ) · 21024 ≈ 2 · 10308 2−53 ≈ 1.110 · 10−16 −1022