非线性规划中的修正牛顿法基础题
字数 3248 2025-10-26 19:15:23

非线性规划中的修正牛顿法基础题

题目描述
考虑非线性规划问题:
最小化 \(f(x) = x_1^4 + 2x_2^4 + x_1^2 x_2^2 - 5x_1\)
初始点 \(x^{(0)} = [1, 1]^T\),使用修正牛顿法求解该问题。要求说明修正牛顿法与标准牛顿法的区别,并详细展示迭代过程。


解题过程

1. 修正牛顿法的核心思想

标准牛顿法直接使用目标函数的Hessian矩阵(二阶导数矩阵)的逆来更新迭代点:

\[x^{(k+1)} = x^{(k)} - [\nabla^2 f(x^{(k)})]^{-1} \nabla f(x^{(k)}) \]

但若Hessian矩阵非正定,搜索方向可能不是下降方向,导致算法失效。修正牛顿法通过强制Hessian矩阵正定来解决此问题,常用方法是:

  • 对Hessian矩阵 \(H_k\) 进行修正 \(H_k + \mu I\)\(\mu > 0\)),使 \(H_k + \mu I\) 正定。
  • 修正后的迭代公式:

\[x^{(k+1)} = x^{(k)} - [H_k + \mu I]^{-1} \nabla f(x^{(k)}) \]


2. 计算梯度与Hessian矩阵

给定 \(f(x) = x_1^4 + 2x_2^4 + x_1^2 x_2^2 - 5x_1\)

  • 梯度

\[\nabla f(x) = \begin{bmatrix} 4x_1^3 + 2x_1 x_2^2 - 5 \\ 8x_2^3 + 2x_1^2 x_2 \end{bmatrix} \]

  • Hessian矩阵

\[\nabla^2 f(x) = \begin{bmatrix} 12x_1^2 + 2x_2^2 & 4x_1 x_2 \\ 4x_1 x_2 & 24x_2^2 + 2x_1^2 \end{bmatrix} \]


3. 初始点检查与修正

初始点 \(x^{(0)} = [1, 1]^T\)

  • 梯度:

\[\nabla f(x^{(0)}) = [4 \cdot 1^3 + 2 \cdot 1 \cdot 1^2 - 5,\ 8 \cdot 1^3 + 2 \cdot 1^2 \cdot 1]^T = [1,\ 10]^T \]

  • Hessian矩阵:

\[H_0 = \begin{bmatrix} 12 \cdot 1^2 + 2 \cdot 1^2 & 4 \cdot 1 \cdot 1 \\ 4 \cdot 1 \cdot 1 & 24 \cdot 1^2 + 2 \cdot 1^2 \end{bmatrix} = \begin{bmatrix} 14 & 4 \\ 4 & 26 \end{bmatrix} \]

检查正定性:Hessian矩阵的特征值需全为正。
特征方程:

\[\det(H_0 - \lambda I) = (14-\lambda)(26-\lambda) - 16 = \lambda^2 - 40\lambda + 348 = 0 \]

解得特征值 \(\lambda_1 \approx 12.34, \lambda_2 \approx 28.66\)(均正),故 \(H_0\) 正定,无需修正。但为演示方法,我们仍展示修正步骤。


4. 修正牛顿法迭代步骤(以 \(\mu = 0.1\) 为例)

若Hessian非正定,需添加修正项 \(\mu I\)。此处假设需修正:

\[\tilde{H}_0 = H_0 + 0.1I = \begin{bmatrix} 14.1 & 4 \\ 4 & 26.1 \end{bmatrix} \]

  • 求逆:

\[\tilde{H}_0^{-1} = \frac{1}{14.1 \cdot 26.1 - 4 \cdot 4} \begin{bmatrix} 26.1 & -4 \\ -4 & 14.1 \end{bmatrix} \approx \frac{1}{360.21} \begin{bmatrix} 26.1 & -4 \\ -4 & 14.1 \end{bmatrix} \]

  • 计算搜索方向 \(d^{(0)} = -\tilde{H}_0^{-1} \nabla f(x^{(0)})\)

\[d^{(0)} \approx -\frac{1}{360.21} \begin{bmatrix} 26.1 \cdot 1 + (-4) \cdot 10 \\ -4 \cdot 1 + 14.1 \cdot 10 \end{bmatrix} = -\frac{1}{360.21} \begin{bmatrix} -13.9 \\ 137 \end{bmatrix} \approx \begin{bmatrix} 0.0386 \\ -0.380 \end{bmatrix} \]

  • 更新迭代点(步长 \(\alpha = 1\)):

\[x^{(1)} = x^{(0)} + d^{(0)} \approx [1.0386,\ 0.620]^T \]


5. 第二次迭代

  • 梯度 \(\nabla f(x^{(1)})\)

\[x_1 = 1.0386,\ x_2 = 0.620 \\ \nabla f \approx [4(1.0386)^3 + 2(1.0386)(0.620)^2 - 5,\ 8(0.620)^3 + 2(1.0386)^2(0.620)]^T \approx [0.203,\ 3.823]^T \]

  • Hessian矩阵:

\[H_1 \approx \begin{bmatrix} 12(1.0386)^2 + 2(0.620)^2 & 4(1.0386)(0.620) \\ 4(1.0386)(0.620) & 24(0.620)^2 + 2(1.0386)^2 \end{bmatrix} \approx \begin{bmatrix} 13.50 & 2.57 \\ 2.57 & 9.87 \end{bmatrix} \]

  • 检查正定性:特征值 \(\lambda_1 \approx 8.24, \lambda_2 \approx 15.13\)(正定),无需修正。
  • 直接牛顿方向:

\[d^{(1)} = -H_1^{-1} \nabla f(x^{(1)}) \approx - \begin{bmatrix} 0.077 & -0.020 \\ -0.020 & 0.105 \end{bmatrix} \begin{bmatrix} 0.203 \\ 3.823 \end{bmatrix} \approx \begin{bmatrix} 0.027 \\ -0.394 \end{bmatrix} \]

  • 更新点:

\[x^{(2)} \approx [1.0656,\ 0.226]^T \]


6. 收敛判断

重复迭代直到梯度范数 \(\|\nabla f(x^{(k)})\| < \epsilon\)(例如 \(\epsilon = 10^{-3}\))。

  • 修正牛顿法保证每次搜索方向为下降方向,且收敛到局部极小点。
  • 本例中,经过数次迭代后梯度趋近于零,最优解约在 \(x^* \approx [1.08, 0]^T\) 附近。

关键区别总结

  • 标准牛顿法:直接使用Hessian矩阵,若非正定可能失败。
  • 修正牛顿法:通过 \(H_k + \mu I\) 强制正定,鲁棒性更强,但需选择参数 \(\mu\)
非线性规划中的修正牛顿法基础题 题目描述 考虑非线性规划问题: 最小化 \( f(x) = x_ 1^4 + 2x_ 2^4 + x_ 1^2 x_ 2^2 - 5x_ 1 \) 初始点 \( x^{(0)} = [ 1, 1]^T \),使用 修正牛顿法 求解该问题。要求说明修正牛顿法与标准牛顿法的区别,并详细展示迭代过程。 解题过程 1. 修正牛顿法的核心思想 标准牛顿法直接使用目标函数的Hessian矩阵(二阶导数矩阵)的逆来更新迭代点: \[ x^{(k+1)} = x^{(k)} - [ \nabla^2 f(x^{(k)}) ]^{-1} \nabla f(x^{(k)}) \] 但若Hessian矩阵非正定,搜索方向可能不是下降方向,导致算法失效。修正牛顿法通过 强制Hessian矩阵正定 来解决此问题,常用方法是: 对Hessian矩阵 \( H_ k \) 进行修正 \( H_ k + \mu I \)(\( \mu > 0 \)),使 \( H_ k + \mu I \) 正定。 修正后的迭代公式: \[ x^{(k+1)} = x^{(k)} - [ H_ k + \mu I ]^{-1} \nabla f(x^{(k)}) \] 2. 计算梯度与Hessian矩阵 给定 \( f(x) = x_ 1^4 + 2x_ 2^4 + x_ 1^2 x_ 2^2 - 5x_ 1 \): 梯度 : \[ \nabla f(x) = \begin{bmatrix} 4x_ 1^3 + 2x_ 1 x_ 2^2 - 5 \\ 8x_ 2^3 + 2x_ 1^2 x_ 2 \end{bmatrix} \] Hessian矩阵 : \[ \nabla^2 f(x) = \begin{bmatrix} 12x_ 1^2 + 2x_ 2^2 & 4x_ 1 x_ 2 \\ 4x_ 1 x_ 2 & 24x_ 2^2 + 2x_ 1^2 \end{bmatrix} \] 3. 初始点检查与修正 初始点 \( x^{(0)} = [ 1, 1 ]^T \): 梯度: \[ \nabla f(x^{(0)}) = [ 4 \cdot 1^3 + 2 \cdot 1 \cdot 1^2 - 5,\ 8 \cdot 1^3 + 2 \cdot 1^2 \cdot 1]^T = [ 1,\ 10 ]^T \] Hessian矩阵: \[ H_ 0 = \begin{bmatrix} 12 \cdot 1^2 + 2 \cdot 1^2 & 4 \cdot 1 \cdot 1 \\ 4 \cdot 1 \cdot 1 & 24 \cdot 1^2 + 2 \cdot 1^2 \end{bmatrix} = \begin{bmatrix} 14 & 4 \\ 4 & 26 \end{bmatrix} \] 检查正定性:Hessian矩阵的特征值需全为正。 特征方程: \[ \det(H_ 0 - \lambda I) = (14-\lambda)(26-\lambda) - 16 = \lambda^2 - 40\lambda + 348 = 0 \] 解得特征值 \( \lambda_ 1 \approx 12.34, \lambda_ 2 \approx 28.66 \)(均正),故 \( H_ 0 \) 正定,无需修正。但为演示方法,我们仍展示修正步骤。 4. 修正牛顿法迭代步骤(以 \( \mu = 0.1 \) 为例) 若Hessian非正定,需添加修正项 \( \mu I \)。此处假设需修正: \[ \tilde{H}_ 0 = H_ 0 + 0.1I = \begin{bmatrix} 14.1 & 4 \\ 4 & 26.1 \end{bmatrix} \] 求逆: \[ \tilde{H}_ 0^{-1} = \frac{1}{14.1 \cdot 26.1 - 4 \cdot 4} \begin{bmatrix} 26.1 & -4 \\ -4 & 14.1 \end{bmatrix} \approx \frac{1}{360.21} \begin{bmatrix} 26.1 & -4 \\ -4 & 14.1 \end{bmatrix} \] 计算搜索方向 \( d^{(0)} = -\tilde{H}_ 0^{-1} \nabla f(x^{(0)}) \): \[ d^{(0)} \approx -\frac{1}{360.21} \begin{bmatrix} 26.1 \cdot 1 + (-4) \cdot 10 \\ -4 \cdot 1 + 14.1 \cdot 10 \end{bmatrix} = -\frac{1}{360.21} \begin{bmatrix} -13.9 \\ 137 \end{bmatrix} \approx \begin{bmatrix} 0.0386 \\ -0.380 \end{bmatrix} \] 更新迭代点(步长 \( \alpha = 1 \)): \[ x^{(1)} = x^{(0)} + d^{(0)} \approx [ 1.0386,\ 0.620 ]^T \] 5. 第二次迭代 梯度 \( \nabla f(x^{(1)}) \): \[ x_ 1 = 1.0386,\ x_ 2 = 0.620 \\ \nabla f \approx [ 4(1.0386)^3 + 2(1.0386)(0.620)^2 - 5,\ 8(0.620)^3 + 2(1.0386)^2(0.620)]^T \approx [ 0.203,\ 3.823 ]^T \] Hessian矩阵: \[ H_ 1 \approx \begin{bmatrix} 12(1.0386)^2 + 2(0.620)^2 & 4(1.0386)(0.620) \\ 4(1.0386)(0.620) & 24(0.620)^2 + 2(1.0386)^2 \end{bmatrix} \approx \begin{bmatrix} 13.50 & 2.57 \\ 2.57 & 9.87 \end{bmatrix} \] 检查正定性:特征值 \( \lambda_ 1 \approx 8.24, \lambda_ 2 \approx 15.13 \)(正定),无需修正。 直接牛顿方向: \[ d^{(1)} = -H_ 1^{-1} \nabla f(x^{(1)}) \approx - \begin{bmatrix} 0.077 & -0.020 \\ -0.020 & 0.105 \end{bmatrix} \begin{bmatrix} 0.203 \\ 3.823 \end{bmatrix} \approx \begin{bmatrix} 0.027 \\ -0.394 \end{bmatrix} \] 更新点: \[ x^{(2)} \approx [ 1.0656,\ 0.226 ]^T \] 6. 收敛判断 重复迭代直到梯度范数 \( \|\nabla f(x^{(k)})\| < \epsilon \)(例如 \( \epsilon = 10^{-3} \))。 修正牛顿法保证每次搜索方向为下降方向,且收敛到局部极小点。 本例中,经过数次迭代后梯度趋近于零,最优解约在 \( x^* \approx [ 1.08, 0 ]^T \) 附近。 关键区别总结 标准牛顿法:直接使用Hessian矩阵,若非正定可能失败。 修正牛顿法:通过 \( H_ k + \mu I \) 强制正定,鲁棒性更强,但需选择参数 \( \mu \)。