Integration gewöhnlicher Differentialgleichungen
Anfangswertprobleme
Die Integration von Differentialgleichungen bildet eine der
Grundaufgaben der Physik und verwandter naturwissenschaftlicher
Disziplinen. Man denke nur an die Integration von Bewegungsgleichungen
oder an die Tatsache, daß Feld- oder Kontinuumstheorien meist mit
Hilfe von partiellen Differentialgleichungen formuliert werden. Da es
nur in Ausnahmefällen gelingt, die Lösungen von
Differentialgleichungen geschlossen anzugeben, ist man vor allem bei
praktischen Problemen in der Regel auf numerische Verfahren
angewiesen.
Im einfacheren Fall von gewöhnlichen (im Gegensatz zu partiellen)
Differentialgleichungen hängt die gesuchte Funktion (bzw. hängen im
Fall eines Systems von gewöhnlichen Differentialgleichungen die
Funktionen) u(t) nur von einer einzigen unabhängigen Variablen-meist
``Zeit'' t genannt-ab, und die Differentialgleichung ist eine
Beziehung zwischen u, den Ableitungen von u nach t und der
unabhängigen Variablen t. Die höchste vorkommende Ableitung nennt
man den Grad der Differentialgleichung. Meist ist man an der
Lösung eines Anfangswertproblems interessiert, d.h. der Wert
der unbekannten Funktion u ist zu einem Zeitpunkt t0 gegeben, und
man möchte u(t) für t > t0 bestimmen. Im Gegensatz dazu sind bei
einem Randwertproblem die Werte von u oder der Ableitungen von
u an den Enden eines Intervalls gegeben und die Lösung im Inneren
gesucht.
Wir schreiben das Anfangswertproblem abstrakt meist in der Form einer
Differentialgleichung oder eines Systems von Differentialgleichungen
erster Ordnung
mit einer zugehörigen Anfangsbedingung
Wenn es sich um ein System von Differentialgleichungen handelt, steht
u als Abkürzung für einen Vektor von Unbekannten; ebenso steht auf
der rechten Seite f für einen ganzen Vektor von Funktionen. Hat die
unabhängige Variable nicht die Bedeutung einer Zeit- sondern einer
Ortskoordinate, so kann man statt t natürlich auch x schreiben.
Gewöhnliche Differentialgleichungen höherer Ordnung kann man formal
immer auf Systeme erster Ordnung zurückführen. Ist z.B. die
Differentialgleichung zweiter Ordnung
|
d2u dt2
|
=f |
æ ç
è
|
t,u, |
du dt
|
ö ÷
ø
|
|
|
gegeben, so führt man die zwei neuen abhängigen Variablen
ein, für die sich dann das System von Differentialgleichungen
ergibt. Dieser Vorgangsweise entspricht z.B. in der Mechanik die
Einführung der neuen Variablen ``Geschwindigkeit'' in die Newtonschen
Bewegungsgleichungen, wodurch aus m d2x/dt2=F die Differentialgleichung
erster Ordnung m dv/dt=F mit der Definition von v=dx/dt als zweiter
Gleichung wird.
Approximation von Ableitungen durch Differenzenquotienten
Da Computer nur endlich viele Zahlen speichern können und man in
endlicher Zeit auch nur endlich viele Rechenschritte durchführen
kann, wird bei der numerischen Behandlung von Differentialgleichungen
die unabhängige Variable t diskretisiert, d.h. man muß sich
darauf beschränken, die unbekannte Funktion nicht für alle Werte
von t, sondern nur auf einem diskreten Gitter von Stützstellen
zu bestimmen. Häufig sind diese Stützstellen äquidistant, also
Vielfache tn=nDt eines konstanten Zeitschritts Dt.
Sind oder wären die Funktionswerte an den Stützstellen bekannt,
ergibt sich umgekehrt das Problem, die Ableitungen von u an diesen
Stützstellen zu berechnen. Einen einfachen Satz von Näherungsformeln
erhält man, indem man die Taylorentwicklung von u um einen
beliebigen Zeitpunkt t betrachtet
|
| |
u(t) + Dt |
du(t) dt
|
+ |
Dt2 2
|
|
d2u(t) dt2
|
+ |
Dt3 6
|
|
d3u(t) dt3
|
+ O(Dt4) |
|
| |
u(t) - Dt |
du(t) dt
|
+ |
Dt2 2
|
|
d2u(t) dt2
|
- |
Dt3 6
|
|
d3u(t) dt3
|
+ O(Dt4) |
|
|
|
|
Bringt man in der ersten Gleichung u(t) auf die linke Seite und
dividiert die ganze Gleichung durch Dt, so erhält man die
sogenannte Vorwärtsdifferenz
|
u(t+Dt)-u(t) Dt
|
= |
du(t) dt
|
+ O(Dt) |
|
Die erste Ableitung von u läßt sich also aus den Funktionswerten am
Stützpunkt t und an seinem rechten Nachbarpunkt approximieren. Der
Fehler dieser Näherung geht für kleine Zeitschritte linear mit
Dt gegen Null, und man sagt daher, daß die Formel von erster
Ordnung ist. Analog ergibt sich aus der zweiten Gleichung die
Rückwärtsdifferenz
|
u(t)-u(t-Dt) Dt
|
= |
du(t) dt
|
+ O(Dt) |
|
die ebenfalls von erster Ordnung ist. Subtrahiert man die zweite von
der ersten Gleichung, so erhält man nach Division durch 2Dt
die Zentraldifferenz
|
u(t+Dt)-u(t-Dt) 2Dt
|
= |
du(t) dt
|
+ O(Dt2) |
|
Da die geraden Ableitungen von u in den beiden Taylorentwicklungen
einander kompensieren, ist diese Näherung von zweiter Ordnung (der
führende Korrekturterm ist proportional zu Dt2d3u/dt3).
Addiert man die Taylorentwicklungen für u(t+Dt) und
u(t-Dt), so fallen die ungeraden Ableitungen von u weg, und
man erhält eine symmetrische Formel für die zweite Ableitung
|
u(t+Dt)-2u(t)+u(t-Dt) Dt2
|
= |
d2u(t) dt2
|
+ O(Dt2) |
|
die ebenfalls von zweiter Ordnung ist.
Durch Hinzunahme weiterer Stützpunkte kann man auf ähnliche Weise
auch Approximationen höherer Ordnung gewinnen; die letzten beiden
Formeln sind aber trotz ihrer Einfachheit sehr genau und werden daher
gerne verwendet.
Einschrittverfahren
Grundproblem
Das Anfangswertproblem kann als gelöst betrachtet werden, wenn es
gelingt, eine Methode anzugeben, wie man ausgehend von u(tn) den
Wert der unbekannten Funktion zum nächsten Zeitpunkt berechnet, denn
man muß dieses Verfahren nur sukzessive auf u(t0), u(t1),
u(t2), ... anwenden, um die Lösung der Differentialgleichung
beliebig weit in die Zukunft zu propagieren. Der Startwert u(t0)
ist durch die Anfangsbedingung gegeben.
Integriert man die Differentialgleichung
formal zwischen den Grenzen tn und tn+1, so erhält man
|
ó õ
|
tn+1
tn
|
dt |
du dt
|
= u(tn+1) - u(tn) = |
ó õ
|
tn+1
tn
|
dt f(t,u) |
|
oder, mit der Bezeichnung u(n)=u(tn) usw.,
u(n+1) = u(n) + |
ó õ
|
tn+1
tn
|
dt f[t,u(t)] |
|
Diese Gleichung und die folgende Abbildung zeigen auch schon das
Grundproblem aller Integrationsverfahren: Um den Funktionswert zum
neuen Zeitpunkt bestimmen zu können, müßte man zur Berechnung des
Integrals auf der rechten Seite die Lösung u(t) schon für alle
Werte von t zwischen tn und tn+1 kennen! Die verschiedenen
numerischen Integrationsverfahren unterscheiden sich dadurch, wie
dieses Integral in der Praxis approximiert wird.
Die Güte von Integrationsverfahren beurteilt man u.a. durch den
Vergleich mit der formalen Taylorentwicklung der exakten Lösung
|
|
u(n) + |
ó õ
|
tn+1
tn
|
dt |
ì í
î
|
f(t,u)|tn+ (t-tn) |
df(t,u) dt
|
ê ê
ê
|
tn
|
+ |
(t-tn)2 2
|
|
d2f(t,u) dt2
|
ê ê
ê
|
tn
|
+ ¼ |
ü ý
þ
|
|
| |
|
u(n) + Dt f(t,u)|tn+ |
Dt2 2
|
|
df(t,u) dt
|
ê ê
ê
|
tn
|
+ |
Dt3 6
|
|
d2f(t,u) dt2
|
ê ê
ê
|
tn
|
+ ¼ |
|
|
Ein numerisches Verfahren, das bis zum Term proportional
Dtp mit dieser Entwicklung übereinstimmt, nennt man ein
Verfahren p-ter Ordnung.
Explizites Eulerverfahren
Die einfachste Näherung besteht darin, das Integral über f(t,u)
durch eine ``Riemannsumme'' mit dem Funktionswert am linken
Stützpunkt (dem einzigen Wert der Kurve f[t,u(t)], den man mit
Hilfe von u(n) unmittelbar berechnen kann) als Höhe der
Rechtecksfläche zu approximieren. Das ergibt
u(n+1) = u(n) + Dt f(t,u)|tn |
|
Wie ein Vergleich mit der Taylorentwicklung der exakten Lösung zeigt,
ist das ein Verfahren erster Ordnung. Es ist außerdem explizit,
d.h. der Wert von u zum neuen Zeitpunkt kommt nur auf der linken
Seite der Gleichung vor, und die rechte Seite läßt sich unmittelbar
durch Einsetzen des alten Wertes u(n) berechnen.
Implizites Eulerverfahren
Wird als Höhe der Rechtecksfläche der Funktionswert am rechten Rand
des Intervalls verwendet, so ergibt sich
u(n+1) = u(n) + Dt f(t,u)|tn+1 |
|
Wie man durch Einsetzen der Taylorentwicklung von
f(t,u)|tn+1 um tn feststellt, ist auch dieses
Verfahren von erster Ordnung. Es ist aber implizit, d.h. u(n+1) kommt sowohl auf der linken als auch der rechten Seite
vor, und es hängt von der speziellen Gestalt der Gleichung ab, ob und
wie leicht man sie nach u(n+1) auflösen kann. Dies ist der
prinzipielle Nachteil von impliziten Verfahren, die sich im
allgemeinen aber durch größere Stabilität auszeichnen.
Implizites Verfahren zweiter Ordnung
Approximiert man das Integral statt durch eine Rechtecks- genauer
durch eine Trapezfläche, so erhält man das Verfahren zweiter
Ordnung
u(n+1) = u(n) + |
Dt 2
|
[f(t,u)|tn + f(t,u)|tn+1] |
|
(Beweis wieder durch Einsetzen der Taylorentwicklung von
f(t,u)|tn+1). Da u(n+1) zur Berechnung der
rechten Seite schon bekannte sein müßte, handelt es sich auch hier
wieder um ein implizites Verfahren.
Mehrschrittverfahren
Verfahren zweiter Ordnung mit Hilfsschritt
Eine Möglichkeit, den Verlauf des Integranden f[t,u(t)] im
Intervall [tn,tn+1] besser zu beschreiben, besteht darin,
zusätzliche Schätzwerte für diese Funktion im Inneren oder am Rand
des Intervalls zu ermitteln und in eine Integrationsformel höherer
Ordnung einzusetzen. Allerdings ist das mit einem größeren
Rechenaufwand verbunden, da die vorkommenden Funktionen pro
Zeitschritt öfter ausgewertet werden müssen.
Um z.B. das Integral mit der ``Mittelpunktsregel''
u(n+1) = u(n) + Dt f(t,u)|tn+1/2 |
|
(Stützpunkt in der Mitte des Intervalls) zu berechnen, verschafft man
sich zunächst mit Hilfe des expliziten Eulerverfahrens in einem
Hilfsschritt der Schrittweite Dt/2 einen Schätzwert für
u(n+1/2)=u(tn+Dt/2), der dann in f(t,u) eingesetzt
wird. Das Verfahren besteht also aus einem Hilfs- und dem eigentlichen
Integrationsschritt:
|
| | |
| |
u(n) + Dt f(tn+1/2,u(n+1/2)) |
|
|
|
|
Es ist explizit und, wie man durch Taylorentwicklung aller Größen um
tn feststellt, von zweiter Ordnung. Eine andere Schreibweise, bei
der man die Hilfsgröße explizit einsetzt, ist
u(n+1) = u(n) + Dt f |
é ê
ë
|
tn+ |
Dt 2
|
,u(n)+ |
Dt 2
|
f(tn,u(n)) |
ù ú
û
|
|
|
Runge-Kutta-Verfahren vierter Ordnung
Das obige Verfahren ist der einfachste Vertreter einer Klasse von
expliziten Integrationsalgorithmen, bei denen durch geschickte Wahl
der Hilfspunkte eine möglichst hohe Ordnung erreicht wird. Beim
Runge-Kutta-Standardverfahren vierter Ordnung müssen pro Zeitschritt
vier Schätzwerte für f in der Mitte und am rechten Rand des
Intervalls berechnet werden
|
| | |
| |
f |
æ ç
è
|
tn+ |
Dt 2
|
,u(n)+ |
Dt 2
|
f1 |
ö ÷
ø
|
|
|
| |
f |
æ ç
è
|
tn+ |
Dt 2
|
,u(n)+ |
Dt 2
|
f2 |
ö ÷
ø
|
|
|
| | |
|
|
|
Der eigentliche Integrationsschritt lautet dann
u(n+1) = u(n) + |
Dt 6
|
[f1+2f2+2f3+f4] |
|
Ist ein Verfahren von hoher Ordnung, so besagt dies im Prinzip nur,
daß es für kleine Zeitschritte sehr genau wird. Bei größeren
Zeitschritten kann aber durchaus ein Verfahren niedrigerer Ordnung das
``bessere'' sein.
Leapfrog-Verfahren
Eine andere Möglichkeit, die Ordnung eines Verfahrens zu erhöhen,
besteht darin, weiter in der Vergangenheit zurückliegende (und daher
zum Zeitpunkt tn bekannte) Funktionswerte zu verwenden.
Beim Leapfrog-Verfahren integriert man f(t,u) nicht zwischen tn
und tn+1, sondern zwischen tn-1 und tn+1
u(n+1) = u(n-1) + |
ó õ
|
tn+1
tn-1
|
dt f(t,u) |
|
und approximiert das Integral durch die Mittelpunktsregel
u(n+1) = u(n-1) + 2Dt f(t,u)|tn |
|
Dieses Verfahren ist explizit, wegen der Verwendung der
Mittelpunktsregel von zweiter Ordnung und für gewisse Arten von
Differentialgleichungen sehr gut geeignet. Zum Unterschied von
Einschrittverfahren verknüpft es Funktionswerte zu drei
aufeinander folgenden Zeitpunkten. Da bei einer Differentialgleichung
erster Ordnung durch die Anfangsbedingung nur u(0) gegeben ist,
muß man sich daher die Lösung zum ersten Zeitpunkt, u(1), mit
Hilfe eines anderen Verfahrens oder durch Taylorentwicklung aus der
Differentialgleichung selbst bestimmen. Man bezeichnet daher das
Leapfrog-Verfahren als ``nicht selbst-startend''.
Kriterien
Es gibt leider keinen Universal-Algorithmus zur numerischen Lösung
von Differentialgleichungen, sondern eine Vielzahl von speziellen
Verfahren, die jeweils nur für bestimmte Arten von Gleichungen
geeignet sind. Welches Lösungsverfahren man im konkreten Fall
verwendet, wird von verschiedenen Faktoren abhängen. Auf jeden Fall
muß das gewählte Differenzenverfahren konsistent mit der
Differentialgleichung sein, d.h. es muß im Limes Dt®0
gegen die vorgegebene Differentialgleichung streben. Weiters muß das
Verfahren stabil sein. Das heißt, daß sich von einem
Zeitschritt zum nächsten Rundungsfehler nicht verstärken dürfen,
sondern beschränkt bleiben müssen. Auch Stabilität garantiert aber
noch nicht Genauigkeit bzw. Konvergenz, d.h. daß die
numerische Lösung bei Verkleinerung der Schrittweite tatsächlich
gegen die exakte Lösung der Differentialgleichung strebt.
Kann man die Eigenschaften eines Integrationsverfahrens nicht
theoretisch analysieren, so empfiehlt es sich, den Algorithmus
wenigstens an einem exakt lösbaren Problem ähnlicher Art zu
überprüfen.
Beispiele
Die Bewegungsgleichung des Harmonischen Oszillators in einer Dimension
ist nicht nur eines der wenigen exakt behandelbaren physikalischen
Modellsysteme, sondern auch der Prototyp für eine
Differentialgleichung zweiter Ordnung mit oszillierender,
beschränkter (nicht zunehmender) Lösung. Die analytische Lösung lautet
x(t) = x(0) coswt + |
v(0) w
|
sinwt |
|
wobei x(0) und v(0) durch die Anfangsbedingungen gegeben sind. Als
Kriterium für die Brauchbarkeit eines numerischen Lösungsverfahrens
dient hier neben dem direkten Vergleich der erzeugten Trajektorien vor
allem die Erhaltung der Gesamtenergie
Die Differentialgleichung zweiter Ordnung wird zunächst auf eine
System von Gleichungen erster Ordnung umgeschrieben, indem man für
die erste Ableitung dx/dt den neuen ``Namen'' v einführt
v und x werden zu einem Vektor u=(v,x) zusammengefaßt und
die Formeln der vorigen Abschnitte komponentenweise auf
|
du dt
|
= |
d dt
|
|
æ ç
è
|
|
ö ÷
ø
|
= |
æ ç
è
|
|
ö ÷
ø
|
|
|
angewendet.
Für das explizite Eulerverfahren ergibt sich
Das Verfahren ist jedoch für den Harmonischen Oszillator instabil:
die Gesamtenergie nimmt im Lauf der Zeit systematisch zu, und die
Lösung explodiert.
Da die Differentialgleichung linear ist, führt das implizite
Eulerverfahren auf ein System von linearen Gleichungen
das leicht nach den Werten von v und x zum neuen Zeitschritt
auflösbar ist. Das Verfahren ist stabil, die Gesamtenergie ist jedoch
nicht erhalten, sondern nimmt systematisch ab, d.h. Rundungsfehler
werden zwar nicht verstärkt, der Oszillator kommt aber langfristig
zum Stillstand.
Daß kleine Änderungen im Integrationsschema entscheidend für die
Brauchbarkeit eines Verfahrens sein können, zeigt das
Cromer-Verfahren: Es unterscheidet sich von den beiden Eulerverfahren
nur dadurch, daß die Gleichung für die Geschwindigkeit explizit,
jene für den Ort aber implizit behandelt wird
d.h. man setzt den in der ersten Gleichung berechneten neuen
(aktuellen) Wert von v sofort in die zweite Gleichung ein. Dieses
Verfahren ist beim Harmonischen Oszillator für hinreichend kleine
Zeitschritte stabil und erhält langfristig die Gesamtenergie.
Für Systeme mit geschwindigkeitsunabhängigen Kräften geht man bei
der Implementation des Leapfrog-Verfahrens meist von versetzten
Gittern von der Form t1/2, t3/2, t5/2, ... für
die Geschwindigkeit bzw. t0, t1, t2, ... für den Ort
aus:
Formuliert man das Leapfrog-Verfahren nämlich für eine
Diskretisierung mit der Schrittweite Dt/2, so erhält man die
Gleichungen
d.h. daß man zur Berechnung der Geschwindigkeiten zu den
halbzahligen Zeitpunkten nur die Orte zu den ganzzahligen Zeitpunkten
braucht und umgekehrt. (Geschwindigkeiten zu ganzzahligen und Orte zu
halbzahligen Zeitpunkten werden einfach nicht berechnet.) Das
Leapfrog-Verfahren ist beim Harmonischen Oszillator ebenfalls für
hinreichend kleine Zeitschritte stabil, und die Gesamtenergie ist
erhalten. Ein Nachteil besteht darin, daß Orte und Geschwindigkeiten
nicht zu denselben Zeitpunkten bekannt sind, doch kann man, konsistent
mit der Ordnung des Verfahrens, v(n) durch
v(n) » |
1 2
|
(v(n-1/2)+v(n+1/2)) |
|
approximieren. Den fehlenden Startwert v(-1/2) kann man aus den
Anfangsbedingungen x(0) und v(0) z.B. durch
Taylorentwicklung
v |
æ ç
è
|
t0- |
Dt 2
|
ö ÷
ø
|
= v(t0)- |
Dt 2
|
|
dv dt
|
ê ê
ê
|
t0
|
+ |
1 2
|
|
æ ç
è
|
Dt 2
|
ö ÷
ø
|
2
|
|
d2v dt2
|
ê ê
ê
|
t0
|
+ ¼ |
|
und Einsetzen von dv/dt=-w2x und
d2v/dt2=-w2dx/dt=-w2v (aus der Differentialgleichung)
gewinnen
v-1/2 » v(0) + |
Dt 2
|
w2x(0)- |
1 2
|
|
æ ç
è
|
Dt 2
|
ö ÷
ø
|
2
|
w2v(0) |
|
File translated from
TEX
by
TTH,
version 2.86.
On 30 Apr 2005, 16:51.