Runge-Kutta-Verfahren






Einige Runge-Kutta-Verfahren im Vergleich.


Die nach Carl Runge und Martin Wilhelm Kutta benannten s{displaystyle s}s-stufigen Runge-Kutta-Verfahren sind Einschrittverfahren zur näherungsweisen Lösung von Anfangswertproblemen in der numerischen Mathematik. Wenn von dem Runge-Kutta-Verfahren gesprochen wird, ist in der Regel das klassische Runge-Kutta-Verfahren gemeint; dieses bildet jedoch nur einen Spezialfall dieser Familie von Verfahren.




Inhaltsverzeichnis






  • 1 Allgemeine Formulierung


    • 1.1 Beispiel




  • 2 Butcher-Tableau


  • 3 Konsistenzordnung und Konvergenzordnung


  • 4 Implizite Runge-Kutta-Verfahren


  • 5 Zeitschrittweitensteuerung: Eingebettete Verfahren


  • 6 Geschichte


  • 7 Beispiele


  • 8 Literatur


  • 9 Weblinks


  • 10 Einzelnachweise





Allgemeine Formulierung |


Gegeben sei ein Anfangswertproblem


y′(t)=f(t,y(t)),y(t0)=y0,y:R→Rd{displaystyle y'(t)=fleft(t,y(t)right),quad y(t_{0})=y_{0},quad ycolon mathbb {R} to mathbb {R} ^{d}}y'(t)=fleft(t,y(t)right),quad y(t_{0})=y_{0},quad ycolon mathbb{R} to mathbb{R} ^{d}

mit exakter Lösung y(t){displaystyle y(t)}y(t). Die exakte Lösung kann im Allgemeinen nicht oder nicht effizient angegeben werden, weshalb man sich mit einer Näherung yn{displaystyle y_{n}}y_n an diskreten Stellen tn{displaystyle t_{n}}t_n begnügt. Es gibt verschiedene Methoden zur Berechnung dieser Näherung, zum Beispiel Einschrittverfahren, wie diese Runge-Kutta-Verfahren, oder Mehrschrittverfahren.


Die s{displaystyle s}s-stufigen Runge-Kutta-Verfahren sind Einschrittverfahren, die durch Ausdrücke der folgenden Art gegeben sind:


yn+1=yn+h∑j=1sbjkj.{displaystyle y_{n+1}=y_{n}+hsum _{j=1}^{s}b_{j}k_{j}.}y_{{n+1}}=y_{n}+hsum _{{j=1}}^{s}b_{j}k_{j}.

Dabei bezeichnet h{displaystyle h}h die Schrittweite zwischen den aufeinanderfolgenden Stützstellen tn{displaystyle t_{n}}t_n und tn+1{displaystyle t_{n+1}}t_{{n+1}}. Die Koeffizienten bj{displaystyle b_{j}}b_{j} definieren das jeweilige Verfahren und können als Gewichte der Quadraturformel für das Integral tntn+1f(t,y(t))dt{displaystyle int _{t_{n}}^{t_{n+1}}f(t,y(t))mathrm {d} t}int_{t_n}^{t_{n+1}}f(t, y(t)) mathrm d t interpretiert werden. Die Größen kj{displaystyle k_{j}}k_j bezeichnet man als Zwischenschritte, sie entsprechen Auswertungen der rechten Seite f{displaystyle f}f an bestimmten Knoten:


kj=f(tn+hcj,yn+h∑l=1sajlkl),j=1,...,s.{displaystyle k_{j}=fleft(t_{n}+hc_{j},y_{n}+hsum _{l=1}^{s}a_{jl}k_{l}right),,j=1,...,s.}k_{j}=fleft(t_{n}+hc_{j},y_{n}+hsum _{{l=1}}^{s}a_{{jl}}k_{l}right),,j=1,...,s.

Die cj{displaystyle c_{j}}c_{j} und ajl{displaystyle a_{jl}}a_{{jl}} sind weitere für das Verfahren charakteristische Koeffizienten und können als Knoten und Gewichte der Quadraturformeln zur Berechnung der kj{displaystyle k_{j}}k_j verstanden werden.


Ein allgemeines Runge-Kutta-Verfahren ist implizit, es müssen also zur Bestimmung der kj{displaystyle k_{j}}k_j lineare beziehungsweise nichtlineare Gleichungssysteme gelöst werden. Gilt aber ajl=0{displaystyle a_{jl}=0}a_{{jl}}=0 für alle l≥j{displaystyle lgeq j}lgeq j, ist das Verfahren explizit.


Die Steuerung der Schrittweite h{displaystyle h}h ist von besonderem Interesse. Man kann sich leicht vorstellen, dass die Funktion in Bereichen, in denen nur geringe Änderungen zwischen yn+1{displaystyle y_{n+1}}y_{n+1} und yn{displaystyle y_{n}}y_n vorliegen, mit weniger Rechenschritten auskommt als in solchen, in denen schnelle Änderungen vorliegen.



Beispiel |


Ein Beispiel ist das dreistufige Runge-Kutta-Verfahren: yn+1=yn+h⋅(16k1+46k2+16k3){displaystyle y_{n+1}=y_{n}+hcdot {bigg (}{frac {1}{6}}k_{1}+{frac {4}{6}}k_{2}+{frac {1}{6}}k_{3}{bigg )}}y_{{n+1}}=y_{n}+hcdot {bigg (}{frac  {1}{6}}k_{1}+{frac  {4}{6}}k_{2}+{frac  {1}{6}}k_{3}{bigg )} mit den Zwischenstufen



k1=f(tn,yn){displaystyle k_{1}=f(t_{n},y_{n})quad }k_{1}=f(t_{n},y_{n})quad

k2=f(tn+h2,yn+h2k1){displaystyle k_{2}=fleft(t_{n}+{frac {h}{2}},y_{n}+{frac {h}{2}}k_{1}right)quad }{displaystyle k_{2}=fleft(t_{n}+{frac {h}{2}},y_{n}+{frac {h}{2}}k_{1}right)quad }

k3=f(tn+h,yn−hk1+2hk2){displaystyle k_{3}=f(t_{n}+h,y_{n}-hk_{1}+2hk_{2})quad }k_{3}=f(t_{n}+h,y_{n}-hk_{1}+2hk_{2})quad



Butcher-Tableau |


Man kann die charakteristischen Koeffizienten cj{displaystyle c_{j}}c_{j}, bj{displaystyle b_{j}}b_{j}, ajl{displaystyle a_{jl}}a_{{jl}} übersichtlich im Runge-Kutta-Tableau (auch Butcher-Schema, -Tableau oder engl. Butcher array genannt) anordnen. Hierbei ist die Matrix A bei einem expliziten Verfahren eine strikte untere Dreiecksmatrix (Nilpotente Dreiecksmatrix).



cAbT=c1a11a12…a1sc2a21a22…a2s⋮csas1as2…assb1b2…bs,{displaystyle {begin{array}{c|c}mathbf {c} &A\hline &mathbf {b^{T}} \end{array}}={begin{array}{c|cccc}c_{1}&a_{11}&a_{12}&dots &a_{1s}\c_{2}&a_{21}&a_{22}&dots &a_{2s}\vdots &vdots &vdots &ddots &vdots \c_{s}&a_{s1}&a_{s2}&dots &a_{ss}\hline &b_{1}&b_{2}&dots &b_{s}\end{array}};,}{begin{array}{c|c}{mathbf  {c}}&A\hline &{mathbf  {b^{T}}}\end{array}}={begin{array}{c|cccc}c_{1}&a_{{11}}&a_{{12}}&dots &a_{{1s}}\c_{2}&a_{{21}}&a_{{22}}&dots &a_{{2s}}\vdots &vdots &vdots &ddots &vdots \c_{s}&a_{{s1}}&a_{{s2}}&dots &a_{{ss}}\hline &b_{1}&b_{2}&dots &b_{s}\end{array}};,  c=[c1⋮cj⋮cs],b=[b1⋮bj⋮bs],A=[a11…a1l…a1s⋮aj1…ajl…ajs⋮as1…asl…ass].{displaystyle c={begin{bmatrix}c_{1}\vdots \c_{j}\vdots \c_{s}end{bmatrix}};,quad b={begin{bmatrix}b_{1}\vdots \b_{j}\vdots \b_{s}end{bmatrix}};,quad A={begin{bmatrix}a_{11}&dots &a_{1l}&dots &a_{1s}\vdots &ddots &vdots &ddots &vdots \a_{j1}&dots &a_{jl}&dots &a_{js}\vdots &ddots &vdots &ddots &vdots \a_{s1}&dots &a_{sl}&dots &a_{ss}\end{bmatrix}};.}c={begin{bmatrix}c_{1}\vdots \c_{j}\vdots \c_{s}end{bmatrix}};,quad b={begin{bmatrix}b_{1}\vdots \b_{j}\vdots \b_{s}end{bmatrix}};,quad A={begin{bmatrix}a_{{11}}&dots &a_{{1l}}&dots &a_{{1s}}\vdots &ddots &vdots &ddots &vdots \a_{{j1}}&dots &a_{{jl}}&dots &a_{{js}}\vdots &ddots &vdots &ddots &vdots \a_{{s1}}&dots &a_{{sl}}&dots &a_{{ss}}\end{bmatrix}};.


Konsistenzordnung und Konvergenzordnung |


Eine wichtige Eigenschaft zum Vergleich von Verfahren ist die Konsistenzordnung, die auf dem Begriff des lokalen Diskretisierungsfehlers τ=yn+1−y(tn+1){displaystyle tau =y_{n+1}-y(t_{n+1})}tau =y_{{n+1}}-y(t_{{n+1}}) beruht. Dabei ist yn+1{displaystyle y_{n+1}}y_{n+1} die numerische Lösung nach einem Schritt und y(tn+1){displaystyle y(t_{n+1})}y(t_{{n+1}}) die exakte Lösung. Ein Einschrittverfahren heißt konsistent von der Ordnung p{displaystyle p}p (hat Konsistenzordnung p{displaystyle p}p), falls für den lokalen Diskretisierungsfehler gilt:



τO(hp+1){displaystyle tau leq {mathcal {O}}(h^{p+1})}tau leq {mathcal  {O}}(h^{{p+1}}) (Zur Notation siehe Landau-Symbole).

Die Konsistenzordnung kann durch Taylorentwicklung von τ{displaystyle tau }tau oder der exakten und numerischen Lösung bestimmt werden. Allgemein gilt:


Konsistenzordnung p{displaystyle p}p und Stabilität {displaystyle Rightarrow }Rightarrow Konvergenzordnung p{displaystyle p}p

Bei Einschrittverfahren wie den Runge-Kutta-Verfahren gilt sogar, sofern f{displaystyle f}f und die Verfahrensvorschrift Lipschitz-stetig sind:


Konsistenzordnung p{displaystyle p}p {displaystyle Rightarrow }Rightarrow Konvergenzordnung p{displaystyle p}p

Aus der Konsistenzbedingung (z. B. soll das Verfahren Ordnung 4 haben) ergeben sich Konsistenzgleichungen (engl. conditions) für die Koeffizienten des Runge-Kutta-Verfahrens. Die Gleichungen und ihre Anzahl können mit Hilfe von Taylorentwicklung oder der Theorie der Butcher-Bäume ermittelt werden. Mit zunehmender Ordnung wächst die Zahl der zu lösenden nicht-linearen Konsistenzgleichungen schnell an. Das Aufstellen der Konsistenzgleichungen ist bereits nicht einfach, kann jedoch mit Hilfe der Butcher-Bäume von Computeralgebrasystemen erledigt werden. Das Lösen ist allerdings noch schwieriger und bedarf Erfahrung und Fingerspitzengefühl, um „gute“ Koeffizienten zu erhalten.


Ein explizites s{displaystyle s}s-stufiges Runge-Kutta-Verfahren hat höchstens Konvergenzordnung s{displaystyle s}s, ein implizites dagegen bis zu 2s{displaystyle 2s}{displaystyle 2s}.


Um die Genauigkeit eines Ergebnisses zu verbessern, gibt es zwei Möglichkeiten:



  1. Man kann die Schrittweite verkleinern, das heißt, man erhöht die Anzahl der Diskretisierungspunkte.

  2. Man kann Verfahren höherer Konvergenzordnung wählen.


Welche Strategie die bessere ist, hängt von der konkreten Problemstellung ab, die Erhöhung der Konvergenzordnung ist allerdings nur bis zu einer bestimmten Grenze sinnvoll, da wegen der Butcher-Schranken die Stufenzahl s{displaystyle s}s schneller wächst als die Ordnung p{displaystyle p}p. Für s≥5{displaystyle sgeq 5}sgeq 5 existiert beispielsweise kein explizites s{displaystyle s}s-stufiges RKV der Konvergenzordnung q=s{displaystyle q=s}q=s.



Implizite Runge-Kutta-Verfahren |


Explizite Verfahren haben den Vorteil, dass die Stufen durch sukzessives Einsetzen berechenbar sind, beim impliziten Verfahren muss dagegen je nach Form der rechten Seite f∈Rd{displaystyle fin mathbb {R} ^{d}}fin {mathbb  {R}}^{d} ein lineares oder nichtlineares Gleichungssystem mit s⋅d{displaystyle scdot d}scdot d Unbekannten gelöst werden, was pro Zeitschritt einen wesentlich höheren Aufwand darstellt. Der Grund, warum implizite Verfahren überhaupt in Betracht gezogen werden, ist, dass explizite Runge-Kutta-Verfahren stets ein beschränktes Stabilitätsgebiet haben, während implizite Runge-Kutta-Verfahren für praktisch beliebig hohe Ordnungen A-stabil sein können und damit Einschränkungen an den Zeitschritt nur aufgrund von Genauigkeitsüberlegungen und nicht aufgrund von Stabilitätsbeschränkungen notwendig sind. Dies ist insbesondere bei steifen Anfangswertproblemen und differentiell-algebraischen Gleichungen interessant.


Die maximale Ordnung eines s{displaystyle s}s-stufigen Runge-Kutta-Verfahrens ist 2s{displaystyle 2s}{displaystyle 2s}. Diese wird ausschließlich durch die Gauß-Legendre-Verfahren erzielt, bei denen die Quadraturformeln zur Konstruktion des Runge-Kutta-Verfahren den Gauß-Legendre-Formeln entsprechen. Ordnung 2s−1{displaystyle 2s-1}{displaystyle 2s-1} wird etwa mittels Radau-Formeln erzielt, die Runge-Kutta-Verfahren heißen dann Radau-Verfahren, während Ordnung 2s−2{displaystyle 2s-2}{displaystyle 2s-2} über Lobatto-Formeln erzielt wird, die Verfahren heißen dann Lobatto-Verfahren.


Um die Lösung eines Gleichungssystems mit s⋅d{displaystyle scdot d}scdot d Unbekannten zu umgehen, werden häufig Diagonal Implizite Runge-Kutta-Verfahren (kurz DIRK) genutzt. Dabei hat die Matrix A{displaystyle A}A im Butcher-Array Dreieckform, alle Einträge rechts oberhalb der Diagonalen sind also Null. Dies entkoppelt das große Gleichungssystem in eine Sequenz von s{displaystyle s}s Gleichungssystemen. Ist darüber hinaus der Koeffizient auf der Diagonalen konstant, spricht man von einem SDIRK-Verfahren (für singly diagonal). Sind die Koeffizienten in der letzten Zeile von A{displaystyle A}A identisch mit denen des Vektors b{displaystyle b}b, so wird etwas Aufwand gespart, insbesondere sind die Verfahren dann aber auch L-stabil. Diese Vereinfachung geschieht auf Kosten der maximalen Ordnung: s{displaystyle s}s-stufige DIRK-Verfahren haben maximal Ordnung s+1{displaystyle s+1}s+1, wobei dieses Maximum nicht für beliebige Stufen erreicht werden kann. Die in der Praxis verwandten Verfahren haben in der Regel Ordnung s{displaystyle s}s oder weniger.


Als Alternative zu DIRK-Verfahren haben sich noch die linear impliziten Verfahren etabliert, insbesondere die Rosenbrock-Wanner-Verfahren, bei denen die nichtlinearen Gleichungen durch lineare angenähert werden.



Zeitschrittweitensteuerung: Eingebettete Verfahren |


Um die Effizienz der Verfahren zu erhöhen, ist es sinnvoll, den Zeitschritt einer Fehlertoleranz anzupassen. Runge-Kutta-Verfahren bieten hierzu über eingebettete Verfahren eine relativ einfache Möglichkeit. Diese bestehen aus einem zweiten Satz an Koeffizienten b^{displaystyle {hat {b}}}{hat  {b}} für ein zweites Verfahren:


y^n+1=yn+h∑j=1sb^jkj,{displaystyle {hat {y}}_{n+1}=y_{n}+hsum _{j=1}^{s}{hat {b}}_{j}k_{j},}{hat  {y}}_{{n+1}}=y_{n}+hsum _{{j=1}}^{s}{hat  {b}}_{j}k_{j},

wobei die Koeffizienten so gewählt werden, dass sich ein schlechteres Verfahren, konkret ein Verfahren von niedrigerer Ordnung ergibt als das ursprüngliche. Dann ist die Differenz


yn+1−y^n+1=h∑j=1s(bj−b^j)kj{displaystyle y_{n+1}-{hat {y}}_{n+1}=hsum _{j=1}^{s}(b_{j}-{hat {b}}_{j})k_{j}}y_{{n+1}}-{hat  {y}}_{{n+1}}=hsum _{{j=1}}^{s}(b_{j}-{hat  {b}}_{j})k_{j}

eine Schätzung des lokalen Fehlers des ursprünglichen Verfahrens von der Ordnung wie das eingebettete Verfahren. Zur Berechnung sind keine neuen Funktionsauswertungen notwendig, sondern nur Linearkombinationen der bereits berechneten kj{displaystyle k_{j}}k_j. Die Bestimmung einer neuen Zeitschrittweite aus dem Fehlerschätzer kann über verschiedene Schrittweitensteuerungen erfolgen.


Im expliziten Fall sind die bekanntesten eingebetteten Verfahren die Runge-Kutta-Fehlberg- sowie die Dormand-Prince-Formeln (DOPRI).



Geschichte |


Die ersten Runge-Kutta-Verfahren wurden um 1900 von Karl Heun,[1]Martin Wilhelm Kutta,[2] und Carl Runge[3] entwickelt. In den 1960ern entwickelte John C. Butcher mit den vereinfachenden Bedingungen und dem Butcher-Tableau Werkzeuge, um Verfahren höherer Ordnung zu entwickeln. Ernst Hairer fand 1978 ein Verfahren 8. Ordnung mit zehn Stufen.



Beispiele |


Das explizite Euler-Verfahren (Ordnung 1):


01{displaystyle {begin{array}{c|c}0\hline &1end{array}}}{begin{array}{c|c}0\hline &1end{array}}


Das implizite Euler-Verfahren (Ordnung 1):


111{displaystyle {begin{array}{c|c}1&1\hline &1end{array}}}{begin{array}{c|c}1&1\hline &1end{array}}


Das Heun-Verfahren (Ordnung 2):


0111212{displaystyle {begin{array}{c|cc}0\1&1\hline &{frac {1}{2}}&{frac {1}{2}}end{array}}}{begin{array}{c|cc}0\1&1\hline &{frac  {1}{2}}&{frac  {1}{2}}end{array}}


Das Runge-Kutta-Verfahren der Ordnung 2:


0121201{displaystyle {begin{array}{c|cc}0\{frac {1}{2}}&{frac {1}{2}}\hline &0&1end{array}}}{begin{array}{c|cc}0\{frac  {1}{2}}&{frac  {1}{2}}\hline &0&1end{array}}


Das implizite Trapez-Verfahren der Ordnung 2:


0112121212{displaystyle {begin{array}{c|cc}0\1&{frac {1}{2}}&{frac {1}{2}}\hline &{frac {1}{2}}&{frac {1}{2}}end{array}}}{begin{array}{c|cc}0\1&{frac  {1}{2}}&{frac  {1}{2}}\hline &{frac  {1}{2}}&{frac  {1}{2}}end{array}}


Das Runge-Kutta-Verfahren der Ordnung 3 (vgl. Simpsonregel):


012121−12164616{displaystyle {begin{array}{c|ccc}0\{frac {1}{2}}&{frac {1}{2}}\1&-1&2\hline &{frac {1}{6}}&{frac {4}{6}}&{frac {1}{6}}end{array}}}{begin{array}{c|ccc}0\{frac  {1}{2}}&{frac  {1}{2}}\1&-1&2\hline &{frac  {1}{6}}&{frac  {4}{6}}&{frac  {1}{6}}end{array}}


Das Heun-Verfahren 3. Ordnung:


013132302314034{displaystyle {begin{array}{c|ccc}0\{frac {1}{3}}&{frac {1}{3}}\{frac {2}{3}}&0&{frac {2}{3}}\hline &{frac {1}{4}}&0&{frac {3}{4}}end{array}}}{begin{array}{c|ccc}0\{frac  {1}{3}}&{frac  {1}{3}}\{frac  {2}{3}}&0&{frac  {2}{3}}\hline &{frac  {1}{4}}&0&{frac  {3}{4}}end{array}}


Das klassische Runge-Kutta-Verfahren (Ordnung 4):


0121212012100116131316{displaystyle {begin{array}{c|cccc}0&&&&\{frac {1}{2}}&{frac {1}{2}}&&&\{frac {1}{2}}&0&{frac {1}{2}}&&\1&0&0&1&\hline &{frac {1}{6}}&{frac {1}{3}}&{frac {1}{3}}&{frac {1}{6}}end{array}}}{begin{array}{c|cccc}0&&&&\{frac  {1}{2}}&{frac  {1}{2}}&&&\{frac  {1}{2}}&0&{frac  {1}{2}}&&\1&0&0&1&\hline &{frac  {1}{6}}&{frac  {1}{3}}&{frac  {1}{3}}&{frac  {1}{6}}end{array}}



Literatur |



  • Peter Albrecht: The Runge-Kutta Theory in a Nutshell. In: SIAM Journal on Numerical Analysis. 33, 5, October 1996, ISSN 0036-1429, S. 1712–1735.


  • John C. Butcher: The Numerical Analysis of Ordinary Differential Equations. Runge-Kutta and General Linear Methods. Wiley, Chichester u. a. 1987, ISBN 0-471-91046-5 (A Wiley-Interscience publication).


  • Peter Deuflhard, Folkmar Bornemann: Numerische Mathematik. Band 2: Gewöhnliche Differentialgleichungen. 2. vollständige überarbeitete und erweiterte Auflage. de Gruyter, Berlin 2002, ISBN 3-11-017181-3.

  • Ernst Hairer, Gerhard Wanner: Solving Ordinary Differential Equations. Band 1: Nonstiff Problems. 2. revised edition. Springer Verlag, Berlin u. a. 1993, ISBN 3-540-56670-8 (Springer series in computational mathematics 8), (Auch Nachdruck: ebenda 2008, ISBN 978-3-642-05163-0).

  • E. Hairer, G. Wanner: Solving Ordinary Differential Equations. Band 2: Stiff and differential-algebraic problems. 2. revised edition. Corrected 2. print. Springer Verlag, Berlin u. a. 2002, ISBN 3-540-60452-9 (Springer series in computational mathematics 14), (Auch Nachdruck: ebenda 2010, ISBN 978-3-642-05220-0).


  • Martin Hermann: Numerik gewöhnlicher Differentialgleichungen. Anfangs- und Randwertprobleme. Oldenbourg, München u. a. 2004, ISBN 3-486-27606-9.

  • M. Sofroniou: Symbolic Derivation of Runge-Kutta Methods. In: Journal of Symbolic Computation. 18, 3, September 1994, ISSN 0747-7171, S. 265–296.

  • Karl Strehmel, Rüdiger Weiner: Linear-implizite Runge-Kutta-Methoden und ihre Anwendung. Teubner, Stuttgart u. a. 1992, ISBN 3-8154-2027-X (Teubner-Texte zur Mathematik 127).



Weblinks |



  • Holistic Numerical Methods Institute: Runge-Kutta-Verfahren vierter Ordnung


  • Runge-Kutta methods auf Scholarpedia.com von John C. Butcher



Einzelnachweise |




  1. Heun: Neue Methoden zur approximativen Integration der Differentialgleichungen einer unabhängigen Veränderlichen, Z. Math. Phys., Band 45, 1900, S. 23–38 (Heun-Verfahren)


  2. W. Kutta: Beitrag zur näherungsweisen Integration totaler Differentialgleichungen, Z. Math. Phys., Band 46, 1901, S. 435–453


  3. C. Runge: Über die numerische Auflösung von Differentialgleichungen, Math. Annalen, Band 46, 1895, S. 167–178, Online




Popular posts from this blog

Saint-Aignan (Tarn-et-Garonne)

Volksrepublik China

How to test boost logger output in unit testing?