Runge-Kutta-Fehlberg (RKF78)
バージョン 2.1.1 (7.74 KB) 作成者:
Meysam Mahooti
Fehlberg's 7th and 8th Order Embedded Method
The Runge-Kutta-Fehlberg method is an adaptive procedure for approximating the solution of the differential equation y'(x) = f(x,y) with initial condition y(x0) = c. This implementation evaluates f(x,y) thirteen times per step using embedded seventh order and eight order Runge-Kutta estimates to estimate the not only the solution but also the error.
The next step size is then calculated using the preassigned tolerance and error estimate.
For step i+1,
y[i+1] = y[i] + h * (41/840 * k1 + 34/105 * k6 + 9/35 * k7 + 9/35 * k8 + 9/280 * k9 + 9/280 k10 + 41/840 k11 )
where
k1 = f( x[i],y[i] ),
k2 = f( x[i]+2h/27, y[i] + 2h*k1/27),
k3 = f( x[i]+h/9, y[i]+h/36*( k1 + 3 k2) ),
k4 = f( x[i]+h/6, y[i]+h/24*( k1 + 3 k3) ),
k5 = f( x[i]+5h/12, y[i]+h/48*(20 k1 - 75 k3 + 75 k4)),
k6 = f( x[i]+h/2, y[i]+h/20*( k1 + 5 k4 + 4 k5 ) ),
k7 = f( x[i]+5h/6, y[i]+h/108*( -25 k1 + 125 k4 - 260 k5 + 250 k6 ) ),
k8 = f( x[i]+h/6, y[i]+h*( 31/300 k1 + 61/225 k5 - 2/9 k6 + 13/900 K7) )
k9 = f( x[i]+2h/3, y[i]+h*( 2 k1 - 53/6 k4 + 704/45 k5 - 107/9 k6 + 67/90 k7 + 3 k8) ),
k10 = f( x[i]+h/3, y[i]+h*( -91/108 k1 + 23/108 k4 - 976/135 k5 + 311/54 k6 - 19/60 k7 + 17/6 K8 - 1/12 k9) ),
k11 = f( x[i]+h, y[i]+h*( 2383/4100 k1 - 341/164 k4 + 4496/1025 k5 - 301/82 k6 + 2133/4100 k7 + 45/82 K8 + 45/164 k9 + 18/41 k10) ),
k12 = f( x[i], y[i]+h*( 3/205 k1 - 6/41 k6 - 3/205 k7 - 3/41 K8 + 3/41 k9 + 6/41 k10) ),
k13 = f( x[i]+h, y[i]+h*( -1777/4100 k1 - 341/164 k4 + 4496/1025 k5 - 289/82 k6 + 2193/4100 k7 + 51/82 K8 + 33/164 k9 + 12/41 k10 + k12) )
x[i+1] = x[i] + h.
The error is estimated to be err = -41/840 * h * ( k1 + k11 - k12 - k13)
The step size h is then scaled by the scale factor scale = 0.8 * | epsilon * y[i] / [err * (xmax - x[0])] | ^ 1/7
The scale factor is further constrained 0.125 < scale < 4.0.
The new step size is h := scale * h.
Reference:
J. Stoer, R. Bulirsch, Introduction to Numerical Analysis (Texts in Applied Mathematics), 3rd edition, 2002.
引用
Meysam Mahooti (2024). Runge-Kutta-Fehlberg (RKF78) (https://www.mathworks.com/matlabcentral/fileexchange/61130-runge-kutta-fehlberg-rkf78), MATLAB Central File Exchange. に取得済み.
MATLAB リリースの互換性
作成:
R2024a
すべてのリリースと互換性あり
プラットフォームの互換性
Windows macOS Linuxカテゴリ
Help Center および MATLAB Answers で Numerical Integration and Differential Equations についてさらに検索
タグ
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Runge_Kutta_Fehlberg_7(8)
バージョン | 公開済み | リリース ノート | |
---|---|---|---|
2.1.1 | test_Runge_Kutta_Fehlberg_7_8.m was modified. |
||
2.1.0.0 | test_Runge_Kutta_Fehlberg_7_8.m is modified and output.txt is added to reveal tremendous accuracy and speed of Runge-Kutta-Fehlberg (RKF78). |
||
2.0.0.0 | test_Runge_Kutta_Fehlberg_7_8.m is modified. |
||
1.1 | Title is changed. |
||
1.0.0.0 |