常微分方程的數值方法

內嵌龍格-庫塔法(RKF45)

/ RKF45 (ar-kay-EF-forty-five) /

自適應步長控制需要每步誤差的估計——但估計誤差通常意味著額外工作,比如用第二種方式算一遍這一步。內嵌龍格-庫塔法達成了一個巧妙的節省:它們用「同一組」斜率計算,算出兩個不同階的龍格-庫塔結果,只是用兩組不同的權重混合。這兩個結果之差就是幾乎免費的誤差估計,完全不必額外算斜率。你把誤差量規直接內建進去。

精確地說,一個內嵌對共享它的階段斜率 k1、k2、...,用一組權重組合一次得到 p 階估計,再用另一組組合得到 (p+1) 階估計。兩者之間的落差估計較低階結果的局部誤差。經典範例是四階與五階的龍格-庫塔-費爾貝格——RKF45——它每步用六次斜率計算同時產生四階與五階的值;兩者之差驅動步長控制器。(像 Dormand-Prince 這樣的現代變體,是許多預設求解器背後的引擎,用更好的係數精煉同一概念。)

內嵌龍格-庫塔對是人們實際運行的日常自適應求解器內部的標準機件——那些 ode45 式的常式。它們把龍格-庫塔的穩健與自啟動便利,與一個便宜、可靠的誤差估計結合起來,兩者合起來使自動的、受準確度控制的積分變得可行。誠實的提醒和所有自適應一樣:兩個內嵌結果之差估計的是「局部」誤差,而且只是估計——通常極佳,但偶爾會在病態問題上誤導,且它對剛性無能為力,那裡你仍需要隱式求解器。

RKF45 每步算出六個階段斜率,再用「同樣」六個斜率以不同權重構成一個四階值 y4 與一個五階值 y5。誤差估計就是 |y5 - y4|;若它太大則步長縮小,若很小則步長放大——全程不必額外算一次 f。

一組斜率得出兩個階——誤差估計幾乎免費。

內嵌之差估計的是較低階解的「局部」誤差,而非全域誤差,且它假定較高階結果是「真相」。它是個啟發法,且對剛性毫無幫助——為此你仍需要隱式方法。

又称
Runge-Kutta-Fehlbergembedded RK pair龍格-庫塔-費爾貝格法內嵌 RK 對