Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Man kann systematisch bessere Verfahren zum numerischen Lösen von Differentialgleichungen entwickeln. Diese Systematik stammt von Runge (1895) und Kutta (1901) und wurde von Butcher (1963) noch etwas vereinfacht. Geben hier nur einen groben Überblick und schauen uns an, wie die in diesem Kontext auftretenden Butcher-Tableaus zu verstehen sind.

6.6.1Ziel

Zunächst ist zu klären, wie man einem Verfahren ansieht, dass es “besser” ist als die Euler-Verfahren.

Grundsätzlich ist man für gegebene Schrittanzahl nNn\in\bbN am Gesamtfehler

maxk=1,,ny(xk)yk\max_{k=1,\ldots,n}|y(x_k)-y_k|

interessiert in Abhängigkeit von der Schrittweite hh. Für die beiden Euler-Verfahren gilt

maxk=1,,ny(xk)ykch\max_{k=1,\ldots,n}|y(x_k)-y_k|\leq c\,h

für kleine h>0h>0 und eine Konstante c>0c>0. Besser ist

maxk=1,,ny(xk)ykchp\max_{k=1,\ldots,n}|y(x_k)-y_k|\leq c\,h^p

mit p>1p>1, da zum Beispiel für p=2p=2 das Halbieren der Schrittweite den Fehler auf ein Viertel reduziert. Man nennt den Exponent pp auch Konvergenzordnung des Verfahrens.

Je höher die Konvergenzordnung, desto größer kann hh gewählt werden und desto geringer also der Rechenaufwandt.

6.6.2Idee

Zur Erhöhung der Konvergenzordnung führt man Zwischenschritte ein, d.h. das Verfahren wertet ff an mehr Stellen aus und erhält so mehr Informationen über die Differentialgleichung. Dabei kann die Wahl der Stellen für die zusätzlichen Auswertungen auch von den Funktionswerten von ff abhängen.

Um geeignete Zwischenschritt zu finden, kann man aus der Forderung nach hoher Konvergenzordnung gewisse Gleichungen aufstellen. Das so entstehende nichtlineare Gleichungssystem muss dann symbolisch gelöst werden und liefert die unter behandelten Butcher-Tableaus. Man kann zeigen, dass beispielsweise für Konvergenzordnung p=10p=10 mindestens 10 Zwischenschritte nötig sind, deren Berechnungsvorschriften aus der Lösung eines nichtlinearen Gleichungssystems mit 200 Gleichungen gewonnen werden.

6.6.3Heun-Verfahren

Als einfaches Verfahren mit einem Zwischenschritt betrachten wir kurz das Heun-Verfahren. Dieses führt zunächst einen Schritt des expliziten Euler-Verfahrens aus, um eine Näherung y~k+1\tilde{y}_{k+1} der Ableitung y(xk+1)y'(x_{k+1}) zu erhalten. Anschließend führt es den eigentlichen Schritt aus, wobei der verwendete Anstieg gerade der Mittelwert aus yky_k und y~k+1\tilde{y}_{k+1} ist:

y~k+1:=yk+hf(xk,yk),yk+1:=yk+hf(xk,yk)+f(xk+1,y~k+1)2.{\begin{align} \tilde{y}_{k+1}&:=y_k+h\,f(x_k,y_k),\\ y_{k+1}&:=y_k+h\,\frac{f(x_k,y_k)+f(x_{k+1},\tilde{y}_{k+1})}{2}. \end{align}}

Das Heun-Verfahren hat Konvergenzordnung p=2p=2 und liefert damit bei gleicher Schrittweite genauere Ergebnisse.

6.6.4Allgemeine Formulierung

Die ein Runge-Kutta-Verfahren mit ss Zwischenschritten beschreibenden Zahlen werden üblicherweise als sogenanntes Butcher-Tableau geschrieben.

c1c2a21c3a31a32csas,1as,2as,s1b1b2bs1b2\begin{array}{c|ccccc} c_1&&&&&\\ c_2&a_{21}&&&&\\ c_3&a_{31}&a_{32}&&&\\ \vdots&\vdots&\vdots&\ddots&&\\ c_s&a_{s,1}&a_{s,2}&\cdots&a_{s,s-1}&\\\hline &b_1&b_2&\cdots&b_{s-1}&b_2 \end{array}

Die Iterationsvorschrift für das zugehörige Verfahren ist dann

z1:=f(xk+c1h,yk),z2:=f(xk+c2h,yk+ha21z1),z3:=f(xk+c3h,yk+h(a31z1+a32z2)),  zs:=f(xk+csh,yk+h(as,1z1++as,s1zs1)),yk+1:=yk+hi=1sbizi,{\begin{align} z_1&:=f\bigl(x_k+c_1\,h,y_k\bigr),\\ z_2&:=f\bigl(x_k+c_2\,h,y_k+h\,a_{21}\,z_1\bigr),\\ z_3&:=f\bigl(x_k+c_3\,h,y_k+h\,(a_{31}\,z_1+a_{32}\,z_2)\bigr),\\ &\;\vdots\\ z_s&:=f\bigl(x_k+c_s\,h,y_k+h\,(a_{s,1}\,z_1+\cdots+a_{s,s-1}\,z_{s-1})\bigr),\\ y_{k+1}&:=y_k+h\,\sum_{i=1}^s b_i\,z_i, \end{align}}

wobei die Werte z1,,zsz_1,\ldots,z_s nach jedem Schritt verworfen werden können (und somit keinen Index kk tragen).

Ein Runge-Kutta-Verfahren mit ss Zwischenschritten wird auch als ss-stufiges Runge-Kutta-Verfahren bezeichnet.

6.6.5Implizite Runge-Kutta-Verfahren

Bei der hier formulierten Variante handelt es sich um explizite Runge-Kutta-Verfahren, da alle Schritt direkt berechnet werden können. Es gibt jedoch auch implizite Runge-Kutta-Verfahren, bei denen z1,,zsz_1,\ldots,z_s als Lösung eines nichtlinearen Gleichungssystems entstehen. In diesem Fall hat das Butcher-Tableau keine Dreieckstruktur, sondern ist voll besetzt, also rechteckig.

Implizite Runge-Kutta-Verfahren haben bei gleichem ss üblicherweise eine höhere Konvergenzordnung als explizite Verfahren. Während bei expliziten Verfahren höchstens Kovergenzordnung ss möglich ist, kann man mit impliziten Verfahren die Konvergenzordnung 2s2\,s erreichen.

6.6.6Klassisches Runge-Kutta-Verfahren

Als klassisches Runge-Kutta-Verfahren oder als RK4-Verfahren wird das explizite Runge-Kutta-Verfahren mit dem Butcher-Tableau

0121212012100116131316\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}

bezeichnet.

6.6.7Systeme

Analog zu den Euler-Verfahren kann das Runge-Kutta-Verfahren ohne Änderungen an den Formeln auf Systeme von Differentialgleichungen angewendet werden. Die Zwischenwerte ziz_i sind dann Vektoren mit nn Komponenten, wobei nn die Anzahl der Gleichungen im System ist.

6.6.8Numerischer Vergleich

Die unterschiedliche Konvergenzordnung von Euler-, Heun- und klassischem Runge-Kutta-Verfahren kann man leicht numerisch nachvollziehen. Lösen dazu das Anfangswertproblem

y=sinxyt,y(1)=1.y'=\sin x-\frac{y}{t},\qquad y(1)=1.

Wählen die Schrittweiten so, dass der Rechenaufwandt für die verschiedenen Verfahren in etwa gleich ist. Ist hh die Schrittweite für das Euler-Verfahren, so führen wir das Heun-Verfahren mit Schrittweite 2h2\,h und das klassische Runge-Kutta-Verfahren mit Schrittweite 4h4\,h aus.

Source
<Figure size 1000x500 with 1 Axes>