K. Taubert, W. Wiedl:   Differentialgleichungen mit Matlab

Steifigkeit bei linearen Problemen.

Beispiel 1

Wir betrachten das lineare System 1. Ordnung:
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:
y1(0) = 0.99y2(0) = 1.00
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:
  M = 0 +1
-20 -21
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

Intervall1.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/JCV0.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/JCV0.18 0.28 0.55 1.17

Tabelle 1a: Schrittweiten, Integration bis 1.oe-2

Intervall1.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/JCV8.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/JCV7.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: 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-21.25e-2 1.11e-24.48e-3
ode113 8.16e-38.03e-3 8.00e-33.50e-3
ode45 1.66e-21.65e-2 1.64e-21.58e-2
ode23s 3.16e+04.90e-1 5.19e-25.21e-3
ode23s/JCV3.13e+04.90e-1 5.19e-25.22e-3
ode23t 1.92e+03.15e-1 3.38e-23.38e-3
ode15s 1.92e+06.58e-1 2.77e-11.04e-1
ode15s/J 1.92e+06.58e-1 2.77e-11.04e-1
ode15s/JC 1.92e+06.58e-1 2.77e-11.04e-1
ode15s/C 1.92e+06.58e-1 2.77e-11.04e-1
ode15s/V 1.92e+06.58e-1 2.77e-11.04e-1
ode15s/JCV1.92e+06.58e-1 2.77e-11.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:

ab, sondern auch von den: 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:

Die Situation verändert sich, wenn man anderere Genauigkeitsanforderungen an die Integratoren stellt, da diese darauf mit unterschiedlichem Mehr- bzw. Minderaufwand reagieren. Zusammenfassend können wir sagen:

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:

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:

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:

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:

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.

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

  1. Ruby Laser Oszillator