# 牛顿方程与一维多维推导例题

[[MCS/day6/00 学习指南|day6 学习指南]] · [[MCS/00 MCS学习总览|十一天总览]] · [[MCS/day6/阅读核验与疑问|阅读核验与疑问]] · 上一篇：[[MCS/day6/17 求导、泰勒与牛顿法例题|求导、泰勒与牛顿法例题]]

> 来源：[[MCS/day6例题2|day6例题2]]。用途：例题。原有推导、追问与解答保留；阅读时请结合本日核验说明。

## 优化牛顿法总结

### 1. 优化牛顿法来自对梯度的求根

我们要最小化目标函数 \(f(x)\)，一阶必要条件是最优解处梯度为 0：

$$
\nabla f(x)=0
$$

记梯度为

$$
g=\nabla f(x)
$$

海森矩阵为

$$
H=\nabla^2 f(x)
$$

对梯度方程 \(g=0\) 用牛顿法求根，在当前点做一阶近似：

$$
g(x+d)\approx g(x)+Hd
$$

令它等于 0：

$$
g+Hd=0
$$

也就是

$$
\boxed{Hd=-g}
$$

这个式子就是牛顿法的“切线方程”在优化里的形式。  
所以“切线方程就是 \(Hd=-g\)”这个说法方向是对的：它来自对梯度函数的一阶泰勒展开，令其为零。

---

### 2. 解出来 \(d\) 是什么

从

$$
Hd=-g
$$

解出

$$
\boxed{d=-H^{-1}g}
$$

这个 \(d\) 就是**牛顿步长向量**，也叫**牛顿方向**。

然后更新：

$$
\boxed{x\leftarrow x+d}
$$

---

### 3. 一维时退化为什么

一维时：

$$
g=f'(x)
$$

$$
H=f''(x)
$$

方程

$$
Hd=-g
$$

变成

$$
f''(x)d=-f'(x)
$$

所以

$$
d=-\frac{f'(x)}{f''(x)}
$$

更新：

$$
x\leftarrow x-\frac{f'(x)}{f''(x)}
$$

这正是：

$$
\boxed{\text{一维时退化为 }-\frac{f'}{f''}}
$$

---

### 4. 计算机里为什么用解方程，而不是先求 \(H^{-1}\) 再乘

在计算机里，这一步用的是**解方程**，而不是先把 \(H\) 的逆显式乘上去。

因为

$$
Hd=-g
$$

是一个线性方程组。计算机通常直接解这个方程组，比如用：

- LU 分解；
- Cholesky 分解，当 \(H\) 正定时；
- 共轭梯度法，当 \(H\) 很大且稀疏时。

而不是先算

$$
H^{-1}
$$

再算

$$
d=-H^{-1}g
$$

原因和前面第 48 题一样：

- 求逆计算量更大；
- 求逆再乘误差更大；
- 很多情况下不需要显式逆矩阵；
- \(H\) 接近奇异时求逆更危险；
- 稀疏矩阵求逆会变成稠密矩阵。

所以数值上更优先：

$$
\boxed{\text{解 }Hd=-g,\text{ 而不是显式求 }H^{-1}}
$$

---

### 5. 关于“\(H\) 正定的时候沿着它走完整的一步，可以朝着极小点前进”

当 \(H\) 正定时，牛顿方向

$$
d=-H^{-1}g
$$

是下降方向，因为

$$
g^Td=-g^TH^{-1}g<0
$$

所以沿着 \(d\) 走，函数值会下降。

如果目标函数本身就是二次函数，并且 \(H\) 正定，那么牛顿法走**完整一步**就能直接到达极小点。  
因为二次函数的二阶泰勒展开就是它本身，没有高阶误差。

但如果目标函数不是二次函数，走完整一步不一定直接到极小点，只是通常能很快接近。  
所以实际算法里常常还会加**线搜索**或**信赖域**，来保证每步都下降、稳定。

所以更准确的说法是：

$$
\boxed{\text{若 }H\text{ 正定，牛顿方向是下降方向；对二次函数，走完整一步可到极小点。}}
$$

对一般函数，走完整一步通常只是“朝着极小点前进”，不一定一步到位。

---

### 6. 课堂话术总结

> 优化牛顿法来自对梯度求根。记梯度为 \(g\)，海森矩阵为 \(H\)，对梯度做一阶泰勒展开并令其为零，得到切线方程  
> $$
> Hd=-g
> $$
> 解出  
> $$
> d=-H^{-1}g
> $$
> 这个 \(d\) 就是牛顿步长向量，然后更新 \(x\leftarrow x+d\)。  
> 一维时，它退化成  
> $$
> d=-\frac{f'}{f''}
> $$
> 在计算机里，我们通常直接解方程 \(Hd=-g\)，而不是先显式求 \(H^{-1}\) 再乘，因为求逆更慢、误差更大、也更不稳定。  
> 当 \(H\) 正定时，牛顿方向是下降方向；如果函数是二次函数，走完整一步就能到极小点。对一般函数，则是朝着极小点快速前进。

---

### 7. 本题第 (1) 问：牛顿法求根一步

题目：

$$
f(x)=x^2-3
$$

起点

$$
x_0=3
$$

牛顿法求根公式：

$$
x_{k+1}=x_k-\frac{f(x_k)}{f'(x_k)}
$$

这里

$$
f'(x)=2x
$$

先算：

$$
f(3)=3^2-3=9-3=6
$$

$$
f'(3)=2\times 3=6
$$

代入：

$$
x_1=3-\frac{6}{6}=3-1=2
$$

所以做一步后得到：

$$
\boxed{x_1=2}
$$

---

### 8. 本题第 (2) 问：优化里 \(Hd=-g\) 的解释

在优化问题中，通常要最小化目标函数 \(f(x)\)。

旁边写：

$$
Hd=-g
$$

再令

$$
x\leftarrow x+d
$$

这是很多优化算法的核心步骤。

#### \(g\) 是什么？

\(g\) 是**梯度向量**：

$$
g=\nabla f(x)
$$

它表示目标函数在当前点 \(x\) 处增长最快的方向。  
也就是说，\(g\) 指向函数上升最快的方向。

#### \(H\) 是什么？

\(H\) 是**海森矩阵**，即二阶偏导数矩阵：

$$
H=\nabla^2 f(x)
$$

元素为：

$$
H_{ij}=\frac{\partial^2 f}{\partial x_i\partial x_j}
$$

海森矩阵描述函数的曲率信息，也就是函数在各个方向上的弯曲程度。

#### \(d\) 是什么方向？

方程

$$
Hd=-g
$$

解出来的 \(d\) 是**牛顿方向**，也叫**牛顿搜索方向**。

因为

$$
d=-H^{-1}g
$$

所以：

$$
\boxed{d=-H^{-1}g}
$$

它综合考虑了梯度方向和曲率信息。

---

### 最终答案

(1)

$$
\boxed{x_1=2}
$$

(2)

- \(g=\nabla f(x)\)：梯度，指向函数上升最快的方向；
- \(H=\nabla^2 f(x)\)：海森矩阵，描述函数曲率；
- 方程 \(Hd=-g\) 的解：

$$
\boxed{d=-H^{-1}g}
$$

\(d\) 是**牛顿方向**，用于更新：

$$
\boxed{x\leftarrow x+d}
$$

它综合考虑梯度与曲率，通常比单纯梯度下降更快。

## 从一维牛顿优化法到多维牛顿优化法

牛顿优化法的核心思路是：**对梯度函数做一阶泰勒展开，让近似梯度等于零，从而求出更新步。**

一维形式为：

$$
x_{k+1}=x_k-\frac{f'(x_k)}{f''(x_k)}
$$

多维形式为：

$$
H_kd_k=-g_k,\qquad x_{k+1}=x_k+d_k
$$

其中：

$$
g_k=\nabla f(x_k),\qquad H_k=\nabla^2 f(x_k)
$$

### 1. 从优化问题转向梯度方程

考虑无约束优化问题：

$$
\min_x f(x)
$$

假设 $f$ 二阶连续可微。如果 $x^*$ 是定义域内部的局部极小点，那么它满足一阶必要条件：

$$
\nabla f(x^*)=0
$$

因此，可以通过求解梯度方程，寻找极小点的候选点：

$$
g(x)=\nabla f(x)=0
$$

> 梯度为零一般只是极小点的必要条件，并不是充分条件。梯度为零的点也可能是极大点或鞍点，所以最小化 $f(x)$ 一般不能直接说成“等价于求解 $\nabla f(x)=0$”。

### 2. 课本的泰勒展开为什么变了样？

课本中常见的一阶泰勒展开是：

$$
f(x)\approx f(x_0)+f'(x_0)(x-x_0)
$$

其中：

- $x_0$ 是展开点。
- $x$ 是准备估计函数值的位置。
- $x-x_0$ 是新位置相对于展开点的增量。

在牛顿法中：

- 展开点是当前位置 $x_k$。
- 准备估计的位置是 $x_k+d_k$。
- $d_k$ 是这一次迭代的更新步，即位置的变化量。

因此，将课本公式中的 $x_0$ 换成 $x_k$，将 $x$ 换成 $x_k+d_k$，先不省略任何一步：

$$
f(x_k+d_k)
\approx
f(x_k)+f'(x_k)
\underbrace{\big[(x_k+d_k)-x_k\big]}_{\text{新位置减去展开点}}
$$

因为：

$$
(x_k+d_k)-x_k=d_k
$$

所以：

$$
\boxed{
f(x_k+d_k)\approx f(x_k)+f'(x_k)d_k
}
$$

**这里并没有省略“减去展开点”，而是已经把这个减法算完了。**

课本中的另一种写法：

$$
f(x_0+d)\approx f(x_0)+f'(x_0)d
$$

也完成了同样的化简。牛顿法使用 $x_k$ 和 $d_k$，只是注明这是第 $k$ 次迭代的当前位置和更新步。

如果使用下一次的位置 $x_{k+1}$，还可以写成：

$$
f(x_{k+1})
\approx
f(x_k)+f'(x_k)(x_{k+1}-x_k)
$$

根据定义：

$$
d_k=x_{k+1}-x_k
$$

所以：

$$
x_{k+1}=x_k+d_k
$$

后面的增量项自然就变成了 $f'(x_k)d_k$。

### 3. 一维牛顿优化法的推导

一维时，要寻找满足以下条件的点：

$$
f'(x)=0
$$

令：

$$
g(x)=f'(x)
$$

于是，要解的方程是：

$$
g(x)=0
$$

在当前点 $x_k$ 附近，对 $g$ 做一阶泰勒展开。按照课本形式完整写出：

$$
g(x_k+d_k)
\approx
g(x_k)+g'(x_k)\big[(x_k+d_k)-x_k\big]
$$

化简得到：

$$
g(x_k+d_k)\approx g(x_k)+g'(x_k)d_k
$$

令右侧的线性近似等于零：

$$
g(x_k)+g'(x_k)d_k=0
$$

当 $g'(x_k)\neq 0$ 时：

$$
d_k=-\frac{g(x_k)}{g'(x_k)}
$$

由于：

$$
g(x_k)=f'(x_k),\qquad g'(x_k)=f''(x_k)
$$

所以：

$$
\boxed{
d_k=-\frac{f'(x_k)}{f''(x_k)}
}
$$

再根据更新公式：

$$
x_{k+1}=x_k+d_k
$$

得到：

$$
\boxed{
x_{k+1}=x_k-\frac{f'(x_k)}{f''(x_k)}
}
$$

这就是一维牛顿优化法。

> 令零的是梯度的线性近似，并不保证真实梯度 $g(x_k+d_k)$ 一步就等于零，因此通常需要反复迭代。

### 4. 为什么是一阶展开，却出现了二阶导数？

**展开的阶数，要看对哪个函数展开，以及保留到增量 $d_k$ 的几次项。**

这里展开的是梯度函数：

$$
g(x)=f'(x)
$$

它的一阶展开为：

$$
g(x_k+d_k)\approx g(x_k)+g'(x_k)d_k
$$

右侧只保留了关于 $d_k$ 的常数项和一次项，因此是对 $g$ 的一阶展开。

将 $g=f'$ 代入：

$$
\boxed{
f'(x_k+d_k)\approx f'(x_k)+f''(x_k)d_k
}
$$

虽然出现了原函数的二阶导数 $f''$，但它只是被展开函数 $g$ 的一阶导数：

$$
g'(x)=f''(x)
$$

两种展开可以对照理解：

| 被展开的函数 | 一阶泰勒展开 |
|---|---|
| 原函数 $f$ | $f(x_k+d_k)\approx f(x_k)+f'(x_k)d_k$ |
| 导函数 $f'$ | $f'(x_k+d_k)\approx f'(x_k)+f''(x_k)d_k$ |

所以，以下两种说法并不矛盾：

- 牛顿优化法对梯度函数做一阶展开。
- 牛顿优化法使用原函数的二阶导数信息。

### 5. 推广到多维

多维时，变量是向量：

$$
x=
\begin{pmatrix}
x_1\\
x_2\\
\vdots\\
x_n
\end{pmatrix}
\in\mathbb{R}^n
$$

梯度函数为：

$$
g(x)=\nabla f(x)=
\begin{pmatrix}
\frac{\partial f}{\partial x_1}\\
\frac{\partial f}{\partial x_2}\\
\vdots\\
\frac{\partial f}{\partial x_n}
\end{pmatrix}
$$

梯度函数的雅可比矩阵，就是原函数的海森矩阵：

$$
J_g(x)=H(x)=\nabla^2 f(x)
$$

其中：

$$
H(x)=
\begin{pmatrix}
\frac{\partial^2 f}{\partial x_1^2}
&
\cdots
&
\frac{\partial^2 f}{\partial x_1\partial x_n}
\\
\vdots & \ddots & \vdots
\\
\frac{\partial^2 f}{\partial x_n\partial x_1}
&
\cdots
&
\frac{\partial^2 f}{\partial x_n^2}
\end{pmatrix}
$$

在当前点 $x_k$，记：

$$
g_k=\nabla f(x_k),\qquad H_k=\nabla^2 f(x_k)
$$

对梯度函数做一阶泰勒展开：

$$
g(x_k+d_k)\approx g_k+H_kd_k
$$

这里与一维相同：新位置减去展开点，仍然是更新步 $d_k$；区别在于，现在 $d_k$ 是向量，导数对应的线性作用由矩阵乘法 $H_kd_k$ 表示。

令近似梯度等于零：

$$
g_k+H_kd_k=0
$$

得到多维牛顿方程：

$$
\boxed{
H_kd_k=-g_k
}
$$

当 $H_k$ 可逆时，可以形式化地写成：

$$
d_k=-H_k^{-1}g_k
$$

然后更新：

$$
\boxed{
x_{k+1}=x_k+d_k
}
$$

> 实际计算时，通常直接求解线性方程组 $H_kd_k=-g_k$，而不是显式计算逆矩阵。

### 6. 一维与多维的对应关系

| 概念 | 一维 | 多维 |
|---|---|---|
| 变量 | 标量 $x$ | 向量 $x\in\mathbb{R}^n$ |
| 梯度 | $g=f'(x)$ | $g=\nabla f(x)$ |
| 海森矩阵 | $H=f''(x)$，可视为 $1\times1$ 矩阵 | $H=\nabla^2 f(x)$ |
| 梯度的线性近似 | $f'(x)+f''(x)d$ | $g+Hd$ |
| 牛顿方程 | $f''(x)d=-f'(x)$ | $Hd=-g$ |
| 牛顿步 | $d=-f'(x)/f''(x)$ | $d=-H^{-1}g$，假设 $H$ 可逆 |
| 更新方式 | $x\leftarrow x+d$ | $x\leftarrow x+d$ |

一维时写：

$$
g=f'(x),\qquad H=f''(x)
$$

意思是：多维中的梯度向量和海森矩阵，在只有一个变量时，分别退化为一阶导数和二阶导数。

此时：

$$
Hd=-g
$$

就变成：

$$
f''(x)d=-f'(x)
$$

从而：

$$
d=-\frac{f'(x)}{f''(x)}
$$

所以，从一维到多维，就是将：

- 一阶导数换成梯度向量。
- 二阶导数换成海森矩阵。
- 标量除法换成求解线性方程组。

### 7. 从原函数的二阶模型理解牛顿法

也可以直接对原函数建立二阶模型：

$$
f(x_k+d)\approx
q_k(d)
=
f(x_k)+g_k^Td+\frac12 d^TH_kd
$$

对这个二次模型关于 $d$ 求梯度：

$$
\nabla_d q_k(d)=g_k+H_kd
$$

令其为零：

$$
g_k+H_kd_k=0
$$

仍然得到：

$$
H_kd_k=-g_k
$$

因此：

> 对梯度函数做一阶近似，与对原函数建立二阶模型并求其驻点，会得到相同的牛顿方程。

如果 $H_k$ 正定，$d_k$ 是这个二次模型的唯一最小点；当 $g_k\neq0$ 时，$d_k$ 也是原函数的下降方向。

如果 $H_k$ 不正定，牛顿步就不一定是下降方向，也不一定指向极小点。

即使 $H_k$ 正定，直接采用完整牛顿步也不保证每次都降低原函数值。因此，实际优化中常结合线搜索，使用：

$$
x_{k+1}=x_k+\alpha_kd_k,\qquad \alpha_k>0
$$

其中，$d_k$ 是牛顿步，$\alpha_k$ 是步长因子；$\alpha_k=1$ 对应完整牛顿步。
