Kapitel 1 Gewöhnliche Differentialgleichungen •••••• Eines der wichtigsten Einsatzgebiete numerischer Verfahren sind Differentialgleichungen, also Gleichungen, die Funktionen sowie deren Ableitungen in Bezug zueinander setzen. • Bei gewöhnlichen Differentialgleichungen (ordinary differential equations, ODE), die wir im Folgenden diskutieren wollen, tritt nur eine Unabhängige auf (typischerweise die Zeit). Ein einfaches Anwendungsbeispiele ist etwa die Gewöhnliche Differentialgleichung - Oszillation eines Pendels: Die analytische Lösung ist durch y·· ( t ) = – y ( t ) y ( t ) = c 1 sin ( t ) + c 2 cos ( t ) gegeben, wobei die Konstanten c1 und c2 beispielsweise durch die Vorgabe des Anfangortes y ( t 0 ) = y 0 und der Anfangsgeschwindigkeit y· ( t 0 ) = v 0 bestimmt werden können (Anfangswertproblem). • Das Gegenstück von „gewöhnlich“ist hier „partiell“: Bei partiellen Differentialgleichungen (partial differential equations, PDE) kommen mehrere Unabhängige vor (mehrere Raumkoordinaten oder Raum und Zeit); Einfache Beispiele für eine PDE sind Gewöhnliche Differentialgleichungen • • • • • • 1 Partielle Differentialgleichung - Poisson Gleichung: ∆u ( x, y ) = f ( x, y ) Die Poissongleichung beschreibt beispielsweise die Verformung u(x,y) einer am Rand eingespannten Membran die mit der Last f(x,y) belastet ist. Für den Fall der Poissongleichung ist die Angabe analytischer Lösungen nur für Speziallfälle möglich. Numerische Methoden müssen im Allgemeinen für die Lösung herangezogen werden. Partielle differential Gleichungen werden im nächsten Kapitell genauer untersucht. Die Differentialgleichung allein bestimmt die Lösung i.A. noch nicht eindeutig (siehe die Konstanten in den Lösungen zu den gewöhnlichen Differentialgleichungen). Zusätzliche Bedingungen müssen angegeben werden • Verformung am Rand eingespannte Membran, • vorgegebene Temperatur an den Endpunkten des Stabes, • Startposition und Geschwindigkeit eines Pendels, • Populationsstärke am Anfang Solche Bedingungen treten in Erscheinung als Anfangsbedingungen (etwa die Populationsstärke zu Beginn der Zeitrechnung) oder als Randwertproblem (ein Space Shuttle soll schließlich an wohldefinierten Orten starten und landen). Gesucht ist dann jeweils die Funktion u, die Differentialgleichung und diese Bedingungen erfüllt. Dementsprechend spricht man von Anfangswertproblemen (AWP) oder Randwertproblemen (RWP). Oft hat man es nicht mit eine einzigen gewöhnlichen Differentialgleichung zu tun sondern mit einem System gewöhnlicher Differentialgleichungen. System gewöhnliche Differentialgleichung erster Ordnung Ein System gewöhnlicher Differentialgleichungen erster Ordnung ist allgemein gegeben durch · Y ( t ) = F ( t, Y ) , wobei Y1 F 1 ( t, Y 1, Y 2, …, Y N ) Y ( t ) = … und F ( t ) = … Yn F N ( t , Y 1 , Y 2, … , Y N ) • • Gewöhnliche Differentialgleichungen •• 1.2 • • Jede gewöhnliche Differentialgleichung zweiter Ordnung kann in ein System von Differentialgleichungen erster Ordnung umgewandelt werden, Transformation von Differentialgleichung zweiter Ordnung in erste Ordnung Sei eine Differentialgleichung zweiter Ordnung gegeben durch y·· ( t ) = g ( t, y, y· ) . Dann folgt durch die Transformation · · Y 1 ( t ) = Y 2 und Y 2 ( t ) = g ( t, y, y· ) das System erster Ordnung, Y(t) = Y1 Y2 und F(t) = Y2 g ( t, y, y· ) . Für die Eindeutigkeit von gewöhnlichen Differentialgleichungen gilt folgender Satz, Eindeutigkeitsbedingung Die partielle Differentialgleichung y· ( t ) = f ( t, y ) besitzt eine eindeutige Lösung für a ≤ t ≤ b , falls f und die erste partielle Ableitung fy im besagten Intervall stetig sind. 1. Kondition Die Kondition eines Systems bestimmt wie sehr sich Änderungen der Anfangsdaten in der Lösung auswirken. Gut konditioniert Probleme • • Kleine Änderungen in den Eingabedaten führen nur zu kleinen Änderungen in der Lösung. Störungen in der Eingabe sind also relativ unkritisch. Es lohnt sich, in einen guten Algorithmus zu investieren. • • Gewöhnliche Differentialgleichungen •• 1.3 • • Schlecht konditioniert Probleme • • • • Kleinste Änderungen in den Eingabedaten führen zu völlig verschiedenen Lösungen. Hier tun sich im Allgemeinen auch exzellente Algorithmen schwer. Schlecht konditionierte Probleme sind numerisch nur sehr schwer (im Extremfall auch gar nicht) zu behandeln. Ungenauigkeit beim Rechnen kann das berechnete Resultat völlig verfälschen. Als Beispiel eines schlecht konditionierten Problems betrachten wir das Anfangswertproblem: y·· – Ny ( t ) – ( N + 1 )y ( t ) = 0 mit zwei leicht unterschiedlichen Anfangsbedingungen. Fall 1: y ( 0 ) • = 1 und y' ( 0 ) = 0 Es ergibt sich die Lösung y(t) = e –t Fall 2: Leicht gestörte Anfangsbedingung • (1.1) y ( 0 ) = 1 + ε und y' ( 0 ) = 0 Es ergibt sich eine völlig andere Lösung: ε N+1 –t ( N + 1 )t y ε ( t ) = ⎛ 1 + ------------- ε⎞ e + ⎛ -------------⎞ e ⎝ N + 2⎠ ⎝ N+2 ⎠ In Abbildung 1 sind die beiden Lösungen zu den leicht unterschiedlichen Anfangsbedingungen dargestellt. Für die zweite Lösung wurde ε = 0, 01 und N=5 angenommen.Man sieht: y ( t ) und y ε ( t ) haben einen völlig verschiedenen Charakter; insbesonders geht y ( t ) gegen Null, wohingegen y ε ( t ) für N + 1 > 0 unbeschränkt wächst, und zwar für beliebiges (d.h. insbesondere noch so kleines) ε > 0 . Kleinste Trübungen in den • • Gewöhnliche Differentialgleichungen •• 1.4 • • Eingabedaten (hier eine der beiden Anfangsbedingungen) können sich somit desaströs auf die Lösung des AWP auswirken – ein klarer Fall von schlechter Kondition! 3 ungestört gestört 2,5 y(t) 2 1,5 1 0,5 0 0 1 2 3 4 5 t (s) Abbildung 1: Leicht unterschiedliche Anfangsbedingungen können bei schlecht konditinonierten Problemen zu völlig unterschiedlichen Lösungen führen. 2. Einführung in die Grundbegriffe - Beispiel Euler Methode Das einfachste Verfahren um eine gewöhnliche Differentialgleichung zu lösen ist das Euler Verfahren. Obwohl das Euler Verfahren selten in Praxis Verwendung findet, verdeutlicht und erklärt die Einfachheit seiner Herleitung die Methode und die Begriffe, die in fortgeschrittenen Verfahren verwendet werden. Beim Euler Verfahren wird der Differentialquotienten durch Differenzenquotienten bzw. finite Differenzen ersetzt. Die linke Seite der Gleichung y· ( t ) = f ( t, y ) (1.2) yi + 1 – yi y· ( t ) ≈ --------------------∆t (1.3) wird mit approximiert. Wobei y i + 1 die Lösung zum Zeitpunkt i + 1 und y i die Lösung zum Zeitpunkt i beschreibt. ∆t ist der Zeitschritt. Je nachdem ob die rechte Seite von Gleichung 1.2 zum Zeitpunkt i + 1 oder zum Zeitpunkt i . ausgewertet wird unterscheidet man zwischen expliziten und impliziten Verfahren. Implizite Verfahren werden später noch genauer behandelt. • • Gewöhnliche Differentialgleichungen •• 1.5 • • Für die rechte Seite der gewöhnlichen Differentialgleichung wird die Lösung aus dem letzten Zeitschritt eingesetzt. Es folgt somit, yi + 1 – yi --------------------- = f ( t i, y i ) ∆t (1.4) Umgeformt ergibt dies, y i + 1 = y i + ∆t ⋅ f ( t i, y i ) (1.5) Das heißt, aus den zuvor berechneten Werten können in einfacher Weise die neuen Werte bestimmt werden. Die obige Gleichung kann auch erhalten werden indem die zu lösende Differentialgleichung in die exakte Form ti + 1 yi + 1 = yi + ∫ f ( t, y ) dt = y i + ∆t ⋅ mittlereSteigung (1.6) ti gebracht wird. Da das Integral in den meisen Fällen nicht analytisch gelöst werden kann, muss es approximiert werden. Beim expliziten Euler Verfahren wird es durch eine einfache Rechteckregel approximiert, ti + 1 ∫ f ( t, y ) dt ≈ ∆t ⋅ f ( t i, y i ) (1.7) ti Wird die Lösung zum Zeitpunkt ti+1 durch den Satz von Taylor berechnet folgt, 2 yi + 1 ∆t = y i + ∆t y· i + -------- y·· ( ξ i ) 2 (1.8) für beliebiges in ξ i in (ti,ti+1). Man sieht durch Vergleich von 1.8 und 1.7, 2 dass beim Euler Verfahren, Terme der Ordnung ∆t vernachlässigt werden. 3. Fehlerkontrolle Verschiedene numerische Integrationsroutinen führen zu unterschiedlich genauen Approximationen. Um dies zu quantifizieren, müssen wir den Begriff der Genauigkeit eines Verfahrens zur Diskretisierung gewöhnlicher • • Gewöhnliche Differentialgleichungen •• 1.6 • • Differentialgleichungen genauer definieren. Zwei Dinge sind sorgsam zu trennen, der lokale Diskretisierungsfehler und der globale Diskretiseirungsfehler 3. 1. Lokaler Diskretisierungsfehler - Konsistenz Dieser Fehler kann für jeden Zeitschritt bestimmt werden indem die exakte Lösung in die durch das Verfahren diskretisierte Gleichung eingesetzt wird. Der Fehler entsteht im Allgemeinen dadurch, dass anstatt der exakten Ableitung mittels des Differenzenoperators y· ( t ) der vom Algorithmus verwendeten Differenzenquotienten verwendet. Lokaler Diskretisierungsfehler - Konsistenz, l ( δt ) Unter dem lokalen Diskretisierungsfehler versteht man den maximalen Fehler, der allein durch den lokalen Übergang von Differential- zu Differenzenquotienten entsteht - auch, wenn man dabei stets die exakte Lösung y(t) heranzieht. Der lokale Diskretisierungsfehler hängt vom gewählten Zeitschritt δt ab. ( δt = ∆t ) Falls l ( δt ) → 0 so wird das Diskretisierungsschema konsistent genannt. Das folgende Beispiel soll zeigen wie der Diskretisierungsfehler für das Euler Verfahren bestimmt wird. Beispiel Euler Verfahren Bei der Maximumsbildung gehen wir in jedem Punkt von der Verfügbarkeit der lokalen Lösung aus und betrachten, was durch „Differenzen statt Ableitungen“lokal an Fehler entsteht. Setzen wir Gleichung 1.8 in die obige Formel ein folgt, ⎧ ∆t 2 ⎫ 2 l ( δt ) = max ⎨ -------- y·· ( ξ i ) ⎬ = O ( ∆t ) . ⎩ 2 ⎭ Der lokale Feheler beim Euler Verfahren ist somit von der 2 Ordnung O ( ∆t ) • • Gewöhnliche Differentialgleichungen •• 1.7 • • Konsistenz ist offensichtlich das Minimum, was zu fordern ist. Eine nicht konsistente Diskretisierung sollte verworfen werden: Wenn nicht einmal lokal in jedem Zeitschritt vernünftig approximiert wird (wenn z.B. im 2 Nenner statt δt vielmehr 2δt oder ( δt ) steht) und somit immer mehr Rechenaufwand eben nicht zu immer besseren Ergebnissen führt, kann man auch nicht erwarten, dass das gegebenes AWP sinnvoll gelöst wird. 3. 2. Globaler Diskretisierungsfehler - Konvergenz Der globale Diskretisierungsfehler misst den Fehler, der sich insgesamt global im Laufe der Berechnung von der Zeit a nach b, also über das gesamte betrachtete Zeitintervall, ansammelt. Er bestimmt somit wie weit die berechnete Lösung am Ende von der exakten Lösung abweicht. Globaler Diskretisierungsfehler - Konvergenz, e ( δt ) Der globale Diskretisierungsfehler bezeichnet den maximalen Fehler zwischen den berechneten Näherungen yk und den entsprechenden Werten y(tk) der exakten Lösung y(t) an den diskreten Zeitpunkten tk: Falls e ( δt ) → 0 so wird das Diskretisierungsschema konvergent genannt. Ist das Diskretisierungschema konvergent führt mehr Rechenaufwand (immer kleinere Zeitschritte δt ) auch zu immer besseren Approximationen an die exakte Lösung (verschwindender Fehler). Konsistenz ist der schwächere der beiden Begriffe, eher technischer Natur und oft relativ einfach zu beweisen. Konvergenz dagegen ist der stärkere Begriff (Kovergenz impliziert Konsistenz, umgekehrt nicht!), von • • Gewöhnliche Differentialgleichungen •• 1.8 • • fundamentaler praktischer Bedeutung und oft nicht trivial zu zeigen. Abbildung 2: Zeigt den lokalen Diskretisierungsfehler und den globalen Diskretisierungsfehler für die Lösung y(t). Abbildung 2 zeigt den lokalen und den globalen Diskretisierungsfehler im Vergleich. Dass ein kleiner Zeitschritt immer zu besseren Resulataten führt ist nicht so naheliegend wie es erscheinen mag. Werden Rundungsfehler berücksichtigt muss man im Auge behalten, dass Rundungsfehler von der Wahl der Schrittweite abhängen. Wird der Zeitschritt kleiner, werden mehr Berechnungen notwenig, und ein größerer Rundungsfehler ist zu erwarten. Zieht man dies in Betracht erhält man eine Fehlerabschätzung die gegen unendlich geht, wenn sich die Schrittweite gegen Null annähert. Jedoch ist die untere Schranke für die Schrittweite im Allgemeinen hinreichend klein, so dass Rundungsfehler tatsächlich die Approximation nicht wesentlich beieinflussen. 4. Explizite Zeitintegrationsverfahren Das einfachste explizite Zeitintegrationsverfahren haben wir schon durch das Euler Verfahren im letzten Kapitell vorgestellt. Wie aus Abbildung 2 oder Gleichung 1.6 und Gleichung 1.7 ersichtlich, ist beim expliziten Euler Verfahren die Steigung nicht optimal approximiert. Bessere Methoden • • Gewöhnliche Differentialgleichungen •• 1.9 • • werden im folgenden vorgestellt, wobei alle explizit sind, das heißt die neuen Werte lassen sich einfach durch die Werte der letzten Zeitschritte berechnen. 4. 1. Modifizierte Euler Verfahren (Heun Verfahren) Das Grundmuster des Heun Verfahren ist dem Euler verfahren sehr ähnlich. Man nehme die bereits berechnete Näherung yk in tk, bestimme eine Näherung für die Steigung y· ( t ) und ermittle daraus mittels Multiplizieren mit der Schrittweite δt eine Näherung für den Wert der Lösung y im nächsten Zeitpunkt tk+1. Neu ist, wie man die Steigung schätzt. Beim Euler-Verfahren nimmt man einfach f ( t i, y i ) her. Das Heun-Verfahren versucht, die Steigung im gesamten Intervall [tk , tk+1] besser zu approximieren, indem der Mittelwert aus zwei Schätzern für y· ( t ) in tk und in tk+1 herangezogen wird. Das Problem, dass man yk+1 ja erst bestimmen will, umgeht man durch Verwendung der Euler-Schätzung als zweites Argument von f. Modifiziertes Euler Verfahren Der lokale Fehler ist 3 l ( δt ) = O ( ∆t ) Wie man leicht sieht, ist der einzelne Zeitschritt aufwändiger geworden (zwei Funktionsauswertungen von f, mehr elementare Rechenoperationen als beim einfachen Euler-Verfahren). Dafür hat die Ordnung des Verfahren zugenommen. • • Gewöhnliche Differentialgleichungen •• 1.10 • • 4. 2. Runge-Kutta Verfahren Das modifizierte Euler Verfahren ist ein Speziallfall von Runge-Kutta Verfahren. Das gängigste Runge Kutta Verfahren ist das vierter Ordnung. Das Grundprinzip ist wieder dem Euler Verfahren ähnlich. Auch diese Vorschrift folgt unserem Grundprinzip y i + 1 ≈ y i + ∆t ⋅ mittlereSteigung , (1.9) allerdings ist die Berechnung des Näherungswerts für y· ( t ) jetzt noch etwas komplizierter. Ausgehend von der einfachen Euler-Näherung f ( t i, y i ) , werden durch kunstvolles Verschachteln vier geeignete Näherungswerte ermittelt, die dann – passend gewichtet – zur Approximation herangezogen werden. Runge Kutta Verfahren vierter Ordnung 4. 3. Mehrschrittverfahren Die bisherigen Verfahren sind allesamt so genannte Einschrittverfahren: Für die Berechnung von yk+1 werden keine weiter als tk zurückliegenden Zeitpunkte herangezogen, sondern neue Auswertestellen gewählt. Dadurch muss die rechte Seite der Differentialgleichung oft ausgewertet werden, das • • Gewöhnliche Differentialgleichungen •• 1.11 • • zu erheblichen Rechenzeiten führen kann. Bei vielen Anwendung müssen für die Berechnung der rechten Seite partielle Differentialgleichungen gelöst werden. Anders bei den Mehrschrittverfahren: Hier werden keine zusätzlichen Auswertestellen von f produziert, sondern vielmehr werden ältere (und schon berechnete) Funktionswerte wiederverwertet, zum Beispiel in tk-1 beim Adams-Bashforth-Verfahren zweiter Ordnung: Adams-Bashforth-Verfahren zweiter Ordnung Verfahren noch höherer Ordnung können analog konstruiert werden, indem man auf noch weiter zurückliegende Zeitpunkte tk-i, i = 1, 2, ..., zurückgreift. Das Prinzip ist einfach. Ersetze f durch ein Polynom p von passendem Grad, das f in den betrachteten (ti, yi) interpoliert, und verwende dann dieses p gemäß um yk+1 zu berechnen (das Polynom p ist leicht zu integrieren). Zu Beginn, d.h. solange es noch nicht genügend „alte“Werte gibt, benutzt man in der Regel ein passendes Einschrittverfahren. • • Gewöhnliche Differentialgleichungen •• 1.12 • • 5. Der Begriff der Stabilität Die Verfahren von Euler, Heun und Runge-Kutta sind konsistent und konvergent. Dies gilt auch für die soeben eingeführte Klasse der Mehrschrittverfahren vom Adams-Bashforth-Typ: auch sie sind sowohl konsistent als auch konvergent. Dennoch zeigt sich bei den Mehrschrittverfahren, dass Konsistenz und Konvergenz nicht immer zugleich gelten. Um konvergent zu sein, muss ein konsistentes Verfahren zusätzlich stabil sein. Stabilität ist ein weiterer zentraler Begriff der Numerik. Ein numerischer Algorithmus heißt dabei numerisch stabil, stabil oder gutartig, wenn er für alle erlaubten und in der Größenordnung der Rechengenauigkeit O ( ξ ) Eingabedaten unter dem Einfluss von Rundungs- und Verfahrensfehlern für gut konditionierten Probleme akzeptable Resultate produziert. Ein stabiler Algorithmus kann durchaus große Fehler liefern – etwa, wenn das zu lösende Problem schlecht konditioniert ist. Dann können nämlich akzeptable Resultate weit entfernt vom exakten Resultat liegen. Aus Um die Auswirkungen von Instabilität zu erleben und zu zeigen, dass nicht jede Diskretisierung zu einer stabilen Lösung führt, betrachten wir als Diskretisierungsvorschrift die Mittelpunktsregel. Die Mittelpunktsregel ist offensichtlich ein 2-Schritt-Verfahren. Ihre Konsistenz sieht man leicht daran, dass der Differenzenquotient für δt → 0 tatsächlich gegen die erste Ableitung von y in tk und somit gegen f konvergiert. • • Gewöhnliche Differentialgleichungen •• 1.13 • • Zweischrittverfahren, Beispiel für Instabilitäten Mit den exakten Werten y(0) und y ( δt ) als Startwerten liefert der Algorithmus folgende Resultate: D.h.: Für jede (noch so kleine) Schrittweite δt oszilliert die Folge der berechneten yk mit unbeschränkten Absolutwerten für k → ∞ , anstatt gegen die exakte Lösung 1/2 zu konvergieren. Somit haben wir zwar Konsistenz, aber offenkundig keine Konvergenz – die Mittelpunktsregel ist kein stabiler Algorithmus! 6. Implizite Zeitintegrationsverfahren 6. 1. Motivation Betrachten wir das einfache Beispiel das durch die Gleichung y· ( t ) = – 1000y + 1000 , t>0 (1.10) mit den Anfangsbedingung: y(0) = y0 = 2. Dieses AWP ist gut konditioniert: Die gestörte Anfangsbedingung y(0) =2+ε etwa erzeugt eine nur minimal verfälschte Lösung; wir haben also keine Ausrede im Hinblick auf das uns gestellte Problem! • • Gewöhnliche Differentialgleichungen •• 1.14 • • Die Lösung ist y( t) = e – 1000t +1 (1.11) Verwenden wir als Diskretisierungsvorschrift das Euler-Verfahren, das bekanntlich konsistent und konvergent und numerisch stabil ist, so erwarten wir eigentlich nichts Böses. Nun programmieren wir das Euler-Verfahren für obiges Beispielproblem, y k + 1 = y k + ∆t ( 1000 – 1000y k ) = ( 1 – 1000t )y k + 1000t (1.12) durch vollständige Induktion kann leicht gezeigt werden das die Lösung durch y k + 1 = ( 1 – 1000∆t ) k+1 +1 (1.13) gegeben ist. Wir müssen entsetzen feststellen, dass hier ein Problem auftritt, wenn der Ausdruck in der Klammer betragsmäßig größer als eins wird. Obwohl die exakte Lösung extrem schnell gegen ihren Grenzwert 1 konvergiert und somit auf dem größten Teil des interessierenden Gebiets völlig harmlos ist, zeigt obige Folge der Oszillationen und divergiert, falls ∆t > 0, 002 wird. Das heißt, wir werden zu einer extrem feinen Schrittweite gezwungen, obwohl der Verlauf der exakten Lösung y(t) nahelegt, dass dies – wenn überhaupt – dann allenfalls für kleine Werte von t nahe bei Null erforderlich ist, da dort das rasche negativ-exponentielle • • Gewöhnliche Differentialgleichungen •• 1.15 • • ∆t = 0, 0021 2,1 89,1 1,9 69,1 exakt numerisch 49,1 1,7 exakt 1,5 numerisch 29,1 y(t) y(t) ∆t = 0, 00001 1,3 9,1 -10,9 0 0,05 0,1 0,15 -30,9 1,1 -50,9 -70,9 0,9 0 0,0001 0,0002 0,0003 0,0004 0,0005 -90,9 t (s) t (s) Abbildung 3: Vergleich der Integration mit der expliziten Euler Methode mit zwei verschiedenen Zeitschritten für ein steifes Problem. Wie rechts zu erkennen ist führt ein zu großer Zeitschritt auf eine divergierende Lösung. Abklingen auftritt. Obwohl das verwendete Verfahren konsistenz und konvergent war divergiert die Lösung. Der Grund ist, dass die Stabilität asymptotischer Natur ist. δt → 0 und O(t) bedeuten immer „für hinreichend kleines t“, und in unserem Fall ist dieses „hinreichend klein“ eben „inakzeptabel klein“. Solche Differentialgleichungen werden steif genannt. Oft beinhaltet die – αt Lösung steifer Differntialgleichung einen Term der Form e , wobei α eine große, positive Konstante ist. Solche Terme treten häufig bei Schwingungen, chemischen Reaktionen und elektrischen Stromkreisen auf. Steife Probleme haben ihren Namen von der Bewegung von Feder und Massensystemen, die große Federkonstanten besitzen. Bei steifen Problemen scheinen wir mit unserem Latein ziemlich am Ende zu sein. Was wir bisher als vorteilhaft ausgemacht haben (Konsistenz, Konvergenz), hilft uns hier nicht. Es werden also andere Verfahren benötigt. 6. 2. Implizietes Euler Verfahren Beim implizieten Euler Verfahren wird die rechte Seite zum Zeitpunk ti+1 ausgewertet es folgt, • • Gewöhnliche Differentialgleichungen •• 1.16 • • yi + 1 – yi --------------------- = f ( t i + 1, y i + 1 ) ∆t (1.14) Da nun die gesuchten Werte sowohl in der linken Seite als auch in der rechten Seite in der Funktion f vorkommen, können Sie nicht mehr einfach berechnet werden. Um die Werte zu erhalten muss im Allgemeinen ein nichtlineares Gleichungssystem gelöst werden. Dies geschieht meist mit einem Newton Verfahren. Obwohl offensichtlich beim implizieten Euler Verfahren die Lösung der Differentialgleichung wesentlich komplizierter wird bietet es einen gravierenden Vorteil der durch Anwendung des vorigen Beispiels gezeigt werden soll. Die Diskretisierung führ auf folgende Iterationsvorschrift: Wie man sieht, kann δt jetzt beliebig gewählt werden, die Konvergenz ist somit ohne Beschränkung der Schrittweite t sichergestellt! y(t) ∆t = 0, 0021 2 1,8 1,6 1,4 1,2 1 0,8 0,6 0,4 0,2 0 exakt numerisch 0 0,1932 0,3864 0,5796 0,7728 0,966 t (s) Abbildung 4: Das implizite Euler Verfahren liefert unabhängig vom Zeitschritt konvergente Resulate. • • Gewöhnliche Differentialgleichungen •• 1.17 • • 7. Wahl der Methode Jedes physikalisches Problem verlangt nach seiner passenden Zeitintegrationsmethode. Mehrschritt Verfahren sind zu wählen, wenn die Berechnung der Funktionswerte aufwenig ist (z.B. CVODE Package). Runge-Kutta Methoden eignen sich, wenn Funktionsauswertung mit wenig Aufwand verbunden ist (RK- Suite). Falls Speicherplatz ein Problem ist wird man Runge-Kutta Methoden verwenden. Bei steifen Problemen sind implizite Zeitintegrationsmethoden zu verwenden (z.B. CVODE Package). CPU (s) Abbildung 5 zeigt wie sehr verschiedene Zeitintegrationsmethoden die Performance beeinflussen. Bis zu 4 Zehnerpotenzen (10000 facher Geschwindigkeitsvorteil) kann die geeignete Zeitintegrationsroutine an Geschwindigkeitsvorteil bringen. Abbildung 5: (Links) Ummagnetisierung eines magnetischen Nanoteilchens. (rechts) Zeitgewinn be verschiedenen Integrationsmethoden. Horizontale Achse physikalische Zeit. Also 0.6 ns des Ummagnetisierungsprozesses sind simuliert worden. Vertikale Achse CPU Zeit. (A) Explizite Runge-Kutta Methode. (B-E) verschiedene impliziete Methoden. Im speziellen Backward Differenziation Formula. (F) Neben der ersten Ableitung wird die zweite Ableitung zur Verfügung gestellt -> sogenanntes Preconditioning. • • Gewöhnliche Differentialgleichungen •• 1.18 • • 8. Software CVODE: Hervorragende Implementierungen von verschiedenen Mehrschrittverfahren sind in dem CVODE Package vorgenommen. • basiert auf Adams - Moulton Formeln und Backward Difference Formulas • automatische Wahl der Anfangsschrittweite. • Fehlerkontrolle wird vorgenommen. • Ordnung und Schrittweite werden automatisch angepasst Rk-Suite: • Runge - Kutta Verfahren verschiedener Ordnung • Fehlerkontrolle durch Vergleich der Rechnung mit Rechnung höherer Ordnung • automatische Wahl der Anfangsschrittweite Beide Packages können von www.netlib.org downgeloaded werden. • • Gewöhnliche Differentialgleichungen •• 1.19 • •