預測-校正法
隱式方法準確又穩定,卻很彆扭:它的公式裡未知的下一個值出現在「兩邊」,所以你不能直接算出它——你得為它解一個方程。預測-校正法用兩個動作繞過這點。先用一個便宜的顯式方法對下一個值做粗略猜測(預測)。再把那個猜測代入一個更好的隱式公式的右側,吐出一個精煉過的值(校正)。先猜、再改進——就像先用鉛筆打稿,再用墨水描過草稿。
精確地說:「預測子」是一個顯式公式(例如 Adams-Bashforth,或一步普通尤拉),只用已知的值產生初始估計 y*_(n+1)。「校正子」是一個隱式公式(例如 Adams-Moulton,或梯形法則),它本來需要右側出現 y_(n+1)——但現在你把預測子的 y* 餵進那裡,把隱式公式變成直接計算。常見的做法是在預測處算一次 f、校正後再算一次 f;這個算值-校正循環就是 PECE 模式。校正子甚至可以套用不只一次,每一遍都精煉那個值。
這正是強大的隱式 Adams 方法日常被使用、卻從不解非線性方程的方式。這種配對還白送一個獎勵:預測值與校正值之間的落差,是局部誤差一個便宜、內建的估計,而這恰恰是自適應步長控制器決定該放大還是縮小步長所需要的。改良尤拉法是所有預測-校正法中最簡單的——尤拉法預測、梯形法則校正。這個概念一路擴展到生產級求解器中所用的多步 Adams-Bashforth-Moulton 配對。
改良尤拉法就是一個預測-校正法:用顯式尤拉「預測」y* = y_n + h f(t_n, y_n),再用梯形法則「校正」y_(n+1) = y_n + (h/2)[ f(t_n, y_n) + f(t_(n+1), y*) ]。校正子本是隱式的,但餵入 y* 後它變成顯式計算。
便宜地顯式預測,再用更好的隱式公式校正。
預測-校正之差(預測值減校正值)是個方便的誤差估計,但它並不能讓校正子無條件穩定——對剛性問題你必須真正去解隱式方程,而非只預測再校正一次。