什麼是哈雷法?
哈雷法(Halley's method)是一種用來求解 \(f(x) = 0\) 這類方程式的迭代數值方法。它可視為牛頓—拉夫森法(Newton-Raphson)的三階(立方收斂)親戚:牛頓法只用到函數本身與一階導數,哈雷法則額外引入二階導數,因此通常能在較少的迭代次數內達到相同的精度。這是一個通用的數學/數值分析工具,適用於任何情境;三角函數內的角度一律以弧度(radian)計算。
使用方式
先在 \(f(x)\) 欄位輸入要求根的函數,接著分別以 \(x\) 的運算式填入一階導數 \(f'(x)\) 與二階導數 \(f''(x)\)。支援的語法包括 +、-、*、/、次方符號 ^、括號,以及 sin、cos、tan、asin、acos、atan、sinh、cosh、tanh、exp、log/ln、log10、sqrt、abs 等函數,另有常數 pi 與 e。請挑選一個接近目標根的初始猜測值 \(x_0\),設定最大迭代次數 \(n\),並選擇要顯示的有效位數。
公式說明
每一步迭代計算 $$x_{n+1} = x_n - \frac{2\,f(x_n)\,f^{\prime}(x_n)}{2\,[f^{\prime}(x_n)]^2 - f(x_n)\,f^{\prime\prime}(x_n)}$$ 分子是經過縮放的標準牛頓修正項,而分母中多出的 \(-f(x_n)\,f^{\prime\prime}(x_n)\) 一項則修正了 \(f\) 的曲率,藉此加速收斂。當 \(x\) 的變化量或殘差 \(f(x)\) 降到極小的容許誤差以下,或達到迭代上限時,迴圈便會停止。若分母變為零,方法將失效,此時請改用不同的 \(x_0\)。
實例演算
以 \(f(x) = x - \cos(x)\),\(f'(x) = 1 + \sin(x)\),\(f''(x) = \cos(x)\),從 \(x_0 = 1\) 開始:第一步得到 $$x_1 = 1 - \frac{2 \times 0.4596977 \times 1.8414710}{2 \times 1.8414710^2 - 0.4596977 \times 0.5403023} = 1 - \frac{1.6930504}{6.5336550} = 0.7408769$$ 迭代很快便收斂到道蒂數(Dottie number)\(x = 0.7390851332151607\),也就是 \(x = \cos(x)\) 的唯一解。
常見問題
哈雷法和牛頓法有什麼不同?牛頓法忽略曲率;哈雷法加入了二階導數項,將收斂從二階提升到三階(立方),通常每多算出一位正確數字所需的迭代次數更少。
為什麼必須輸入導數?本計算器會直接採用你提供的導數。若導數有誤,收斂會變差甚至失敗。請仔細對 \(f(x)\) 微分,求出正確的 \(f'(x)\) 與 \(f''(x)\)。
如果無法收斂怎麼辦?本方法會找出最接近 \(x_0\) 的根。起始點選得不好可能會發散,或收斂到另一個根;而分母趨近於零則會讓迭代完全中止。此時請更換 \(x_0\),或檢查你的導數運算式。