非线性规划中的割线法(Secant Method)
字数 2146 2025-12-21 14:29:46

非线性规划中的割线法(Secant Method)

割线法是一种用于求解一元非线性方程 \(f(x) = 0\) 的经典迭代法。在无约束优化中,找到目标函数 \(F(x)\) 的极值点通常转化为求其导数(梯度)的零点,即求解 \(F'(x) = 0\)。因此,割线法是求解优化问题一阶最优性条件的有效工具,特别适用于导数计算困难或成本高昂的情况。

核心思想:用一条割线(通过当前两个迭代点的直线)来近似目标函数的曲线,并用该割线与横轴的交点作为新的迭代点,逐步逼近真实根。它本质上是牛顿法的近似,用差商代替导数,避免了计算导数的需求。


1. 基本公式与几何直观

假设我们需要求解方程 \(f(x) = 0\)。给定两个初始猜测点 \(x_{k-1}\)\(x_k\),过点 \((x_{k-1}, f(x_{k-1}))\)\((x_k, f(x_k))\) 作一条直线(割线),其斜率为:

\[m_k = \frac{f(x_k) - f(x_{k-1})}{x_k - x_{k-1}} \]

该割线的方程为:

\[y - f(x_k) = m_k (x - x_k) \]

\(y = 0\) 解得割线与 \(x\)-轴的交点,即下一个迭代点 \(x_{k+1}\)

\[x_{k+1} = x_k - \frac{f(x_k)}{m_k} = x_k - f(x_k) \cdot \frac{x_k - x_{k-1}}{f(x_k) - f(x_{k-1})} \]

这就是割线法的迭代公式。

几何解释:在每次迭代中,我们用通过最近两点的直线来局部近似函数 \(f(x)\),并用该直线的根来更新估计值。随着迭代进行,如果初始点选择合适,序列 \(\{x_k\}\) 将收敛到 \(f(x) = 0\) 的一个解。


2. 收敛性分析

割线法的收敛速度介于线性收敛和二次收敛之间,称为超线性收敛,其收敛阶约为 \(\frac{1+\sqrt{5}}{2} \approx 1.618\)(黄金比例)。这比二分法(线性收敛)快,但通常比牛顿法(局部二次收敛)慢。

收敛条件

  • 函数 \(f(x)\) 在根 \(x^*\) 附近连续可微。
  • 初始点 \(x_0, x_1\) 需要足够靠近真实根 \(x^*\)
  • \(f'(x^*) \neq 0\)(即根是单根)。

由于割线法不计算导数,对初始点的选择比牛顿法更敏感,但比牛顿法更节省计算量(尤其当导数计算复杂时)。


3. 在优化中的应用:求驻点

在无约束优化问题 \(\min F(x)\) 中,一阶必要条件是 \(F'(x) = 0\)。因此,我们可以直接对 \(f(x) = F'(x)\) 应用割线法来寻找驻点。

步骤

  1. 计算目标函数的导数 \(f(x) = F'(x)\)(解析式或数值差分)。
  2. 选择两个初始点 \(x_0, x_1\),计算 \(f(x_0), f(x_1)\)
  3. 迭代更新:\(x_{k+1} = x_k - f(x_k) \cdot \frac{x_k - x_{k-1}}{f(x_k) - f(x_{k-1})}\)
  4. \(|x_{k+1} - x_k| < \epsilon\)\(|f(x_{k+1})| < \epsilon\) 时停止,输出 \(x_{k+1}\) 作为近似驻点。

优点:无需计算二阶导数(即 \(F''(x)\)),适合导数容易获得但二阶导数复杂的问题。


4. 割线法的变体:抛物线法(二次插值)

割线法本质是线性插值求根。其自然推广是抛物线法(或二次插值法),它通过三个点构造二次多项式来近似函数,并取二次函数的一个根作为新迭代点。抛物线法通常收敛更快(收敛阶约1.839),但需要处理复数根的选择问题。


5. 多维推广:拟牛顿法

在一元函数中,割线法用差商近似导数。在多维优化问题 \(\min F(\mathbf{x})\) 中,对应的是用差商近似海森矩阵(二阶导数矩阵)。这类方法称为拟牛顿法(如BFGS、DFP算法),它们用割线条件(secant condition)来迭代更新海森矩阵的近似,从而避免了直接计算二阶导数。因此,拟牛顿法可视为割线法在多维空间的推广。


6. 优缺点总结

优点

  • 不需要计算导数(或只需一阶导数,无需二阶导数)。
  • 收敛速度超线性,比二分法快。
  • 每次迭代只需计算一个函数值(若保存前一次值)。

缺点

  • 需要两个初始点,且对初始点敏感。
  • 不保证全局收敛,可能发散或不收敛到最近根。
  • 对于重根(\(f'(x^*) = 0\))收敛速度会降为线性。

总结:割线法是一种简单而高效的一维求根方法,在优化中用于寻找驻点。其核心思想是用差商近似导数,避免了牛顿法对二阶导数的需求。理解割线法是学习更复杂的拟牛顿法和高维优化技术的重要基础。

非线性规划中的割线法(Secant Method) 割线法是一种用于求解 一元非线性方程 \( f(x) = 0 \) 的经典迭代法。在无约束优化中,找到目标函数 \( F(x) \) 的极值点通常转化为求其导数(梯度)的零点,即求解 \( F'(x) = 0 \)。因此,割线法是求解优化问题一阶最优性条件的有效工具,特别适用于导数计算困难或成本高昂的情况。 核心思想 :用一条 割线 (通过当前两个迭代点的直线)来近似目标函数的曲线,并用该割线与横轴的交点作为新的迭代点,逐步逼近真实根。它本质上是 牛顿法的近似 ,用差商代替导数,避免了计算导数的需求。 1. 基本公式与几何直观 假设我们需要求解方程 \( f(x) = 0 \)。给定两个初始猜测点 \( x_ {k-1} \) 和 \( x_ k \),过点 \( (x_ {k-1}, f(x_ {k-1})) \) 和 \( (x_ k, f(x_ k)) \) 作一条直线(割线),其斜率为: \[ m_ k = \frac{f(x_ k) - f(x_ {k-1})}{x_ k - x_ {k-1}} \] 该割线的方程为: \[ y - f(x_ k) = m_ k (x - x_ k) \] 令 \( y = 0 \) 解得割线与 \( x \)-轴的交点,即下一个迭代点 \( x_ {k+1} \): \[ x_ {k+1} = x_ k - \frac{f(x_ k)}{m_ k} = x_ k - f(x_ k) \cdot \frac{x_ k - x_ {k-1}}{f(x_ k) - f(x_ {k-1})} \] 这就是割线法的迭代公式。 几何解释 :在每次迭代中,我们用通过最近两点的直线来局部近似函数 \( f(x) \),并用该直线的根来更新估计值。随着迭代进行,如果初始点选择合适,序列 \( \{x_ k\} \) 将收敛到 \( f(x) = 0 \) 的一个解。 2. 收敛性分析 割线法的收敛速度介于线性收敛和二次收敛之间,称为 超线性收敛 ,其收敛阶约为 \( \frac{1+\sqrt{5}}{2} \approx 1.618 \)(黄金比例)。这比二分法(线性收敛)快,但通常比牛顿法(局部二次收敛)慢。 收敛条件 : 函数 \( f(x) \) 在根 \( x^* \) 附近连续可微。 初始点 \( x_ 0, x_ 1 \) 需要足够靠近真实根 \( x^* \)。 \( f'(x^* ) \neq 0 \)(即根是单根)。 由于割线法不计算导数,对初始点的选择比牛顿法更敏感,但比牛顿法更节省计算量(尤其当导数计算复杂时)。 3. 在优化中的应用:求驻点 在无约束优化问题 \( \min F(x) \) 中,一阶必要条件是 \( F'(x) = 0 \)。因此,我们可以直接对 \( f(x) = F'(x) \) 应用割线法来寻找驻点。 步骤 : 计算目标函数的导数 \( f(x) = F'(x) \)(解析式或数值差分)。 选择两个初始点 \( x_ 0, x_ 1 \),计算 \( f(x_ 0), f(x_ 1) \)。 迭代更新:\( x_ {k+1} = x_ k - f(x_ k) \cdot \frac{x_ k - x_ {k-1}}{f(x_ k) - f(x_ {k-1})} \)。 当 \( |x_ {k+1} - x_ k| < \epsilon \) 或 \( |f(x_ {k+1})| < \epsilon \) 时停止,输出 \( x_ {k+1} \) 作为近似驻点。 优点 :无需计算二阶导数(即 \( F''(x) \)),适合导数容易获得但二阶导数复杂的问题。 4. 割线法的变体:抛物线法(二次插值) 割线法本质是 线性插值 求根。其自然推广是 抛物线法 (或二次插值法),它通过三个点构造二次多项式来近似函数,并取二次函数的一个根作为新迭代点。抛物线法通常收敛更快(收敛阶约1.839),但需要处理复数根的选择问题。 5. 多维推广:拟牛顿法 在一元函数中,割线法用差商近似导数。在多维优化问题 \( \min F(\mathbf{x}) \) 中,对应的是用差商近似 海森矩阵 (二阶导数矩阵)。这类方法称为 拟牛顿法 (如BFGS、DFP算法),它们用割线条件(secant condition)来迭代更新海森矩阵的近似,从而避免了直接计算二阶导数。因此,拟牛顿法可视为割线法在多维空间的推广。 6. 优缺点总结 优点 : 不需要计算导数(或只需一阶导数,无需二阶导数)。 收敛速度超线性,比二分法快。 每次迭代只需计算一个函数值(若保存前一次值)。 缺点 : 需要两个初始点,且对初始点敏感。 不保证全局收敛,可能发散或不收敛到最近根。 对于重根(\( f'(x^* ) = 0 \))收敛速度会降为线性。 总结 :割线法是一种简单而高效的一维求根方法,在优化中用于寻找驻点。其核心思想是用差商近似导数,避免了牛顿法对二阶导数的需求。理解割线法是学习更复杂的拟牛顿法和高维优化技术的重要基础。