Kapitel 1 Gewöhnliche Differentialgleichungen

Werbung
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
•
•
Herunterladen