牛顿法求多元函数的极值
牛顿法是一种用于寻找多元函数极值的有效优化方法。它通过利用二阶泰勒展开来迭代逼近函数的极值点。以下是使用牛顿法求多元函数极值的步骤及示例。### 步骤
1. **定义目标函数**:
设目标函数为 \( f: \mathbb{R}^n \rightarrow \mathbb{R} \),其梯度和哈essian矩阵定义为:
- 梯度:\(\nabla f(x)\) 是一个 \(n\) 维列向量,表示函数 \(f\) 在点 \(x\) 的一阶偏导数。
- 哈essian矩阵:\(H(x)\) 是一个 \(n \times n\) 的对称矩阵,表示函数 \(f\) 在点 \(x\) 的二阶偏导数。
2. **初始化**:
选择一个初始点 \(x_0\)。
3. **迭代过程**:
对于每一步 \(k\):
- 计算当前位置的梯度和哈essian矩阵:
\[
g_k = \nabla f(x_k), \quad H_k = H(x_k)
\]
- 解线性方程以更新位置:
\[
d_k = -H_k^{-1} g_k
\]
- 更新位置:
\[
x_{k+1} = x_k + \alpha_k d_k
\]
其中 \(\alpha_k\) 是步长,可以使用线搜索方法来确定。
4. **收敛判定**:
- 检查梯度的模长是否足够小(例如 \(\|g_k\| < \epsilon\),其中 \(\epsilon\) 是预设的阈值),或者检查相邻两个点之间的距离。
5. **结束**:
- 当满足收敛条件时,结束迭代,返回当前点 \(x_k\) 作为极值点。
### 示例
考虑函数 \( f(x, y) = x^2 + y^2 - 4x - 6y \)。
#### 1. 计算梯度和哈essian矩阵
- 梯度:
\[
\nabla f(x, y) = \begin{bmatrix}
\frac{\partial f}{\partial x} \\
\frac{\partial f}{\partial y}
\end{bmatrix} = \begin{bmatrix}
2x - 4 \\
2y - 6
\end{bmatrix}
\]
- 哈essian矩阵:
\[
H(x, y) = \begin{bmatrix}
\frac{\partial^2 f}{\partial x^2} & \frac{\partial^2 f}{\partial x \partial y} \\
\frac{\partial^2 f}{\partial y \partial x} & \frac{\partial^2 f}{\partial y^2}
\end{bmatrix} = \begin{bmatrix}
2 & 0 \\
0 & 2
\end{bmatrix}
\]
#### 2. 初始化
选择初始点 \( x_0 = (0, 0) \)。
#### 3. 迭代过程
- 计算梯度:
\[
g_0 = \nabla f(0, 0) = \begin{bmatrix}
-4 \\
-6
\end{bmatrix}
\]
- 计算哈essian矩阵(在初始点不变):
\[
H_0 = \begin{bmatrix}
2 & 0 \\
0 & 2
\end{bmatrix}
\]
- 计算搜索方向:
\[
d_0 = -H_0^{-1} g_0 = -\begin{bmatrix}
0.5 & 0 \\
0 & 0.5
\end{bmatrix} \begin{bmatrix}
-4 \\
-6
\end{bmatrix} = \begin{bmatrix}
2 \\
3
\end{bmatrix}
\]
- 更新位置:
\[
x_1 = x_0 + d_0 = \begin{bmatrix}
0 \\
0
\end{bmatrix} + \begin{bmatrix}
2 \\
3
\end{bmatrix} = \begin{bmatrix}
2 \\
3
\end{bmatrix}
\]
- 重复上述步骤直到收敛。
#### 4. 收敛判定
在后续的迭代中继续计算梯度和哈essian并更新,直至梯度的模长小于某一阈值。
### 总结
牛顿法通过利用梯度和哈essian矩阵提供了快速的收敛性,尤其在接近最优点时表现优越。然而,它对初始值的选择和哈essian的可逆性有一定要求。在问题规模较大或哈essian不可逆时,可能需要使用拟牛顿法或其他优化技术。
页:
[1]