Fakultät für Mathematik und Informatik TU Bergakademie Freiberg W. Queck 14. Oktober 2015 Numerische Mathematik Einführende Beispiele, Gleitpunktarithmetik ============ Teil B – Hauptteil ========================= Aufgabe 1 Gegeben sind die Zahlen x = 40545 und y = 70226. Berechnen Sie mit einem Taschenrechner oder auf einem PC den Ausdruck z1 = 9x4 − y 4 + 2y 2 . Benutzen Sie, falls möglich, verschiedene Rechner. Gibt es Unterschiede? Wenn ja, geben Sie eine Begründung! Geben Sie einen mathematisch äquivalenten Ausdruck z2 zur Berechnung von 9x4 − y 4 + 2y 2 an und wiederholen Sie dafür Ihre Experimente. Falls es Unterschiede gibt, versuchen Sie, diese zu begründen. Aufgabe 2 Für die erste Ableitung der Funktion y = f (x) = ex an den Stellen x = 0 und x = 1 berechne man Näherungen über einen vorderen Differenzenquotienten δv f (x, h) = f (x + h) − f (x) h und einen zentralen Differenzenquotienten δz f (x, h) = f (x + h) − f (x − h) 2h mit verschiedenen Schrittweiten h (h = 10−1 , 10−2 , . . . , 10−16 ) und vergleiche mit den exakten Werten f 0 (0) = 1 und f 0 (1) = e. Aufgabe 3 Beweisen Sie mit Hilfe einer Taylor-Entwicklung die folgenden Aussagen: a) Ist f in I := [a, b] ⊂ R zweimal stetig differenzierbar, so gilt f (x0 + h) − f (x0 ) = f 0 (x0 ) + Ch h mit |C| ≤ 1 2 maxx∈I |f 00 (x)|. b) Ist f in I := [a, b] ⊂ R dreimal stetig differenzierbar, so gilt f (x0 + h) − f (x0 − h) = f 0 (x0 ) + Ch2 2h mit |C| ≤ 1 6 maxx∈I |f 000 (x)|. c) Ist f in I viermal stetig differenzierbar, so gilt f (x0 + h) − 2f (x0 ) + f (x0 − h) = f 00 (x0 ) + Ch2 h2 mit |C| ≤ 1 12 maxx∈I |f (4) (x)|. (Natürlich wird hier immer vorausgesetzt, dass die auftretenden Argumente von f im Intervall I enthalten sind.) Numerische Effekte ============ 2 Programmieraufgaben ====================== Aufgabe 4 Ein auf Archimedes (250 v. Chr.) zurückgehender Algorithmus berechnet Näherungen für die Kreiszahl π durch Approximation des Umfangs eines Kreises vom Radius r = 1/2 durch den Umfang Un einbeschriebener regelmäßiger n-Ecke. Setzt man An := U2n , so gilt die Rekursionsformel v s u 2 u An u . An+1 = 2n t2 1 − 1 − 2n Dabei gilt die Fehlerabschätzung π3 . 6 · 4n a) Bestimmen Sie, wieviele Rekursionsschritte n durchgeführt werden müssen, um eine vorgegebene Genauigkeit für |An − π| zu erreichen. |An − π| ≤ b) Schreiben Sie ein m-File, welches diese Rekursion realisiert und überprüfen Sie dabei, ob die Fehlerabschätzung erfüllt ist. c) Schreiben Sie ein weiteres m-File, in dem die Rekursion ”stabilisiert” wurde (siehe NumerikVorlesung) und überprüfen Sie erneut die Gültigkeit der Fehlerabschätzung. Aufgabe 5 Laden Sie das m-File floatgui2.m herunter, welches die positiven Zahlen eines Gleitpunktsystems zur Basis 2 mit den Kenngrößen Mantissenlänge t, kleinster Exponent emin, größter Exponent emax graphisch darstellt.. a) Starten Sie floatgui2 und experimentieren Sie mit dem Programm. Reproduzieren Sie das ”Spielzeugbeispiel” der Vorlesung. b) Modifizieren Sie floatgui2.m, indem Sie die Aufgabe am Ende des m-Files lösen (letzte Zeile auskommentieren und ??? durch einen korrekten Ausdruck ersetzen). c) Wieviele normalisierte bzw. denormalisierte enthält ein Gleitpunktsystem? Wie lauten die Zahlen für die Formate IEEE Single und IEEE Double? d) Wieviele Gleitpunktzahlen vom Format IEEE Double liegen zwischen zwei benachbarten Gleitpunktzahlen vom Format IEEE Single? Aufgabe 6 a) Informieren Sie sich über die vordefinierten Matlab-Konstanten eps eps(’double’) realmax realmax(’double’) realmin realmin(’double’) intmax(typ ) intmin(typ ) eps(’single’) realmax(’single’) realmin(’single’) wobei für typ die Strings ’int8’, ’int16’, ’int32’, ’int64’, ’uint8’, ’uint16’, ’uint32’, ’uint64’ stehen können. b) Was leisten die folgenden Programsequenzen? Wie viele Ausgabezeilen werden produziert? Welches sind die beiden letzten Werte, die für x ausgegeben werden? x=1; while 1+x > 1, x = x/2, pause(0.2), end x=1; while x+x > x, x = 2*x, pause(0.2), end x=1; while x+x > x, x = x/2, pause(0.2), end