62 §5 Numerische Mathematik Die ’Numerische Mathematik’ setzt sich aus mehreren Einzelmodulen zusammen. Für alle Studierenden ist das Modul ”Numerische Mathematik I: Grundlagen” verpflichtend. In diesem Modul lernen Sie sowohl numerische Verfahren kennen, die sich auf Ergebnisse aus der Linearen Algebra als auch auf Ergebnisse aus der Analysis beziehen. a) Numerische Lineare Algebra In der Linearen Algebra lernen Sie den Gauß-Algorithmus kennen, mit dem man lineare Gleichungssysteme lösen kann. In der Numerik-Vorlesung wird darauf eingegangen, welche Vorkehrungen getroffen werden müssen, damit die (theoretisch zu erzielenden) Ergebnisse auch numerisch, d.h. im Rahmen der Rechengenauigkeit sinnvoll sind. Wir rechnen mit einer endlichen Menge von Zahlen; in der Regel sind dies die sog. Gleitpunktzahlen des Rechners. Definition Gleitpunktzahlen sind die 0 und alle Zahlen z = ± m · 10i , wobei m= t ! k=1 ak · 10−k ein endlicher Dezimalbruch mit m != 0, Ziffern ak ∈ {0, 1, . . . , 9} und i ∈ Z aus dem Intervall I = [−I1 , I2 ] ⊂ Z ist. Die Zahl i sei dabei so gewählt, dass a1 != 0 ist (d.h. 0 ≤ m < 1 gilt). m heißt Mantisse, i Exponent von z. Die Menge aller Gleitpunktzahlen mit diesen Parametern bezeichnen wir mit F (10, t, I1 , I2 ). Betrachten wir z.B. F (10, 3, 10, 10), so sind für m alle Zahlen mit 3 Stellen nach dem Komma, wobei die führende Ziffer von Null verschieden ist, also alle Zahlen der Form 0.100, 0.110, . . . , 0.999 möglich und damit für z alle Zehner-Potenzen hiervon mit den Faktoren 10−10 bis 1010 . Die Zahl 9999 ist in F (10, 3, 10, 10) nicht darstellbar. Sie muss zu der nächstgelegenen Zahl aus F (10, 3, 10, 10) ”gerundet” werden. Dies ist die Zahl 105 · 10−1 = 0.100 · 105 . Dafür schreibt man (104 − 1)R = 0.100 · 105 . Die Zahl 104 − 2 ist ebenfalls in F (10, 3, 10, 10) nicht darstellbar; für sie gilt auch (104 − 2)R = 0.100 · 105 . Betrachten wir nun das folgende Gleichungssystem in F (10, 3, 10, 10): (I) 0.100 · 10−3 x1 + 0.100 · 101 x2 = 0.100 · 101 (II) 0.100 · 101 x1 + 0.100 · 101 x2 = 0.200 · 101 Als exakte Lösung erhalten wir: x1 = 104 104 − 1 und x2 = 104 − 2 104 − 1 Ein Programm möge folgendermaßen arbeiten: Gleichung (I) werde mit 104 multipliziert, und davon wird Gleichung (II) subtrahiert. Man erhält: (I’) x1 + 104 · x2 = 104 63 (II) x1 + x2 = 2 Also (I’) - (II) exakt: (II’) (104 − 1) x2 = 104 − 2 Aber in F (10, 3, 10, 10) wird folgendermaßen gerechnet: (104 − 1)R · x2 = (104 − 2)R , also woraus 0.100 · 105 x2 = 0.100 · 105 (Auslöschung signifikanter Stellen), x2 = 1 folgt. Setzt man in Gleichung (I) ein, so folgt: 0.100 · 10−3 x1 + 0.100 · 101 · 1 = 0.100 · 101 , also x1 = 0 . Über solche Phänomene muss man sich bei dem Einsatz des Gauß-Algorithmus im Klaren sein. Es gibt Möglichkeiten, dies zu verhindern. Der Gauß-Algorithmus ist ein direktes Verfahren zur Lösung linearer Gleichungssysteme; man kann solche Gleichungssysteme auch iterativ lösen. Dazu schreibt man z.B. die Koeffizientenmatrix des Gleichungssystems A·x=b mit einer quadratischen (m × m)-Matrix A in der Form A=L+D+R mit einer echten unteren Dreiecksmatrix L, 0 0 ... a21 0 ... L = .. . .. .. . . am1 . . . am,m−1 0 0 .. . 0 einer invertierbaren Diagonalmatrix D a11 . . . 0 .. D = ... . . . . 0 . . . amm und einer echten oberen Dreiecksmatrix R 0 a12 . . . a1m .. . . . . .. . . . R= . 0 . . . 0 am−1,m 0 ... 0 0 . 64 Dann schreibt man das Gleichungssystem in der Form D · x = b − (L + R) · x ⇔ x = −D−1 (L + R) · x + D−1 · b . Mit diesem Ansatz definiert man mit einem beliebigen Startwert x(0) rekursiv eine Folge (x(n) )n≥0 durch x(n+1) = −D−1 (L + R) · x(n) + D−1 · b . Unter geeigneten Voraussetzungen an die Matrix −D−1 (L + R) erhalten wir eine konvergente Folge (x(n) )n≥0 im Rm . Notwendig und hinreichend für die Konvergenz des Verfahrens ist, dass der betragsgrößte Eigenwert der sog. Iterationsmatrix −D−1 (L + R) kleiner als 1 ist. Hier sieht man, dass Kenntnisse aus der Linearen Algebra (Eigenwerte von Matrizen) und aus der Analysis (Konvergenz) erforderlich sind. Ein anderes Thema in der Numerik ist die iterative Berechnung von Eigenwerten von Matrizen und die Abschätzung von Eigenwerten. b) Nichtlineare Gleichungen und Gleichungssysteme Wenn man sich an dem Newton-Verfahren zur Bestimmung von Nullstellen differenzierbarer Funktionen (unter geeigneten Voraussetzungen) orientiert, erhält man ein Verfahren, das zur Nullstellenbestimmung von nichtlinearen Gleichungen und Gleichungssystemen geeignet ist. Wie läuft das Newton-Verfahren ab? Wir starten in der Nähe einer Nullstelle, sagen wir x0 , und ersetzen den Graphen der Funktion f , von der wir eine Nullstelle berechnen wollen, durch die Tangente an den Graphen im Punkt (x0 , f (x0 )). Der Schnittpunkte der Tangente mit der x-Achse wird dann als neue Näherung genommen. Die Tangentengleichung lautet: y = f (x0 ) + f # (x0 )(x − x0 ) Der Schnittpunkt mit der x-Achse ist x1 = x0 − f (x0 ) ; f # (x0 ) hieraus resultiert das Iterationsverfahren xn+1 = xn − f (xn ) −1 = xn − (f # (xn )) · f (xn ), f # (xn ) das unter geeigneten Forderungen an f konvergiert. Dieses Verfahren wird auch eingesetzt zur Nullstellenbestimmung von Funktionen f : Rn → Rn , d.h. von Abbildungen x1 f1 (x1 , . . . , xn ) .. .. . → f (x) = . xn fn (x1 , . . . , xn ) Dabei ist (f # (xn ))−1 die Inverse der Funktionalmatrix der Abbildung f . Wie man eine Funktionalmatrix berechnet, lernt man im Grundlagenmodul ’Analysis’, wie man die Inverse einer quadratischen Matrix berechnet, lernt man im Grundlagenmodul ’Lineare Algebra’. 65 c) Interpolation und Integration Will man einem ’krummlinig’ begrenzten Flächenstück eine Flächenmaßzahl zuordnen, so wird man auf die Fragestellung der Integration geführt; als einfachste Situation betrachtet man ein Flächenstück, das durch die x-Achse, zwei Parallelen zur y-Achse durch die Punkte (a, 0) und (b, 0) mit a < b und den Graphen einer nichtnegativen, beschränkten Funktion f : [a, b] → R begrenzt wird. In manchen Situationen gibt es zu f eine sog. Stammfunktion F mit F # = f ; dann gilt für die gesuchte Flächenmaßzahl µ(f )ba : µ(f )ba = F (b) − F (a) . Häufig gibt es zu f keine, in elementarer Form darstellbare Funktion F ; dann ist man dazu gezwungen, die Zahl µ(f )ba näherungsweise zu berechnen; das ist Thema der numerischen Integration. Dazu unterteilt man das zugrundeliegende Intervall [a, b] in äquidistante Teilintervalle [xi , xi+1 ] mit xi+1 − xi = h = b−a , d.h. n a = x0 < x1 < . . . < xn−1 < xn = b . x Als Ersatz für die Flächenmaßzahl µ(f )xi+1 wählen wir die Rechteckfläche mit dem Inhalt i h Mi = h · f (xi + ) 2 und damit als Ersatz für µ(f )ba die Näherung Mh (f ) = n−1 ! i=0 n−1 ! h h h · f (xi + ) = h · f (xi + ) . 2 2 i=0 Dies ist die Mittelpunktregel. Statt der Rechteckfläche können wir auch die Trapezfläche mit den Eckpunkten (xi , 0), (xi+1 , 0), (xi+1 , f (xi+1 )), (xi , f (xi )) betrachten, und erhalten Ti = sowie h · (f (xi ) + f (xi+1 )) 2 n−1 ! h h Th (f ) = f (a) + h f (xi ) + f (b) . 2 2 i=1 Dies ist die Trapezregel. In Abhängigkeit von der Glattheit der Funktion f kann man angeben, wie groß der Fehler ist, wenn man die ’exakte Flächenmaßzahl’ µ(f )ba durch Mh (f ) bzw. Th (f ) ersetzt. Natürlich kann man noch viele andere Ersatzmöglichkeiten angeben. Man kann die näherungsweise Integration auch folgendermaßen auffassen: wir ersetzen im Fall der Mittelpunkt-Regel die gegebene Funktion f durch die stückweise konstante Funktion g mit ( ) h g0 (x) = f xi + für x ∈ [xi , xi+1 ] 2 und berechnen dann µ(g0 )ba = Mh (f ). Im Fall der Trapez-Regel ersetzen wir f durch die stückweise lineare Funktion h mit g1 (x) = f (xi ) + f (xi+1 − f (xi ) (x − xi ) für x ∈ [xi , xi+1 ] . h 66 Es entsteht ein Polygonzug durch die Punkte (a, f (a)), (x1 , f (x1 )), . . . , (xn−1 , f (xn−1 )), (b, f (b)) , und es gilt µ(g1 )ba = Th (f ) . Ist die gegebene Funktion f strikt konvex, d.h. gilt f ## (x) > 0 für alle x ∈ [a, b], so ist Th (f ) immer größer als die gesuchte Flächenmaßzahl µba . Ersetzen wir aber auf dem Teilintervall [xi , xi+1 ] die Funktion durch eine Parabel durch die Punkte h h (xi , f (xi )), (xi + , f (xi + )), (xi+1 , f (xi+1 )) , 2 2 so erhalten wir die Funktion g2 mit *( ( )) ( ) 2 h h g2 (x) = 2 x − xi + (x − xi+1 )f (xi ) + 2(x − xi )(x − xi+1 )f xi + h 2 2 ( ( )) + h (x − xi )f (xi+1 ) . + x − xi + 2 Die Aufgabe, zu n + 1 paarweise verschiedenen vorgegebenen Punkten x0 , . . . , xn ein Polynom höchstens n-ten Grades anzugeben, das an den Punkten xi vorgegebenen Werte yi annimmt, ist eine Interpolationsaufgabe. In Abhängigkeit von den Punkten xi und den Daten yi kann die Aufgabe auch darin bestehen, statt des (algebraischen) Polynoms ein trigonometrisches Polynom oder eine Linearkombination eines anderen Funktionensystems zu betrachten. Eine andere Verallgemeinerung besteht darin, nicht nur die Funktionswerte des ’Polynoms’, sondern auch die Ableitungen des ’Polynoms’ an vorgegebenen Punkten vorzuschreiben.