通过MCP连接 →

输入计算

数学公式

数学公式: 哈雷法求根计算器

广告

结果

近似根 x(f(x) = 0)
0.7390851332151607
由哈雷法求得
实际迭代次数 3
最终残差 f(x) 0.0
状态 Converged

什么是哈雷法?

哈雷法(Halley's method)是一种用于求解 \(f(x) = 0\) 形式方程的迭代数值方法。它可以看作牛顿—拉夫森法(Newton-Raphson)的「三阶(立方收敛)升级版」:牛顿法只用到函数本身及其一阶导数,而哈雷法额外引入了二阶导数,因此通常能用更少的迭代次数达到相同的精度。这是一种通用的数学/数值分析工具,适用于任何场景;三角函数中的角度一律按弧度(radian)处理。

曲线 f(x) 在根处与 x 轴相交,连续的迭代点逐步向其收敛
哈雷法通过迭代不断优化初始猜测,直到收敛到 \(f(x)=0\) 的根。

使用方法

首先在 \(f(x)\) 中输入你要求根的函数,然后分别填入它的一阶导数 \(f'(x)\) 和二阶导数 \(f''(x)\),三者均以含 \(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'(x_n)}{2\,[f'(x_n)]^2 - f(x_n)\,f''(x_n)}$$ 分子相当于(缩放后的)牛顿法修正项,而分母中多出的 \(-\,f(x_n)\,f''(x_n)\) 一项则对函数 \(f\) 的曲率进行了修正,从而加快收敛速度。当 \(x\) 的变化量或残差 \(f(x)\) 小于一个极小的容差,或达到最大迭代次数时,循环就会停止。如果分母变为零,该方法会失效,此时应换一个不同的 \(x_0\) 重试。

图示在某点用切线和带曲率的密切曲线近似函数
哈雷法同时利用斜率 \(f'(x)\) 和曲率 \(f''(x)\),拟合出一条比直线切线更贴合函数的曲线。

计算示例

取 \(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 数」\(x = 0.7390851332151607\),这正是方程 \(x = \cos(x)\) 的唯一解。

常见问题

哈雷法和牛顿法有什么区别?牛顿法忽略了曲率信息,而哈雷法加入了二阶导数项,因此收敛阶为三阶(立方)而非二阶(平方),通常每多算出一位正确数字所需的迭代次数更少。

为什么一定要手动输入导数?本计算器完全依赖你提供的导数。如果导数写错,收敛会变慢甚至失败。请仔细对 \(f(x)\) 求导,得到准确的 \(f'(x)\) 和 \(f''(x)\)。

如果不收敛怎么办?该方法找到的是离 \(x_0\) 最近的那个根。初始值选得不好可能导致发散,或者收敛到另一个根;而分母趋于零则会直接中断迭代。遇到问题时,请尝试更换 \(x_0\),或检查导数表达式是否正确。

最后更新: