ARTICLE

牛顿法

牛顿法 (Newton's Method) 牛顿法(Newton's method),又称牛顿-拉弗森方法(Newton–Raphson method),是数值分析中用于求解方程根与函数极值的一类迭代算法。其核心思想是利用函数在当前点的局部线性近似(泰勒展开的一阶或二阶项)来构造迭代格式,从而以二次收敛速度逼近精确解。牛顿法是科学计算中最基础的算法之一,在方

浏览 7 更新 2025-11-08

牛顿法 (Newton's Method)

牛顿法(Newton's method),又称牛顿-拉弗森方法(Newton–Raphson method),是数值分析中用于求解方程根与函数极值的一类迭代算法。其核心思想是利用函数在当前点的局部线性近似(泰勒展开的一阶或二阶项)来构造迭代格式,从而以二次收敛速度逼近精确解。牛顿法是科学计算中最基础的算法之一,在方程求解、最优化机器学习和工程仿真等领域均有广泛应用。它的重要性不仅体现在理论上的优雅收敛性质,更在于其作为许多高级数值方法构建基石的实用价值。

求根问题

对于实数方程 f(x)=0f(x)=0,牛顿法的迭代公式为:

xk+1=xkf(xk)f(xk),x_{k+1} = x_k - \frac{f(x_k)}{f'(x_k)},

其中 f(xk)f'(x_k)ffxkx_k 处的导数。其几何直观非常清晰:从当前点 (xk,f(xk))(x_k, f(x_k)) 作函数曲线的切线,该切线与 xx 轴的交点即为下一迭代点 xk+1x_{k+1}。如此反复迭代,不断用线性逼近代替非线性方程,逐步逼近真实根。当初始猜测 x0x_0 充分接近真根且 f(x)0f'(x) \neq 0 时,迭代序列具有二次收敛性,即误差满足 ek+1=O(ek2)e_{k+1} = O(e_k^2),这意味着每迭代一步有效数字大约翻倍,收敛速度远快于二分法的线性收敛或割线法的超线性收敛。

fC2f \in C^2f(r)=0f(r)=0f(r)0f'(r) \neq 0,则存在 rr 的邻域使得从该邻域内任意点出发的牛顿迭代均收敛到 rr。若初始点远离真根,算法可能发散或收敛到其他根,因此实际使用中常需结合线搜索或阻尼策略。若 f(r)=0f'(r)=0(重根情形),收敛速度降为线性,可通过修正格式 xk+1=xkmf(xk)/f(xk)x_{k+1} = x_k - m f(x_k)/f'(x_k) 恢复二次收敛,其中 mm 为根的重数。这一修正体现了对算法底层收敛机制的深入理解。

优化问题

最优化中,牛顿法用于求解无约束极小化问题 minxRnF(x)\min_{x \in \mathbb{R}^n} F(x)。其迭代格式为:

xk+1=xk[2F(xk)]1F(xk),x_{k+1} = x_k - [\nabla^2 F(x_k)]^{-1} \nabla F(x_k),

其中 F\nabla F梯度向量,2F\nabla^2 FHessian矩阵。该格式来自 FFxkx_k 处的二阶泰勒展开:

F(xk+d)F(xk)+F(xk)Td+12dT2F(xk)d,F(x_k + d) \approx F(x_k) + \nabla F(x_k)^T d + \frac12 d^T \nabla^2 F(x_k) d,

令右端关于 dd 的梯度为零即得牛顿步 dk=[2F(xk)]1F(xk)d_k = -[\nabla^2 F(x_k)]^{-1} \nabla F(x_k)。当 FF 强凸且 Hessian Lipschitz 连续时,牛顿法二次收敛到全局极小点。

梯度下降法相比,牛顿法利用二阶曲率信息,在极小点附近收敛远快于梯度下降,且对问题的条件数不敏感。但每步需计算并求逆 n×nn \times n Hessian 矩阵,单步计算代价为 O(n3)O(n^3),远高于梯度下降的 O(n)O(n),因此适用于中小规模问题或需要高精度的场景。这种时间-精度权衡是算法选择时的核心考量。

拟牛顿法

为克服每步计算 Hessian 矩阵的高昂代价,拟牛顿法(Quasi-Newton methods)应运而生。其核心思想是用梯度差分的低秩更新逐步近似 Hessian 矩阵或其逆矩阵,完全避免直接计算二阶导数。拟牛顿法只需每步计算梯度(与梯度下降相同),却能达到接近牛顿法的收敛速度。典型算法包括 DFP 方法(Davidon–Fletcher–Powell)、BFGS 方法(Broyden–Fletcher–Goldfarb–Shanno,最流行的拟牛顿法)以及适用于大规模问题的 L-BFGS 方法(Limited-memory BFGS,仅存储最近若干次梯度差分的隐式近似)。拟牛顿法通常达到超线性收敛速度,兼顾了牛顿法的快速收敛与梯度下降的低计算成本,在实践中得到广泛应用。

实用改进

在优化中,牛顿步可能不是下降方向(Hessian 非正定时),或步长过大导致发散。阻尼牛顿法引入线搜索:xk+1=xk+αkdkx_{k+1} = x_k + \alpha_k d_k,其中 αk(0,1]\alpha_k \in (0,1] 由 Armijo 条件或 Wolfe 条件确定,保证充分下降。信赖域牛顿法则在每一步构造局部模型(二阶泰勒近似)并在信赖域半径内极小化该模型,具有全局收敛性,且在极小点附近自动退化为经典牛顿法。当 Hessian 矩阵奇异或非正定时,可添加正则化项 2F(xk)+μI\nabla^2 F(x_k) + \mu I 进行修正,其中 μ>0\mu > 0 足够大以保证矩阵正定,这本质上将牛顿法与梯度下降法混合,在远离极小点时发挥梯度下降的稳健性,接近极小点时发挥牛顿法的快速收敛。

变体与推广

割线法用差商 [f(xk)f(xk1)]/(xkxk1)[f(x_k) - f(x_{k-1})] / (x_k - x_{k-1}) 代替导数 f(xk)f'(x_k),免去解析求导但收敛速度降为超线性(收敛阶约 1.618)。Steffensen 方法用迭代点构造另一种无导数的牛顿格式。在复数域求解多项式根时,牛顿法可生成分形(牛顿分形),展现出丰富的动力系统行为。半光滑牛顿法将牛顿法推广到非光滑方程(如含绝对值或投影算子的方程),用于求解变分不等式和互补问题。

应用领域

牛顿法在众多科学与工程领域占据核心地位。在求解非线性方程组方面,计算流体力学中 Navier–Stokes 方程的离散化、结构力学中的有限元分析、化学反应工程中的物料平衡计算,均依赖牛顿法或其变体。在机器学习中,逻辑回归和广义线性模型常采用迭代重加权最小二乘法(IRLS),其本质即为牛顿法。机器人学中的逆运动学求解、电力系统的潮流计算、经济学中的一般均衡模型求解,同样以牛顿法为底层引擎。在深度学习中,由于现代神经网络的参数量动辄数百万甚至数十亿,经典牛顿法因 Hessian 矩阵的存储和求逆代价过大而不实用,但 Adam、RMSProp 等自适应梯度优化器借鉴了牛顿法的缩放思想,利用梯度的一阶矩和二阶矩估计对每个参数自适应调整学习率,以对角近似的形式模拟 Hessian 的预处理效果。

历史

牛顿法最早由艾萨克·牛顿在 1669 年的手稿《De analysi per aequationes numero terminorum infinitas》中提出,仅针对多项式方程。1711 年,约瑟夫·拉弗森将其推广为通用迭代格式。此后,辛普森、傅里叶、柯西等人进一步完善了收敛性理论和实用技巧。20 世纪 60 年代,随着计算机的出现,牛顿法成为数值计算的核心算法之一,其影响持续至今。

\subsection*{参考文献}

  1. Ortega, J. M., \& Rheinboldt, W. C. (1970). Iterative Solution of Nonlinear Equations in Several Variables. SIAM.
  2. Nocedal, J., \& Wright, S. J. (2006). Numerical Optimization (2nd ed.). Springer.
  3. Kelley, C. T. (2003). Solving Nonlinear Equations with Newton's Method. SIAM.