Kurs:Gewöhnliche Differentialgleichungen/4.0 Einführung

Aus testwiki
Zur Navigation springen Zur Suche springen

Runge-Kutta Verfahren

Runge-Kutta Verfahren (RKV) sind spezielle Einschrittverfahren, die durch ihre Struktur eine höhere Konsistenzordnung und damit eine höhere Genauigkeit der numerischen Lösung ermöglichen. Diese Verfahren wurden vom deutschen Mathematiker Wilhelm Kutta 1901 auf Basis eines Artikels von Carl Runge aus dem Jahre 1895 entwickelt.

Betrachten wir die Gleichung y(t)=f(t,y(t)), so wird die höhere Konsistenzordnung der Runge-Kutta-Verfahren durch die höhere Anzahl von Funktionsauswertungen der Funktion f (rechte Seite der Gleichung) an den Stellen zwischen ti und ti+1=ti+h erreicht. Die Zwischenstellen ti+ch nennen wir Stufen, oder Stützstellen, wobei c[0,1] und h die Schrittweite ist.

In den bislang studierten ESV, wie das Eulerverfahren, Trapezregel, Mittelpunktregel (in expliziter oder impliziter Form), wurde in jedem Schritt ein bis zwei Auswertungen von f an den Stellen ti,ti+1/2 oder ti+1 verwendet. In den RKV wird die Anzahl der Stützstellen erhöht und ihre Lage entsprechend bestimmt, damit eine möglichst hohe Konsistenzordnung erreicht werden kann. Die bisher bekannten ESV können als die einfachsten Runge-Kutta Verfahren einordnet werden.



Definition 4.1 (Runge-Kutta Verfahren).

Sei s die Anzahl von Stufen/Stützstellen, As×s die Koeffizientenmatrix mit Einträgen (A)j,m=:ajm, sei bs Vektor der Gewichte und cs Vektor der Stützstellen.
Das Verfahren mit der Vorschrift η0=y0,kj=f(ti+hcj,ηi+hm=1sajmkm)für j=1,,s,(4.1)ηi+1=ηi+hj=1skjbjfür i=0,1,,Nh1(4.2) heißt s-stufiges Runge-Kutta Verfahren.


Die Runge-Kutta Verfahren können schematisch auch im sog. Butcher-Tableau angegeben werden:

oder kurz


c=(c1cs),bT=(b1,bs).


Beispiel 4.1.

Die Funktionsauswertung kj eines RKV für j=2 ist k2=f((ti+hc2,ηi+hm=1sa2mkm)=f((ti+hc2,ηi+ha2k), wobei a2=(a21,,a2s) die zweite Zeile der Matrix A ist und k2=(k1,,ks) .

Der neue Wert der numerischen Lösung nach einem Schritt des RKV (auch Runge-Kutta Update genannt) berechnet sich nach (4.2) als ηi+1=ηi+hj=1skjbj. Der Vergleich dieser Gleichung mit der Volterra’schen Integralgleichung (2.1) auf dem Intervall (ti,ti+1), y(ti+h)=y(ti)+titi+1f(s,y(s))ds führt zu folgenden Überlegungen: Ersetzt man das Integral titi+1f(s,y(s))ds sinnvol durch eine Summe, sodass hj=1skjbjtiti+1f(s,y(s))ds, so wird eine Quadratur von f angewendet, um den neuen Wert ηi+1 zu berechnen. Dabei sind kj die s Knoten dieser Quadratur an den Stützstellen ti+hcj (vergleiche (4.1)) und bj die Gewichte der Quadratur. Ein RKV zu konstruieren bedeutet daher, eine geeignete Quadratur des Integrals titi+1f zu finden. Bei den einfachsten RKV (dabei handelt es sich um die im 3. Kapitel vorgestellten Einschrittverfahren) handelt es sich um die Anwendung von Quadraturen, wie beispielsweise die Rechteck-, Mittelpunkt- und Trapezregel für das Integral titi+1f(s,y(s))ds (siehe Bemerkung 3.1 Punkt iii) und Abbildungen 3.1, 3.2, 3.3, 3.4). Das Butcher-Tableau kann wie folgt interpretiert werden: Der Vektor c beschreibt die Stützstellen und der Vektor b die Gewichte der zugehörigen Quadratur von f auf dem Intervall (ti,ti+1). Die Matrix A spiegelt in gewissem Sinne die Differentialgleichung zurück. Dies kann wie folgt begründet werden:
Nach der Definition der Runge-Kutta Verfahren, siehe (4.1), und mithilfe der Differentiagleichung y=f(t,y) kann darauf geschlossen werden, dass die kj die Ableitungen der gesuchten Funktion an den Stützstellen ti+hcj approximieren, sodass mit j=1,s und i - fest, kjy(ti+hcj)

gilt. Da die Matrix A zur Berechnung von kj dient, spiegelt diese automatisch die Differentialgleichung in oben beschriebenem Sinne zurück.

Anhand der Matrix A kann zwischen expliziten und impliziten RK- Verfahren unterscheiden werden:


  • Explizite Runge-Kutta Verfahren (eRKV):

Ist die Matrix A eine untere Dreiecksmatrix, handelt es sich um explizite RKV. Hierbei werden in jedem Schrit ti für die Berechnung von kj,j=1,s immer nur die vorher berechneten k1,,kj1 verwendet. In diesem Fall kann man kj durch das Einsetzen explizit berechnen als kj=f(ti+hcj,ηi+hm=1j1ajmkm).


  • Implizite Runge-Kutta Verfahren (iRKV):

Ist die Matrix A eine voll besetzte Matrix, so hängen kj für jedes j=1,s im Allgemeinem von allen k1,,ks ab. Die Berechnung von kj erfolgt dann durch die Lösung eines (linearen oder ggf. nichlinearen) Systems von Gleichungen. In diesem Fall ist die Berechnung von kj einfacher oder kostengünstiger, wenn A eine Dreiecksmatrix ist. Man unterscheidet in diesem Fall zwischen:

    • DIRK-Verfahren: ’diagonal implizit RK -Verfahren’:

Matrix A ist eine Dreiecksmatrix mit diag(A)𝟎,

    • SDIRK-Verfahren: ’simply diagonal implizit RK -Verfahren’:

Matrix A ist eine Dreiecksmatrix mit diag(A)=λdiag(I)𝟎, λ, I ist eine Einheitsmatrix,

    • SIRK-Verfahren ’simply implizit RK -Verfahren’:

Matrix A ist eine vollbesetzte Matrix, wobei diag(A)=λdiag(I) und die obere Dreiecksmatrix besteht auch aus λ’s.


Nun geben wir einige konkrete Beispiele von Runge-Kutta Verfahren an:
Explizites Eulerverfahren, s=1:


k1=f(ti+0.h,ηi+0.hk1)=f(ti,ηi)ηi+1=ηi+hk1ηi+hf(ti,ηi)=k1
Implizites Eulerverfahren, s=1:


k1=f(ti+1.h,ηi+1.hk1)ηi+1=ηi+hk1%ηi+hf(ti+h,ηi+hk1)=k1=ηi+hf(ti+h,ηi+hk1=ηi+1)
Verbessertes Eulerverfahren (explizite Mittelpunktregel), s=2:


k1=f(ti,ηi)k2=f(ti+h2,ηi+h2k1)ηi+1=ηi+h(0.k1+1.k2)ηi+hf(ti+h2,ηi+h2f(ti,ηi)=k1)=k2

Klassisches Runge-Kutta Verfahren, s=4:


k1=f(ti,ηi)k2=f(ti+h2,ηi+h2k1)k3=f(ti+12h,ηi+h2k2)k4=f(ti+h,ηi+hk3)ηi+1=ηi+h(k16+k23+k33+k46)

3/8- Regel, s=4:


k1=f(ti,ηi)k2=f(ti+h3,ηi+h3k1)k3=f(ti+23h,ηih3k1+hk2)k4=f(ti+h,ηi+hk1hk2+hk3)ηi+1=ηi+h(k18+38k2+38k3+k48)


Zwei weitere explizite 3-stufige RKV sind durch folgende Butcher-Tableaus gegeben:

Verfahren von Heun, s=3 (1900): 3-stufiges eRKV