中點法
這裡有另一種治療尤拉法「步首近視」的辦法。中點法不像改良尤拉法那樣對起點與終點斜率取平均,而是這樣推理:最能代表整步的斜率,很可能是它「中央」的斜率。於是它先向前走半步去窺看中點處的斜率,再回頭用這個單一的中點斜率走完整步。一個選得好的取樣,勝過一個放錯位置的取樣。
精確地說,分兩階段:先走半步尤拉到中點,y_mid = y_n + (h/2) * f(t_n, y_n),得到 y 在時刻 t_n + h/2 的估計。然後在那裡算斜率 k = f(t_n + h/2, y_mid),用這個中點斜率走完整步:y_(n+1) = y_n + h * k。半步是用完即丟的鷹架;中點斜率才是真正的成分。從幾何上看,你沿著一條斜率取自區間中央的直線走,在平滑彎曲的解上,這比取自左端的斜率是個好得多的代表斜率。
和改良尤拉法一樣,中點法是二階——全域誤差為 h^2 量級——每步同樣要算兩次斜率。兩者是表親:都是兩階段、二階的龍格-庫塔法,只是建立在不同的幾何概念上(中點斜率對比端點平均斜率)。一般而言誰也沒比誰好得多;它們是用來說明「存在一整族二階方法」的標準範例,而這兩個是其中兩位自然的成員。
對 y' = y, y(0) = 1, h = 0.1:半步 y_mid = 1 + 0.05 * 1 = 1.05;中點斜率 k = 1.05;整步 y1 = 1 + 0.1 * 1.05 = 1.105。此處結果與改良尤拉法相同,同樣對到 e^0.1 = 1.10517 的三位數——遠勝普通尤拉法的 1.1。
先窺看中點斜率,再用它走完整步——二階。
容易混淆的是,中點法與改良尤拉法在不同教科書中有時都被稱作「modified Euler(修正尤拉法)」。它們是不同的格式(中點斜率對比端點平均斜率),只是恰好共享相同的二階與成本。