亞當斯-莫爾頓法
/ Adams-Moulton (AD-amz MOLE-tun) /
亞當斯-巴什福斯讓一個多項式穿過「過去」的斜率並向前延伸——但把多項式延伸到它的資料之外(外推)總是不穩。亞當斯-莫爾頓做了一個改變一切的改進:它讓多項式也穿過「新點」處的斜率,不只是過去的。現在你是在插值,在資料之內擬合曲線而非往外猜,這準確且穩定得多。代價是新斜率依賴你正想找的新值——所以方法是隱式的。
精確地說,公式 y_(n+1) = y_n + h * (過去斜率的加權和「以及」f(t_(n+1), y_(n+1))) 包含了新點處尚未知的斜率。最簡單的情形是梯形法則 y_(n+1) = y_n + (h/2)(f_n + f_(n+1));更高的成員是三步亞當斯-莫爾頓,四階。因為 y_(n+1) 透過那個 f(t_(n+1), y_(n+1)) 項坐在右側裡面,你無法直接讀出答案——你必須每步為它解一個代數方程(若 f 非線性就用牛頓法,或用預測-校正迭代)。
用這份額外麻煩換來的東西很實在。在相同步數下,亞當斯-莫爾頓比可比階的亞當斯-巴什福斯更準確,而關鍵在於它有大得多的絕對穩定區域——隱式方法在顯式方法會炸掉的地方仍保持穩定,這正是剛性問題所要求的。實務上,亞當斯-巴什福斯(預測子)與亞當斯-莫爾頓(校正子)被一起跑成預測-校正對:顯式方法猜測、隱式公式精煉,你就在不需從頭解完整非線性方程下,得到隱式品質的準確度。
梯形法則 y_(n+1) = y_n + (h/2)(f_n + f(t_(n+1), y_(n+1))) 是最簡單的亞當斯-莫爾頓法。未知量 y_(n+1) 出現在兩邊,所以對非線性 f 你每步為它求解,或餵入一個亞當斯-巴什福斯的預測再校正一次。
也納入新斜率——隱式、更準確且穩定得多。
身為隱式本身並不會讓各階亞當斯-莫爾頓都擅長剛性問題:高階亞當斯-莫爾頓的穩定區域有限。對真正的剛性,通常偏好 BDF 家族。