Klassisches Runge-Kutta-Verfahren

Klassisches Runge-Kutta-Verfahren

Studium
yn+1=yn+h6(k1+2k2+2k3+k4)y_{n+1} = y_n + \frac{h}{6} \left( k_1 + 2k_2 + 2k_3 + k_4 \right)

Voraussetzung: y′=f(t,y),y' = f(t, y), y(t0)=y0,y(t_0) = y_0, ff hinreichend glatt,, h>0,h > 0, tn+1=tn+ht_{n+1} = t_n + h

yny_n
Näherung für die Lösung y(t_n)
hh
Schrittweite
k1k_1
Steigung am Anfang, k₁ = f(t_n, y_n)
k2k_2
Steigung in der Mitte, k₂ = f(t_n + h/2, y_n + h/2 · k₁)
k3k_3
verbesserte Steigung in der Mitte, k₃ = f(t_n + h/2, y_n + h/2 · k₂)
k4k_4
Steigung am Ende, k₄ = f(t_n + h, y_n + h · k₃)

Das klassische Runge-Kutta-Verfahren mittelt vier Steigungen pro Schritt und erreicht so die Konvergenzordnung 4.

Erklärung

Das klassische Runge-Kutta-Verfahren (kurz RK4) löst Anfangswertprobleme y′=f(t,y)y' = f(t, y), y(t0)=y0y(t_0) = y_0 numerisch. Wie beim Euler-Verfahren geht man in Schritten der Breite hh vor, verwendet aber pro Schritt vier Steigungen:

k1=f(tn, yn)k2=f(tn+h2, yn+h2 k1)k3=f(tn+h2, yn+h2 k2)k4=f(tn+h, yn+h k3)\begin{aligned} k_1 &= f(t_n,\ y_n) \\ k_2 &= f\bigl(t_n + \tfrac{h}{2},\ y_n + \tfrac{h}{2}\,k_1\bigr) \\ k_3 &= f\bigl(t_n + \tfrac{h}{2},\ y_n + \tfrac{h}{2}\,k_2\bigr) \\ k_4 &= f\bigl(t_n + h,\ y_n + h\,k_3\bigr) \end{aligned}

Der Schritt verwendet ein gewichtetes Mittel mit den Gewichten 1,2,2,11, 2, 2, 1. Hängt ff nur von tt ab, sind k2=k3k_2 = k_3, und das Verfahren wird zur Simpsonregel.

Eigenschaften:

  • Konvergenzordnung 4: Halbiert man hh, sinkt der globale Fehler etwa auf ein Sechzehntel.
  • Explizit: Jedes kik_i ergibt sich aus bereits bekannten Werten.
  • Pro Schritt sind vier Auswertungen von ff nötig. Bei gleichem Aufwand ist RK4 meist viel genauer als das Euler-Verfahren.
  • Bei steifen Problemen braucht auch RK4 sehr kleine Schritte; dort sind implizite Verfahren besser.

Beispiele

y′=yy' = y, y(0)=1y(0) = 1, exakte Lösung ete^t. Für diese Gleichung multipliziert ein Schritt mit 1+h+h22+h36+h4241 + h + \frac{h^2}{2} + \frac{h^3}{6} + \frac{h^4}{24}, den ersten Gliedern der Exponentialreihe. Mit h=0,5h = 0{,}5 ist der Faktor 1,64843751{,}6484375, nach zwei Schritten

y2=1,64843752≈2,7173,e≈2,7183y_2 = 1{,}6484375^2 \approx 2{,}7173, \qquad e \approx 2{,}7183

Der Fehler ist etwa 0,000940{,}00094. Das Euler-Verfahren mit derselben Zahl von acht Auswertungen (h=0,125h = 0{,}125) liefert 1,1258≈2,56581{,}125^8 \approx 2{,}5658, also einen Fehler von 0,15250{,}1525.

y′=t+yy' = t + y, y(0)=1y(0) = 1, ein Schritt mit h=0,5h = 0{,}5:

k1=1,k2=0,25+1,25=1,5,k3=0,25+1,375=1,625,k4=0,5+1,8125=2,3125k_1 = 1, \quad k_2 = 0{,}25 + 1{,}25 = 1{,}5, \quad k_3 = 0{,}25 + 1{,}375 = 1{,}625, \quad k_4 = 0{,}5 + 1{,}8125 = 2{,}3125y1=1+0,56(1+3+3,25+2,3125)=1,796875y_1 = 1 + \frac{0{,}5}{6} \left( 1 + 3 + 3{,}25 + 2{,}3125 \right) = 1{,}796875

Exakt ist y(0,5)=2 e0,5−1,5≈1,7974y(0{,}5) = 2\,e^{0{,}5} - 1{,}5 \approx 1{,}7974. Der Fehler beträgt etwa 0,00060{,}0006, beim Euler-Verfahren mit gleichem hh wäre es fast 0,30{,}3.

Typische Fehler

  • Die Gewichte vertauschen: Die mittleren Steigungen k2k_2, k3k_3 zählen doppelt, nicht die äußeren.
  • In k2k_2 und k3k_3 den vollen statt den halben Schritt verwenden.
  • In k3k_3 wieder k1k_1 statt k2k_2 einsetzen.
  • Durch 44 statt durch 66 teilen. Die Gewichte 1+2+2+11 + 2 + 2 + 1 ergeben 66.

Verwandte Formeln