常微分方程的數值方法

改良尤拉(Heun)法

/ Heun (HOYN) /

普通尤拉法有一個明顯的缺點:它在這一步的「起點」就認定了斜率,而忽略斜率沿途如何變化。在彎曲的解上,這總是有點不對。改良尤拉法用一個簡單而誠實的把戲修正這點:它不只信任一個斜率,而是把起點的斜率與它認為終點的斜率取平均,再用這個平均值。對傾斜度取兩個估計、折中——就像同時看你腳下與下一個彎處的路況,按平均來掌舵。

精確地說,它是兩階段的預測-校正法。先是「預測」:走一步試探性的完整尤拉步,得到粗略的終值 y_pred = y_n + h * f(t_n, y_n)。再是「校正」:在那裡算斜率 f(t_(n+1), y_pred),與起點斜率取平均,用這個平均值走真正的一步:y_(n+1) = y_n + (h/2) * [ f(t_n, y_n) + f(t_(n+1), y_pred) ]。尤拉預測只是用來大致找出終點斜率位置的鷹架;你真正沿著走的是那個平均斜率。

回報相當可觀。藉由使用平均斜率,方法與真泰勒展開多吻合一項,成為二階:它的全域誤差為 h^2 量級,所以現在 h 減半、誤差縮成四分之一。代價是每步算兩次斜率而非一次——每步工作量加倍——但準確度的提升足以回本有餘。改良尤拉法是最簡單而真正有用的步進方法,也是介於粗糙尤拉法與它所屬的完整龍格-庫塔家族之間自然的階梯。

對 y' = y, y(0) = 1, h = 0.1:起點斜率 f = 1,故 y_pred = 1.1;終點斜率 f = 1.1;平均 = 1.05;y1 = 1 + 0.1 * 1.05 = 1.105。對照精確值 e^0.1 = 1.10517。普通尤拉法只給 1.1——改良尤拉法已經對到三位數。

用尤拉法預測、用平均斜率校正——二階準確度。

改良尤拉法本身就是龍格-庫塔家族的一員——它是兩階段、二階的龍格-庫塔法。「Heun」與「改良尤拉」指的是同一個格式;兩者都對起點與終點斜率取平均。

又稱
Heun's methodexplicit trapezoidal methodEuler-trapezoidal method改進尤拉法Heun 法