常微分方程的數值方法

亞當斯-巴什福斯法

/ Adams-Bashforth (AD-amz BASH-forth) /

龍格-庫塔法靠著在每一步內多次取樣斜率取得高準確度——但那些取樣算完就被丟掉。多步法則更節儉:我們在前幾步已經算過斜率了,何不「重用」那段歷史?亞當斯-巴什福斯是顯式多步家族。它讓一個多項式穿過最近幾個已知斜率,把那個多項式延伸過新的一步,在它底下積分以向前一躍——每步只需「一次」新的斜率計算就得到高階。

精確地說,你保留最近的斜率值 f_n、f_(n-1)、f_(n-2)、...,並構成 y_(n+1) = y_n + h * (那些過去斜率的加權和)。權重來自對穿過所存斜率的插值多項式積分。例如,兩步亞當斯-巴什福斯法是 y_(n+1) = y_n + (h/2)(3 f_n - f_(n-1)),它是二階;流行的四步版本用最近四個斜率,是四階。它是顯式的,因為它所需的每個斜率都來自過去——新值 y_(n+1) 從不出現在右側,所以你直接算出它。

好處是效率:RK4 每步要算四次斜率,而四步亞當斯-巴什福斯只要一次(其餘是回收的),所以當每次 f 計算昂貴時,多步法在相同階下可便宜許多。代價是它不自啟動——一開頭你沒有歷史,所以必須用 RK4 之類的單步法起跑,建立起最初幾個值。而身為顯式,普通亞當斯-巴什福斯與 RK4 一樣在剛性問題上力弱,這正是為何它通常與隱式表親亞當斯-莫爾頓配成預測-校正對。

兩步亞當斯-巴什福斯:y_(n+1) = y_n + (h/2)(3 f_n - f_(n-1))。它重用上一步的斜率 f_(n-1) 連同當前的 f_n,所以一個二階步只花一次新的 f 計算。你得先用 RK4 或改良尤拉法產生 y1,這個方法才能起跑。

重用儲存的過去斜率——每步一次新斜率就有高階,但不自啟動。

亞當斯-巴什福斯不自啟動:它需要幾個先前的點才能套用公式,所以必須由單步法(例如 RK4)提供。而身為顯式方法,它不適合剛性方程。

又称
AB methodexplicit multistep method亞當斯-巴什福特法顯式多步法