Stabilitätsfunktion

Die Stabilitätsfunktion ist in der Numerik ein Hilfsmittel, um Lösungsverfahren für gewöhnliche Differentialgleichungen zu analysieren. Die einfache Testgleichung von Germund Dahlquist y ( t ) = λ y ( t ) ,   y ( 0 ) = 1 {\displaystyle y'(t)=\lambda y(t),\ y(0)=1} mit λ C {\displaystyle \lambda \in \mathbb {C} } besitzt als Lösung die Exponentialfunktion y ( t ) = e λ t {\displaystyle y(t)=e^{\lambda t}} . Bei den meisten Verfahren für gewöhnliche Differentialgleichungen kann man die berechnete Näherungslösung nach einem Zeitschritt mit einer Schrittweite h {\displaystyle h} ebenfalls als eine Funktion schreiben, die nur vom Produkt z = h λ C {\displaystyle z=h\lambda \in \mathbb {C} } abhängt. Diese Funktion ist die Stabilitätsfunktion und wird oft mit R ( z ) {\displaystyle R(z)} bezeichnet. Durch einen Vergleich mit der Exponentialfunktion e z = e h λ {\displaystyle e^{z}=e^{h\lambda }} bekommt man grundlegende Informationen über das numerische Verfahren. So beziehen sich einige Stabilitätsbegriffe auf die Eigenschaften von R ( z ) {\displaystyle R(z)} .

Stabilitätsgebiet und Stabilitätsbegriffe

Mit Hilfe der Stabilitätsfunktion R ( z ) {\displaystyle R(z)} lässt sich das Stabilitätsgebiet S {\displaystyle S} beschreiben und berechnen in der Form

S = { z C : | R ( z ) | < 1 } . {\displaystyle S=\{z\in \mathbb {C} :|R(z)|<1\}.}

Denn bei Einschrittverfahren gilt für die Näherungen y n {\displaystyle y_{n}} zum Zeitpunkt t n = n h {\displaystyle t_{n}=nh} die Beziehung y n = R ( z ) y n 1 = = ( R ( z ) ) j y n j = = ( R ( z ) ) n y 0 {\displaystyle y_{n}=R(z)y_{n-1}=\ldots =\left(R(z)\right)^{j}y_{n-j}=\ldots =\left(R(z)\right)^{n}y_{0}} und daher gilt

y n n 0 z S . {\displaystyle y_{n}{\xrightarrow {n\to \infty }}0\iff z\in S.}

Wenn S {\displaystyle S} die ganze linke komplexe Halbebene umfasst, heißt das Verfahren A-stabil. Dann ist der Betrag von R {\displaystyle R} in der ganzen offenen linken Halbebene kleiner als 1. Besonders günstig für ein Verfahren ist es, wenn R ( z ) {\displaystyle R(z)} außerdem noch den Grenzwert 0 hat, wenn z {\displaystyle z} auf der reellen Achse gegen {\displaystyle -\infty } strebt, sodass sich also der Betrag von R ( z ) {\displaystyle R(z)} dort asymptotisch wie die Exponentialfunktion verhält. Dann heißt das Verfahren L-stabil.

Beispiel

Das explizite Euler-Verfahren y n + 1 = y n + h f ( t n , y n ) {\displaystyle y_{n+1}=y_{n}+hf(t_{n},y_{n})} ergibt für die Testgleichung mit f ( t , y ) = λ y {\displaystyle f(t,y)=\lambda y} nach einem Schritt

y 1 = y 0 + h λ y 0 = ( 1 + h λ ) y 0 {\displaystyle y_{1}=y_{0}+h\lambda y_{0}=(1+h\lambda )y_{0}} ,

also gilt für seine Stabilitätsfunktion R ( z ) = 1 + z {\displaystyle R(z)=1+z} . Sein Stabilitätsgebiet besteht daher aus allen komplexen Zahlen z {\displaystyle z} mit | 1 + z | < 1 {\displaystyle |1+z|<1} , was dem Inneren des Kreises mit Mittelpunkt 1 {\displaystyle -1} und Radius 1 {\displaystyle 1} in der komplexen Zahlenebene entspricht.

Für das implizite Euler-Verfahren y n + 1 = y n + h f ( t n + 1 , y n + 1 ) {\displaystyle y_{n+1}=y_{n}+hf(t_{n+1},y_{n+1})} folgt dagegen mit f ( t , y ) = λ y {\displaystyle f(t,y)=\lambda y}

y 1 = y 0 + h λ y 1 y 1 = 1 1 h λ y 0 {\displaystyle y_{1}=y_{0}+h\lambda y_{1}\iff y_{1}={\frac {1}{1-h\lambda }}y_{0}} ,

also R ( z ) = 1 1 z {\displaystyle R(z)={\frac {1}{1-z}}} . Das Stabilitätsgebiet ist nun durch die Bedingung | 1 1 z | < 1 {\displaystyle |{\tfrac {1}{1-z}}|<1} gegeben, die mit

| 1 z | > 1 {\displaystyle |1-z|>1}

gleichwertig ist, was dem Äußeren des Kreises mit Mittelpunkt 1 {\displaystyle 1} und Radius 1 {\displaystyle 1} entspricht. Es enthält daher die ganze offene linke Halbebene und somit ist das implizite Euler-Verfahren A-stabil. Wegen lim z 1 1 z = 0 {\displaystyle \lim _{z\to -\infty }{\frac {1}{1-z}}=0} ist es sogar L-stabil.

Die Stabilitätsfunktion von Runge-Kutta-Verfahren

Runge-Kutta-Verfahren sind vollständig durch die Koeffizienten A , b , c {\displaystyle A,b,c} aus ihrem Butcher-Tableau festgelegt. Bei der Testgleichung ist der Anfangswert y 0 = 1 {\displaystyle y_{0}=1} und für die Stufen ergibt sich im ersten Zeitschritt

k i = λ ( 1 + h j = 1 s a i j k j ) , i = 1 , , s . {\displaystyle k_{i}=\lambda \left(1+h\sum _{j=1}^{s}a_{ij}k_{j}\right),\quad i=1,\dotsc ,s.}

Dies ist ein quadratisches lineares Gleichungssystem für den Vektor k = ( k 1 , , k s ) T {\displaystyle k=(k_{1},\dotsc ,k_{s})^{T}} in der Form ( I z A ) k = λ e {\displaystyle (I-zA)k=\lambda e} mit dem Vektor e = ( 1 , , 1 ) T . {\displaystyle e=(1,\dotsc ,1)^{T}.} Mit dessen Lösung bekommt man dann die Runge-Kutta-Näherung y 1 y ( h ) {\displaystyle y_{1}\approx y(h)} in der Form

y 1 = y 0 + h j = 1 s b j k j = 1 + h b T k = 1 + z b T ( I z A ) 1 e =: R ( z ) . {\displaystyle y_{1}=y_{0}+h\sum _{j=1}^{s}b_{j}k_{j}=1+hb^{T}k=1+zb^{T}(I-zA)^{-1}e=:R(z).}

Dies ist bei Runge-Kutta-Verfahren eine rationale Funktion, daher wird sie gerne mit R ( z ) {\displaystyle R(z)} bezeichnet.

Bei expliziten Runge-Kutta-Verfahren ist die Koeffizientenmatrix A {\displaystyle A} eine strikt untere Dreiecksmatrix, daher bricht die Neumann-Reihe von ( I z A ) 1 {\displaystyle (I-zA)^{-1}} nach s {\displaystyle } Summanden ab und man bekommt

R ( z ) = 1 + z b T ( I z A ) 1 e = 1 + z b T e + z 2 b T A e + + z s b T A s 1 e . {\displaystyle R(z)=1+zb^{T}(I-zA)^{-1}e=1+zb^{T}e+z^{2}b^{T}Ae+\dotsb +z^{s}b^{T}A^{s-1}e.}

Daher ist die Stabilitätsfunktion eines expliziten Runge-Kutta-Verfahrens ein Polynom, solche Verfahren können nicht A-stabil sein.

Bei impliziten Runge-Kutta-Verfahren sind aber z. B. die Gauß-Legendre-Verfahren A-stabil. Die Stabilitätsfunktionen dieser speziellen Verfahren sind sogar sehr gute Approximationen an die Exponentialfunktion, nämlich die sogenannten Padé-Approximationen.

Die Stabilitätsfunktion von Mehrschrittverfahren

Wendet man ein lineares Mehrschrittverfahren j = 0 m α j y n j = h j = 0 m β j f ( y n j ) {\displaystyle \sum _{j=0}^{m}\alpha _{j}y_{n-j}=h\sum _{j=0}^{m}\beta _{j}f(y_{n-j})} auf die Testgleichung an, ergibt sich wieder mit z = h λ {\displaystyle z=h\lambda } die Gleichung

j = 0 m α j y n j z j = 0 m β j y n j = j = 0 m ( α j z β j ) y n j = 0. {\displaystyle \sum _{j=0}^{m}\alpha _{j}y_{n-j}-z\sum _{j=0}^{m}\beta _{j}y_{n-j}=\sum _{j=0}^{m}(\alpha _{j}-z\beta _{j})y_{n-j}=0.}

Dies ist eine lineare Differenzengleichung, die man einfach lösen kann. Denn die Folge y n = u n {\displaystyle y_{n}=u^{n}} ist eine nichttriviale Lösung dieser Differenzengleichung, wenn u eine Nullstelle des charakteristischen Polynoms

0 = ! j = 0 m α j u m j z j = 0 m β j u m j = ϱ ( u ) z σ ( u ) {\displaystyle 0{\stackrel {!}{=}}\sum _{j=0}^{m}\alpha _{j}u^{m-j}-z\sum _{j=0}^{m}\beta _{j}u^{m-j}=\varrho (u)-z\sigma (u)}

ist, wobei man die Polynome

ϱ ( u ) = j = 0 m α j u m j {\displaystyle \varrho (u)=\sum _{j=0}^{m}\alpha _{j}u^{m-j}}
σ ( u ) = j = 0 m β j u m j {\displaystyle \sigma (u)=\sum _{j=0}^{m}\beta _{j}u^{m-j}}

eingeführt hat. Also bekommt man mit den von z {\displaystyle z} abhängenden Nullstellen u {\displaystyle u} des Polynoms ϱ ( u ) z σ ( u ) {\displaystyle \varrho (u)-z\sigma (u)} die Lösungen u n {\displaystyle u^{n}} zur Testgleichung und daher liegt z {\displaystyle z} im Stabilitätsgebiet des Verfahrens, wenn alle diese Lösungen gegen 0 gehen für n {\displaystyle n\to \infty } . Daher kann man die betragsmaximale Nullstelle | u ( z ) | {\displaystyle |u(z)|} als Stabilitätsfunktion des Verfahrens ansehen.

Stabilitätsgebiet für das 6-stufige BDF-Verfahren

Diese Interpretation erscheint sehr unhandlich. Allerdings interessiert man sich oft weniger für die Stabilitätsfunktion, sondern für das Stabilitätsgebiet S {\displaystyle S} . Der Rand dieses Gebietes besteht aus denjenigen z C {\displaystyle z\in \mathbb {C} } , bei dem für die Nullstellen | u | = 1 {\displaystyle |u|=1} gilt, wo die Nullstellen also auf dem komplexen Einheitskreis liegen. Da ϱ ( u ) z σ ( u ) = 0 z = ϱ ( u ) / σ ( u ) {\displaystyle \varrho (u)-z\sigma (u)=0\Leftarrow z=\varrho (u)/\sigma (u)} gilt, ist die Bestimmung des Stabilitätsgebiets bei Mehrschrittverfahren sogar besonders einfach, denn seinen Rand erhält man i. W. explizit durch

S = { ϱ ( u ) σ ( u ) : | u | = 1 } = { ϱ ( e i φ ) σ ( e i φ ) : φ [ 0 , 2 π ) } . {\displaystyle \partial S={\Big \{}{\frac {\varrho (u)}{\sigma (u)}}:\,|u|=1{\Big \}}={\Big \{}{\frac {\varrho (e^{i\varphi })}{\sigma (e^{i\varphi })}}:\,\varphi \in [0,2\pi ){\Big \}}.}

Als Beispiel wird das Stabilitätsgebiet für das 6-stufige BDF-Verfahren gezeigt.

Die Stabilitätsfunktion von allgemeinen linearen Verfahren

Obwohl auch Mehrschrittverfahren in der Gestalt von allgemeinen linearen Verfahren geschrieben werden können, ist die Struktur ähnlich derjenigen der Runge-Kutta-Verfahren weiter oben. Daher bekommt man ein ähnliches Ergebnis. Für den Vektor Y {\displaystyle Y} der Stufenlösungen gilt

Y = z A Y + U y [ n 1 ] Y = ( I z A ) 1 U y [ n 1 ] {\displaystyle Y=zAY+Uy^{[n-1]}\quad \Rightarrow Y=(I-zA)^{-1}Uy^{[n-1]}}

und der Zeitschritt wird daher zu

y [ n ] = z B Y + V y [ n 1 ] = ( V + z B ( I z A ) 1 U ) y [ n 1 ] . {\displaystyle y^{[n]}=zBY+Vy^{[n-1]}=(V+zB(I-zA)^{-1}U{\big )}y^{[n-1]}.}

In jedem Zeitschritt erfolgt also die Multiplikation mit derselben Matrix

M ( z ) = V + z B ( I z A ) 1 U . {\displaystyle M(z)=V+zB(I-zA)^{-1}U.}

Es gilt daher y [ n ] = M ( z ) n y [ 0 ] 0 ( n ) {\displaystyle y^{[n]}=M(z)^{n}y^{[0]}\to 0\,(n\to \infty )} , wenn die Potenzen von M ( z ) {\displaystyle M(z)} gegen 0 gehen, also alle Eigenwerte von M ( z ) {\displaystyle M(z)} innerhalb des komplexen Einheitskreises liegen. Daher kann man hier den Spektralradius von M ( z ) {\displaystyle M(z)} als Stabilitätsfunktion R ( z ) {\displaystyle R(z)} in der Definition des Stabilitätsgebiets S {\displaystyle S} ansehen.

Weitergehende Bedeutung für lineare Systeme

Die obige Testgleichung von Dahlquist ist sehr einfach, hat aber eine weitergehende Bedeutung für Systeme von linearen, autonomen und homogenen Differentialgleichungen

y ( t ) = Q y ( t ) , y ( 0 ) = y 0 , Q R d × d . {\displaystyle y'(t)=Qy(t),\quad y(0)=y_{0},\quad Q\in \mathbb {R} ^{d\times d}.}

Die exakte Lösung ist y ( t ) = e t Q y 0 {\displaystyle y(t)=e^{tQ}y_{0}} mit dem Matrixexponential e t Q {\displaystyle e^{tQ}} . Die numerische Lösung y n {\displaystyle y_{n}} kann man jetzt mit der Matrix-Stabilitätsfunktion R ( t Q ) {\displaystyle R(tQ)} darstellen. Wenn dabei J = P 1 Q P {\displaystyle J=P^{-1}QP} die Jordan-Normalform von Q   ( = P J P 1 ) {\displaystyle Q\ (=PJP^{-1})} ist, gilt

y n = ( R ( h Q ) ) n y 0 = P ( R ( h J ) ) n P 1 y 0 . {\displaystyle y_{n}={\big (}R(hQ){\big )}^{n}y_{0}=P{\big (}R(hJ){\big )}^{n}P^{-1}y_{0}.}

Bei einer diagonalisierbaren Matrix Q {\displaystyle Q} ist, ist R ( h J ) {\displaystyle R(hJ)} eine Diagonalmatrix mit den Diagonalelementen R ( h λ j ) {\displaystyle R(h\lambda _{j})} . Wenn für alle Eigenwerte λ j {\displaystyle \lambda _{j}} von Q {\displaystyle Q} gilt, dass h λ j S {\displaystyle h\lambda _{j}\in S} ist, dann konvergiert auch hier y n 0 ( n ) {\displaystyle y_{n}\to 0\,(n\to \infty )} . Bei dieser Differentialgleichung sieht man gleichzeitig, dass es sinnvoll ist, S {\displaystyle S} als offene Menge zu definieren. Denn im diagonalisierbaren Fall bleiben zwar Lösungen auf dem Rand mit h λ j S {\displaystyle h\lambda _{j}\in \partial S} noch beschränkt, aber im Allgemeinen nicht mehr, wenn mehrfache Eigenwerte mit Jordanblöcken auftreten.

Literatur

  • E. Hairer, G. Wanner: Solving Ordinary Differential Equations II, Stiff problems. Springer Verlag.
  • K. Strehmel, R. Weiner, H. Podhaisky: Numerik gewöhnlicher Differentialgleichungen – Nichtsteife, steife und differential-algebraische Gleichungen. Springer Spektrum, 2012.