| K. Taubert, W. Wiedl: Differentialgleichungen mit Matlab |
y1'(t) y2'(t) |
= |
y2(t) - 1 -200 y1(t) - 201 y2(t) + 1 |
oder anders formuliert:
| y'(t) =
| 0
| -1
| y +
| -1
|
| -200
| -201
| -1
|
mit den Anfangswerten:
Die Eigenwerte eig(M)
sind -1 und -200. Die Lösungen y1(t) und y2(t)
weisen daher jeweils Komponenten der Form exp(-t) und exp(-200*t) auf.
Welchen Anteil jede dieser Komponenten an y1(t) bzw.
y2(t) hat, ergibt sich aus den Anfangswerten. Man erhält
mit einer einfachen Rechnung:
| y1(t) | = | 2*exp(-t) - 0.01*exp(-200*t) - 1
|
| y2(t) | = | -2*exp(-t) + 2.00*exp(-200*t) + 1
|
Bild 1 zeigt die Lösungskurven zu diesem Problem,
diese sind einmal mit linear, das andere mal mit logarithmisch skalierter
x-Achse wiedergegeben.
Beide Eigenwerte sind negativ und liefern einen Steifigkeitsquotienten
von 200. Die Eigenwerte und der Steifigkeitsquotient sind konstant, da
das System linear ist.
Numerische Integration
Bild 2 zeigt den Integrationsaufwand, der mit
den einzelnen Integratoren getrieben werden muß, um das Anfangswertproblem
über ein Intervall von 0 bis t zu integrieren, wobei t bis maximal 10
läuft. Der Aufwand wird angegeben in flops, gemessen mit der
flops-Funktion,
Sekunden, gemessen mit den Funktionen tic & toc,
sowie in Integrationsschritten.
Angegeben ist der Aufwand für die beiden expliziten Integratoren
ode23 (rot, durchgezogen) und ode45 (blau, durchgezogen), sowie für
die impliziten Integratoren ode23s (rot, gestrichelt), ode15s (blau,
gestrichelt) und ode23t (schwarz, gestrichelt).
Das unterschiedliche Verhalten der beiden Gruppen von Integratoren
ist offensichtlich. Bei den expliziten Integratoren wächst der
Aufwand linear mit der Intervalllänge. Diese Integratoren müssen
für ein bestimmtes Integrationsintervall von t nach t+delta
unabhängig von t etwa denselben Aufwand treiben. Bei den impliziten
Integratoren ist der Aufwand zur Integration von t nach t+delta
dagegen für kleine t deutlich größer als für große t.
Bild 3 zeigt die Schrittweiten, mit denen die
einzelnen Integratoren bei der Integration von 0 bis 30 arbeiten, auch
hier sieht man deutlich das unterschiedliche Verhalten der beiden Gruppen.
Am Anfang des Integrationsintervalles benutzen die Integratoren beider
Gruppen in etwa dieselben Schrittweiten. Während die Schrittweiten der
impliziten Integratoren aber im Verlaufe der Integration auf etwa 2.5
anwachsen, bleiben die der expliziten Integratoren im Bereich von
2.0e-2.
Die Schrittweite der expliziten Integratoren liegt im gesamten
Integrationsintervall in der Größenordnung von 1/|µ1|, wobei µ1 durch
den betragsgrößten Eigenwert µ1=-200 gegeben ist.
Die Schrittweite der impliziten Integratoren liegt nur zu Beginn der
Integration in diesem Bereich und richtet sich dann nach 1/|µ2|, wobei
µ2=-1 der zweite Eigenwert ist.
Bild 3a zeigt zum Vergleich die Schrittweiten
bei einem linearen Differentialgleichungssystem y' = M*y + v mit der Matrix:
Vektor v, Anfangswerte und Genauigkeitsanforderungen sind dieselben
wie bisher. Eigenwerte dieser Matrix sind -1 und -20. Die nicht-steifen
Integratoren erreichen hier, wie zu erwarten, etwa 10 mal längere
Schrittweiten wie beim ursprünglichen System, die steifen Integratoren
erreichen dieselben Schrittweiten. Da sich der betragskleinere
Eigenwert nicht geändert hat, ist auch dies zu erwarten.
Schaut man sich die Lösungskurven des Problems
genauer an, so sieht man, daß die steife Komponente exp(-200*t)
nur am Anfang des Integrationsintervalles, etwa bis t=1.0e-2, einen wesentlichen Beitrag
zu den Lösungswerten liefert. Bild 4 zeigt
diesen Anteil für y1 und y2 in graphischer Form.
In dieser Transientenphase kann die steife Komponente nicht
vernachlässigt werden, jeder Integrator muß seine Schrittweite am
Eigenwert µ1=-200 orientieren, also Schrittweiten in der Größenordnung
von 1/|µ1| verwenden. Steife (implizite) Interatoren müssen hier dieselben
kleinen Schritte machen wie die nicht-steifen (expliziten) Integratoren, da letztere
weniger Aufwand pro Schritt erfordern sind sie vorzuziehen.
Nach der Transientenphase ist der Beitrag der steifen Komponente zu
den Lösungswerten dagegen minimal. Die steifen Integratoren können
dies ausnutzen und ihre Schrittweiten jenen Komponenten anpassen, die
noch aktiv sind, also noch einen nennenswerten Beitrag zu den
Lösungswerten leisten, die nicht-steifen Integratoren können dies nicht,
ihre Schrittweite wird weiterhin durch µ1 bestimmt.
Eine Konsequenz daraus ist, daß die Wahl zwischen einem steifen und
einem nicht-steifen Integrator nicht nur vom Steifigkeitsquotienten,
sondern auch von der Länge des Integrationsintervalles und von den
Anfangswerten abhängt.
Die folgende Tabelle listet die Laufzeiten zur Integration des
Testproblems über dem Intervall von 0 bis 1.0e-2 auf, dieses Intervall
liegt in der Transientenphase des Problems.
Merkliche Unterschiede ergeben sich erst bei höheren
Genauigkeitsanforderungen. Die expliziten Integratoren höherer
Ordnung sind hier, wie zu erwarten, schneller als die impliziten
Integratoren höherer Ordnung.
Wirklich auffallend ist aber der Unterschied zwischen den Verfahren
niedriger Ordnung (ode23, ode23s, ode23t), die für hohe
Genauigkeitsanforderungen ungeeignet sind, und den Verfahren
höherer Ordnung.
Tabelle 1: Laufzeiten, Integration bis 1.0e-2
| Intervall | 1.0e-2
|
|---|
| RelTol | 1.0e-2 | 1.0e-5 | 1.0e-8 | 1.0e-11
|
|---|
| ode23 | 0.22 | 0.20
| 1.49 | 15.15
|
|---|
| ode113 | 0.30 | 0.25
| 0.41 | 0.69
|
|---|
| ode45 | 0.20 | 0.11
| 0.21 | 0.66
|
|---|
| ode23s | 0.33 | 0.61
| 5.13 | 53.17
|
|---|
| ode23s/JCV | 0.15 | 0.34
| 2.97 | 29.61
|
|---|
| ode23t | 0.31 | 0.51
| 4.15 | 41.77
|
|---|
| ode15s | 0.36 | 0.28
| 0.49 | 1.08
|
|---|
| ode15s/J | 0.17 | 0.28
| 0.52 | 1.13
|
|---|
| ode15s/JC | 0.16 | 0.28
| 0.52 | 1.14
|
|---|
| ode15s/C | 0.16 | 0.28
| 0.51 | 1.09
|
|---|
| ode15s/V | 0.18 | 0.27
| 0.53 | 1.13
|
|---|
| ode15s/JCV | 0.18 | 0.28
| 0.55 | 1.17
|
|---|
Tabelle 1a: Schrittweiten, Integration bis 1.oe-2
| Intervall | 1.0e-2
|
|---|
| RelTol | 1.0e-2 | 1.0e-5 | 1.0e-8 | 1.0e-11
|
|---|
| ode23 | 8.33e-4 | 2.17e-4
| 2.18e-5 | 2.18e-6
|
|---|
| ode113 | 7.14e-4 | 4.55e-4
| 2.86e-4 | 1.59e-4
|
|---|
| ode45 | 8.33e-4 | 8.33e-4
| 3.26e-4 | 8.55e-5
|
|---|
| ode23s | 8.33e-4 | 1.75e-4
| 1.75e-5 | 1.75e-6
|
|---|
| ode23s/JCV | 8.33e-4 | 1.75e-4
| 1.75e-5 | 1.75e-6
|
|---|
| ode23t | 7.69e-4 | 1.14e-4
| 1.17e-5 | 1.17e-6
|
|---|
| ode15s | 7.14e-4 | 2.94e-4
| 1.35e-4 | 5.71e-5
|
|---|
| ode15s/J | 7.14e-4 | 2.94e-4
| 1.35e-4 | 5.71e-5
|
|---|
| ode15s/JC | 7.14e-4 | 2.94e-4
| 1.35e-4 | 5.71e-5
|
|---|
| ode15s/C | 7.14e-4 | 2.94e-4
| 1.35e-4 | 5.71e-5
|
|---|
| ode15s/V | 7.14e-4 | 2.94e-4
| 1.35e-4 | 5.71e-5
|
|---|
| ode15s/JCV | 7.14e-4 | 2.94e-4
| 1.35e-4 | 5.71e-5
|
|---|
Tabelle 2 listet analog die Laufzeiten für die Integration über
dem Intervall von 0 bis 100 auf. Dieses Intervall enhält zwar die
Transientenphase, diese hat aber kaum Einfluß auf die Laufzeiten.
Praktisch im ganzen Intervall ist das Problem steif. Die Integratoren
machen fast die ganze Zeit nichts anderes als aus vorliegende +1 bzw. -1
Werten neue +1 bzw. -1 Werte zu berechnen.
Bei niederen Genauigkeitsanforderungen haben wir eine Zweiteilung der
Integratoren, die impliziten Integratoren sind schneller als die
expliziten.
Bei hohen Genauigkeitsanforderungen ergibt sich eher eine Dreiteilung:
- Die Verfahren niederer Ordnung sind die langsamsten, interessanterweise
sind die steifen Integratoren (ode23s und ode23t) niederer Ordnung bei
einer relativen Toleranz von 1.oe-11 sogar langsamer als die nicht-steifen
Integratoren niederer Ordnung.
- Die expliziten Verfahren höherer Ordnung (ode113 nur mit etwas
gutem Willen) liegen in der Mittelgruppe.
- Die impliziten Integratoren höherer Ordnung sind die schnellsten.
Auffallend an Tabelle 2 ist, daß der Aufwand der expliziten Integratoren
nur unwesentlich von den Genauigkeitsanforderungen beeinfluszlig;t wird.
Bei ode23 macht sich dieser Einfluß erst ab 1.oe-8 bemerkbar, bei
ode45 und ode113 gar nicht. Die Schrittweite der expliziten Integratoren
wird offensichtlich durch andere Parameter eingeschränkt, so daß
die Genauigkeitsanforderungen gar nicht oder erst bei ganz hohen Anforderungen
wirksam werden.
Bei den impliziten Integratoren ist der Einfluß der Genauigkeitsanforderungen
auf den Integrationsaufwand dagegen offensichtlich.
Die Frage, ob ein Problem besser
mit einem impliziten oder expliziten Verfahren zu behandeln ist, hängt nicht nur vom
Steifigkeitskoeffizienten und dem Integrationsintervall (Transientenphase, Anfangswerte)
ab, sondern auch von den Genauigkeitsanforderungen. Werden diese so hoch gesetzt, daß
sie die Schrittweitenwahl bestimmen, so verlieren die impliziten Integratoren ihre
Vorteile gegenüber den expliziten.
Tabelle 2: Laufzeiten, Integration bis 100
| Intervall | 1.0e+2
|
|---|
| RelTol | 1.0e-2 | 1.0e-5 | 1.0e-8 | 1.0e-11
|
|---|
| ode23 | 27.01 | 27.08
| 30.76 | 82.35
|
|---|
| ode113 | 104.99 | 106.80
| 107.29 | 111.80
|
|---|
| ode45 | 32.58 | 33.37
| 33.90 | 34.46
|
|---|
| ode23s | 0.36 | 1.95
| 17.89 | 184.50
|
|---|
| ode23s/JCV | 0.25 | 1.03
| 9.87 | 104.22
|
|---|
| ode23t | 0.37 | 1.69
| 14.46 | 157.25
|
|---|
| ode15s | 0.35 | 0.94
| 2.13 | 5.58
|
|---|
| ode15s/J | 0.39 | 0.98
| 2.22 | 5.77
|
|---|
| ode15s/JC | 0.39 | 0.98
| 2.22 | 5.78
|
|---|
| ode15s/C | 0.33 | 0.94
| 2.13 | 5.56
|
|---|
| ode15s/V | 0.34 | 0.96
| 2.18 | 5.69
|
|---|
| ode15s/JCV | 0.39 | 0.98
| 2.20 | 5.74
|
|---|
Tabelle 2a: Schrittweiten, Integration bis 100
| Intervall | 1.0e+2
|
|---|
| RelTol | 1.0e-2 | 1.0e-5 | 1.0e-8 | 1.0e-11
|
|---|
| ode23 | 1.26e-2 | 1.25e-2
| 1.11e-2 | 4.48e-3
|
|---|
| ode113 | 8.16e-3 | 8.03e-3
| 8.00e-3 | 3.50e-3
|
|---|
| ode45 | 1.66e-2 | 1.65e-2
| 1.64e-2 | 1.58e-2
|
|---|
| ode23s | 3.16e+0 | 4.90e-1
| 5.19e-2 | 5.21e-3
|
|---|
| ode23s/JCV | 3.13e+0 | 4.90e-1
| 5.19e-2 | 5.22e-3
|
|---|
| ode23t | 1.92e+0 | 3.15e-1
| 3.38e-2 | 3.38e-3
|
|---|
| ode15s | 1.92e+0 | 6.58e-1
| 2.77e-1 | 1.04e-1
|
|---|
| ode15s/J | 1.92e+0 | 6.58e-1
| 2.77e-1 | 1.04e-1
|
|---|
| ode15s/JC | 1.92e+0 | 6.58e-1
| 2.77e-1 | 1.04e-1
|
|---|
| ode15s/C | 1.92e+0 | 6.58e-1
| 2.77e-1 | 1.04e-1
|
|---|
| ode15s/V | 1.92e+0 | 6.58e-1
| 2.77e-1 | 1.04e-1
|
|---|
| ode15s/JCV | 1.92e+0 | 6.58e-1
| 2.77e-1 | 1.04e-1
|
|---|
Es liegt nahe, das System während der Transientenphase mit einem
nicht-steifen und danach mit einem steifen Integrator zu behandeln.
Der Start eines Integrators ist immer mit einem gewissen Overhead
verbunden, Matlab unterstützt den Wechsel des Integrators nicht
durch einen fließenden Übergang. Der Overhead muß durch die schnellere
Integration der Transientenphase mit einem nicht-steifen Integrator
wettgemacht werden. Dies gelingt umso eher, je größer der Anteil der
Transientenphase am Integrationsintervall ist und je höher die
Genauigkeitsanforderungen sind.
| RelTol
| 1.0e-2
| 1.0e-5
| 1.0e-8
| 1.0e-11
|
|---|
| ode45/ode15s
| 0.765
| 1.234
| 2.343
| 6.375
|
|---|
| ode45/ode23t
| 0.578
| 1.672
| 11.594
| 123.672
|
|---|
Die Tabellen mit den Laufzeiten zeigen auch, daß zumindest beim
vorliegenden Problem, die steifen Integratoren relativ empfindlich
auf höhere Genauigkeitsanforderungen reagieren, die nicht-steifen
Integratoren dagegen relativ unempfindlich gegenüber solchen
Anforderungen sind.
Ob man ein lineares Problem nun mit einem steifen oder nicht-steifen
Integrator behandeln soll, hängt also nicht nur vom:
- Steifigkeitsquotienten
- Integrationsintervall (Anteil der Transientenphase)
ab, sondern auch von den:
- Genauigkeitsanforderungen
Da die Transientenphase wesentlich durch die Anfangswerte bestimmt wird,
könnte man auch die Anfangswerte in obige Liste aufnehmen.
Außerhalb der Transientenphase haben die beiden Lösungskomponenten
unseres Testproblems praktisch die Werte 1 und 0. Die Integratoren
machen also im ganzen Intervall danach nichts anderes als aus vorliegenden
0 bzw. 1 Werten neue 0 bzw. 1 Werte zu berechnen. Man kann die
Probleme, die die nicht-steifen Integratoren gegenüber den steifen
Integratoren bei der Integration eines steifen Problems haben,
verdeutlichen, wenn man die numerisch berechneten Lösungen in
t-Richtung stark gestaucht darstellt. Bild 5
und Bild 5a zeigen dies.
Sie sehen dort jeweils den
Verlauf der numerisch berechneten Lösungskurve y2(t)
über dem Intervall von t=29.5 bis 30, wobei die y-Achse immer einen
Ausschnitt von 1-2*RelTol bis 1+2*RelTol zeigt. RelTol hat bei
dieser Rechnung den Wert 1.0e-5.
Während die steifen Integratoren trotz der Stauchung noch glatte
Kurvenzüge liefern, liefern die nicht-steifen Integratoren
Zickzack-Kurven. Die Schrittrichtung
der steifen Integratoren sind also wesentlich besser als die der
nicht-steifen Integratoren.
WARUM IST DAS SO ?
AUTOMATISCHES ERKENNEN WANN TRANSIENTENPHASE BEENDET
..................................................................
Zu diesen Anfangswerten [2 0] stellt:
- Bild 1 die exakte Lösung dar,
sowie den Anteil, der von der langsamen Komponente alleine geliefert wird. Es hängt
natürlich von der geforderten Lösungsgenauigkeit ab, ab wann man sagen kann,
daß der Anteil der schnellen bzw. steifen Komponente vernachlässigt werden kann.
Wenn man vom optischen Eindruck dieses Bildes ausgeht, wird man etwa 0.05 sagen.
- Bild 2 den Aufwand (flops) dar, den verschiedene Integratoren bei
unterschiedlich langen Integrationsintervallen treiben. Man sieht, daß ab 1.6 alle
steifen Integratoren weniger Gleitkommaoperationen als alle nicht-steifen Integratoren erfordern
und daß der Aufwand der nicht-steifen Integratoren für noch längere Integrationsintervalle
erheblich schneller wächst als der für die steifen.
- Bild 3 den Aufwand (flops) dar, den ode23 und ode23s mit wachsendem
Integrationsintervall treiben müssen. Außerdem ist der Aufwand dargestellt, der entsteht, wenn
man mit ode23 bis 0.05 bzw. 0.1 integriert und dann mit ode23s weiterintegriert. Obwohl der Start eines
Integrators immer mit erheblichem Mehraufwand verbunden ist, sieht man, daß auf diese Weise
für die meisten Integrationsintervalle bei den hier geforderten Rechengenauigkeiten (AbsTol=1e-4, RelTol=1e-3)
der Aufwand für den hybriden Ansatz konkurrenzfähig ist.
Die Situation verändert sich, wenn man anderere Genauigkeitsanforderungen an die Integratoren stellt,
da diese darauf mit unterschiedlichem Mehr- bzw. Minderaufwand reagieren.
- Bild 4 ist da Äquivalent zu Bild 2, jedoch mit dem Wert 1.0-6 für
die Eigenschaft 'AbsTol' anstelle des Default-Wertes 1.0e-3. Die Grenze, ab der die steifen Integratoren
weniger Aufwand erfordern als die nicht-steifen, ist hier gegenüber Bild 2 deutlich nach hinten
verschoben.
- Bild 5 ist da Äquivalent zu Bild 3, jedoch mit den Werten AbsTol=1e-6
und RelTol=1e-6. Bei diesen Genauigkeite ist es offensichtlich von Vorteil, den Anfang des Intervalles
mit ode23 und den Rest, ab etwa 0.05 mit ode23s zu integrieren.
Zusammenfassend können wir sagen:
- das Differentialgleichungssystem liefert Lösungen mit sehr unterschiedlich schnellen
Lösungskomponenten und bringt dadurch die Voraussetzungen für steife Probleme mit.
Manche Autoren nennen solche Systeme steif, wobei ein steifes System nicht unbedingt zu einem
steifen Integrationsproblem führt. Im Verlaufe der Zeit weisen die Lösungen eines
solchen Systems in der Regel Phasen auf, in denen die schnellste oder die schnellsten
Komponenten nur einen unwesentlichen Beitrag zur Gesamtlösung beitragen. Die
Integration über einen solchen Bereich ist ein steifes Problem. In der Regel gibt
es aber auch Phasen, in denen der Beitrag der schnellsten Komponente zur Gesamtlösung
nicht unwesentlich ist, die Integration über einen solchen Bereich ist nicht-steif,
denn alle Integratoren müssen hier ihre Schrittweite nach der schnellten Komponente
richten, also hinreichend kleine Schrittweiten wählen. Wir wollen diese Bereiche
steife bzw. nicht-steife Bereiche nennen. Manchmal bezeichnet man steife Bereiche auch
als transiente Phasen eines Problems.
Bei einem linearen Anfangswertproblem ist die Problematik sehr viel einfacher als im
nicht-linearen Fall. Die Lösungskomponenten lassen sich durch die Eigenwerte
des Systems bestimmen. Wenn alle Eigenwerte negativ und darüberhinaus von
unterschiedlicher Größenordnung sind, in unserem Beispiel sind sie -1 und
-100, sind die Voraussetzungen für ein steifes Problem gegeben. Darüber hinaus
kann die schnellste Komponente nur am Anfang des Integrationsintervalles einen
wesentlichen Beitrag zur Gesamtlösung leisten. Ob dies überhaupt der Fall ist,
hängt im linearen Fall von den Anfangswerten ab.
In unserem Beispiel mit den Anfangswerten
[2 0] haben wir am Anfang einen nicht-steifen Bereich, der dann allmählich
in einen steifen Bereich übergeht und 'immer steifer' wird.
- das Integrationsintervall bestimmt, ob die Integration in einem steifen
oder nicht-steifen Bereich oder aber über eine Folge von Bereichen
durchzuführen ist, in denen sich steife und nicht-steife Bereiche abwechseln.
Wobei zu anzumerken ist, daß der Übergang zwischen solchen Bereichen
verschieden schnell ausfallen kann.
- bei unterschiedlichen Genauigkeitsanforderungen verschieben sich die Grenzen zwischen
steifen und nicht-steifen Bereichen, weil unterschiedliche Integratoren (im Zweifelsfalle
ode15s) unterschiedlich auf Genauigkeitsanforderungen reagieren.
Beispiel 2.3
Wir betrachten dasselbe lineare System wie in Beispiel 2.2, diesmal
jedoch mit den Anfangswerten [1 -1]. Als Lösung erhalten wir:
y1(t) = exp(-t)
y2(t) = -exp(-t)
Das System der Differentialgleichungen bringt alle Voraussetzungen für ein steifes
Problem mit sich, die Anfangswerte sorgen aber dafür, daß gar keine steife
d.h. schnelle Lösungskomponente vorhanden ist. Wenn im Verlaufe der Integration aber
kleine Fehler eingeschleppt werden, muß im nachfolgenden Integrationsschritt ein
anderes Anfangswertproblem gelöst werden, in dem die steife Lösungskomponente
vorhanden ist. Ob hier ein steifes Problem vorliegt oder nicht, hängt also weitgehend
von den Rechenungenauigkeiten ab.
In der Tabelle sind jeweils die benötigten Gleitkommaoperationen
und Durchlaufzeiten (systemabhängig) verschiedener Integratoren bei verschiedenen
Genauigkeitsanforderungen angegeben. Die Bezeichnung a/r steht dabei für AbsTol=1e-a
und RelTol=1e-r, also z.B. 12/9 für AbsTol=1e-12 und RelTol=1e-9. Die Integration
läuft von 0 bis 5.
Die Tabelle zeigt:
- bei geringen Genauigkeitsanforderungen sind die steifen Integratoren effizienter als
die expliziten Integratoren, bei höheren Anforderungen verschwindet dieser
Unterschied und der Unterschied zwischen Verfahren höherer und niedrigerer
Ordnung ist wesentlich bedeutsamer. Dies ist nicht erstaunlich, da wir schon wissen,
daß die Steifigkeit des Problems erst durch Rechenungenauigkeiten eingeschleppt
wird.
- es gibt keinen einfachen Zusammenhang zwischen den benötigten Gleitkommaoperationen
und der Durchlaufszeit, der über mehrere Verfahren hinweg Bestand hat.
2.3 Absolut stabile Integration
Um den großen Aufwand zu erklären, den explizite Verfahren bei der Integration
steifer Probleme treiben müssen, betrachten wir das Testproblem: y' = -k y, y(0) = 1
.
mit k > 0. Üblicherweise integriert man ein solches Problem so genau, daß auf
ein Zeitintervall der Länge 1/k mehrere Integrationsschritte entfallen. Für das
Produkt aus Schrittweite h und inverser Zeitkonstante k bedeutet dies: h*k < 1. Unabhängig
vom Integrator erhält man dann als Ergebnis einen konvexen Polygonzug, der dem Verlauf
der exakten Lösung mehr oder weniger genau folgt. Für h*k = 0.5 (konstant) sind
die Ergebnisse für verschiedene Integratoren im Bild dargestellt.
Was passiert nun, wenn wir die Schrittweite erhöhen? Wenn es darum geht, allein die
Testgleichung zu integrieren, werden wir das nicht tun. Wenn die Testgleichung aber nur eine
Lösungskomponente beschreibt, die gegenüber einer anderen Lösungskomponente
kaum in Erscheinung tritt, wie dies bei steifen Problemen der Fall ist, ist dies ja gerade
das Verhalten, das wir von einem steifen Integrator erwarten.
Das explizite Eulerverfahren, liefert für unser Testproblem:
y(istep+1) = ( 1 - h*k ) y(istep);
für h*k > 1 Werte mit alternierendem Vorzeichen. Solange diese Werte dem
Betrage nach von Schritt zu Schritt weiter gedämpft werden oder zumindest nicht
anwachsen, wird uns dieses Verhalten in der Regel nicht stören. Die Lösung eines
steifen Problems wird praktisch durch die nicht-steifen Lösungskomponenten geliefert
und der Beitrag einer so integrierten steifen Komponente liefert nur eine unmerkliche
Schwingung zur gesamten Lösung.
Ein numerisches Verfahren integriert unser Testproblem absolut stabil, wenn die Folge der
gelieferten Werte | yn | monoton gegen 0 fällt.
Solange h*k < 2 bleibt, wird unser Testproblem von allen betrachteten Integratoren absolut stabil
integriert. Neben dem expliziten Euler-Verfahren also auch vom:
- impliziten Eulerverfahren
yn+1 = yn/(1+kh)
- der (impliziten) Trapezregel
yn+1 = yn*(2-kh)/(2+kh)
h*k = 2 stellt für das explizite Eulerverfahren einen Grenzfall dar, das Testproblem
wird ab diesem Wert nicht mehr absolut stabil integriert, für h*k = 2 liefert das explizite
Eulerverfahren Werte mit gleichbleibenden Betrag, für h*k > 2 Werte mit wachsendem
Betrag. In der Regel verfälschen nicht absolut stabil integrierte Lösungskomponenten auch
bei steifen Problemen die gesamte Lösung völlig und sind unbrauchbar.
In den Bildern zu h*k=5 und h*k=20 werden nur noch das implizite
Eulerverfahren und das Trapezverfahren berücksichtigt. Beide Verfahren integrieren das
Testproblem absolut stabil, unabhängig davon, wie groß der Wert
von h*k gewählt wird.
Zusammenfassend können wir zum Unterschied zwischen expliziten und steifen Integratoren sagen:
- das explizite Eulerverfahren integriert das Testproblem nur
für relativ kleine Werte h*k absolut stabil, insbesondere bleibt dieser Bereich wegen der
Bedingung h*k < 2 an k gebunden. Für ein steifes Problem bedeutet dies, daß
die Schrittweite des expliziten Eulerverfahrens (und dies gilt allgemein für alle
expliziten Verfahren) sich immer nach der schnellsten Lösungskomponente richten
muß, wenn das System als ganzes absolut stabil integriert werden soll. Das bedeutet aber
entsprechend kleine Schrittweiten.
- das implizite Eulerverfahren und die (implizite) Trapezregel integrieren das Testproblem
für alle Werte h*k > 0 absolut stabil. Bei einem steifen Problem kann die Schrittweite
unabhängig von k, also unabhängig von der schnellsten Lösungskomponente
gewählt werden, ohne daß die stabile Integration gefährdet wird.
Wir haben bisher vorausgesetzt, daß der Wert k im Testproblem
reell ist, es ist jedoch kein Problem, obige Überlegungen auf komplexe Werte k auszudehnen.
Im Bild ist der Verlauf der Oberfläche von exp(-k*t) für k=-1+i
dargestellt. Das Verhalten verschiedener Integratoren für dieses Testproblem bei 'größeren'
Schrittweiten h wird in einem anderen Bild dargestellt. Sie sehen hier
jeweils links den Realteil der gelieferten Lösung, rechts den Imaginärteil.
2.4 A-Stabilität
Den Bereich der Werte h*k der komplexen Zahlenebene, für die ein gegebener Integrator
die Testgleichung: y' = k y, y(0)=y0, k komplex
absolut stabil
integriert, nennt man den absoluten Stabilitätsbereich des Integrators.
Man benutzt die absoluten Stabilitätsbereiche zur Klassifizierung der Integratoren.
Dahlquist (1963) nennt einen Integrator A-Stabil, wenn sein absoluter Stabilitätsbereich
die gesamte negative Halbebene der komplexen Zahlen umfaßt.
Wir haben gesehen, daß das explizite Eulerverfahren nicht A-stabil sein kann, der
Bereich der absoluten Stabilität ist bei diesem Verfahren gegeben durch das Innere
des Kreises um -1 mit Radius 1.
Das implizite Eulerverfahren und die (implizite) Trapezregel sind dagegen A-stabil, dasselbe
gilt auch für das BFD-2 Verfahren:
yn+2 - 4/3 yn+1 + 1/3 yn = 2/3 h yn+2
A-stabile Verfahren sind offensichtlich gut geeignet zur Lösung steifer Probleme. Die
Klasse der A-stabilen Verfahren ist allerdings klein. Dahlquist (1963) hat gezeigt:
- ein explizites lineares Mehrschrittverfahren kann nicht A-stabil sein,
- ein implizites, A-stabiles lineares Mehrschritt-Verfahren hat maximal die Ordnung 2,
- unter allen impliziten, A-stabilen linearen Mehrschritt-Verfahren hat die Trapezregel
die kleinste Fehlerkonstante.
Diese Problematik hat dazu geführt, daß man neben den A-stabilen Verfahren auch
solche betrachtet, die einen kleineren Bereich absoluter Stabilität aufweisen. Widlund
(1967) nennt ein Verfahren A(alpha)-stabil, wenn sein Bereich absoluter Stabilität
einen symmetrischen Kegel mit dem Winkel alpha um die negative Halbachse der komplexen
Zahlenebene umfaßt.
- ein A(0)-stabiler Integrator hat also einen Bereich der absoluten Stabilität, der
die negative, reelle Halbachse der komplexen Zahlenebene umfaßt,
- ein A(45)-stabiler Integrator integriert alle Testgleichungen mit
-imag(k) <= real(k) <= imag(k), real(k) < 0 absolut stabil,
- ein A(90)-stabiler Integrator ist A-stabil.
2.5 Dämpfung und L-Stabilität
Wenn die Testgleichung y' = -k*y, k > 0 absolut stabil integriert wird, weiß man, daß die
gelieferten Lösungswerte yn mit wachsendem n monoton gegen 0 fallen, man
weiß jedoch nicht, wie stark diese Lösungswerte von Schritt zu Schritt gedämpft
werden.
Wenn eine steife Komponente absolut stabil integriert, dabei aber kaum gedämpft wird, kann
dies bei einem langen Integrationsintervall durchaus zu einem Problem werden.
Ideal wäre es, wenn die Lösungswerte yn entsprechend der exakten Lösung exp(-k*t)
gedäpft würden, das ist jedoch nicht einmal beim impliziten Euler-Verfahren der Fall.
Die Dämpfung in einem Schritt ist in der Regel abhängig von der Schrittweite h und man
wünscht sich, daß diese Abhängigkeit das qualitative Verhalten der exakten Lösung
wiedergibt, bei größerem h stärker zu dämpfen. Ehle (1969) hat A-stabile
Integratoren mit dieser Eigenschaft L-stabil genannt.
Man kann sich leicht davon überzeugen, daß das implizite Euler-Verfahren und das BDF-2
Verfahren L-stabil sind, die Trapez-Regel dagegen nicht.
Die Trapezregel schleppt steife Komponenten bei 'größeren'
Schrittweiten in Form von Schwingungen mit, die um so weniger gedämpft werden,
je größer h ist.
2.6 Fallbeispiele
- Ruby Laser Oszillator