# 牛顿求根、初值与失效案例

[[MCS/day6/00 学习指南|day6 学习指南]] · [[MCS/00 MCS学习总览|十一天总览]] · [[MCS/day6/阅读核验与疑问|阅读核验与疑问]] · 上一篇：[[MCS/day6/13 Hessian 与牛顿方程的求解|Hessian 与牛顿方程的求解]] · 下一篇：[[MCS/day6/15 牛顿法二阶收敛的误差推导|牛顿法二阶收敛的误差推导]]

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

## 牛顿迭代法、求根与收敛性整理

### 1. 牛顿迭代法是什么

牛顿迭代法（Newton-Raphson method）用于求解方程：

$$
f(x)=0
$$

的近似根。

---

### 2. 第一行：线性近似（切线近似）

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

这是函数 $f(x)$ 在点 $x_n$ 处的 **一阶泰勒展开**，也叫线性化。

几何意义：

- 用曲线 $y=f(x)$ 在点 $(x_n, f(x_n))$ 处的切线来近似曲线；
- 切线斜率是 $f'(x_n)$；
- 切线方程为：

$$
y = f(x_n) + f'(x_n)(x-x_n)
$$

---

### 3. 第二行：牛顿迭代公式

$$
x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}
$$

推导过程：

令切线等于 0，即找切线与 $x$ 轴的交点：

$$
f(x_n) + f'(x_n)(x-x_n)=0
$$

解出 $x$：

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

把这个新的 $x$ 记为 $x_{n+1}$，得到：

$$
x_{n+1} = x_n - \frac{f(x_n)}{f'(x_n)}
$$

---

### 4. 几何意义

1. 在 $x_n$ 处作切线；
2. 切线与 $x$ 轴的交点横坐标就是 $x_{n+1}$；
3. 用 $x_{n+1}$ 代替 $x_n$，重复这个过程；
4. 迭代序列 $x_0, x_1, x_2, \dots$ 会逐渐逼近方程 $f(x)=0$ 的根。

一句话：

> 在 $x_n$ 处画切线，切线与 $x$ 轴的交点是 $x_{n+1}$；不断重复，就得到牛顿迭代法。

---

### 5. 和泰勒公式的联系

第一行正是 $f(x)$ 在 $x_n$ 处展开到一阶：

$$
f(x) = f(x_n) + f'(x_n)(x-x_n) + \underbrace{\frac{f''(\xi)}{2!}(x-x_n)^2}_{\text{余项，被忽略}}
$$

忽略余项后，令近似式为 0，就得到牛顿迭代公式。

所以牛顿法本质上是：

> 用泰勒一阶展开来逼近方程的根。

---

### 6. 注意事项

- 要求 $f'(x_n) \neq 0$，否则公式失效；
- 初值 $x_0$ 要选得离根足够近，否则可能不收敛；
- 收敛速度通常是二阶的，即误差平方级减小，非常快。

---

## 求根有什么用

求根，也就是解方程：

$$
f(x)=0
$$

在数学和实际应用中非常核心。因为几乎所有“已知结果，反推条件”的问题，最终都会变成求根问题。

---

### 1. 数学本身：解方程就是求根

很多方程没有解析解，例如：

$$
x=\cos x,\quad e^x=x+2,\quad x^3-x-1=0
$$

这些方程写不出 $x=\dots$ 的显式表达式，只能靠数值方法求近似根。

牛顿迭代法就是最常用的方法之一。

---

### 2. 工程与物理：解非线性方程

物理、力学、电路、热传导等领域的方程往往是非线性的，例如：

- 电路中的非线性元件方程；
- 结构力学中的平衡方程；
- 流体力学中的隐式方程。

这些方程通常写成：

$$
f(x)=0
$$

然后用牛顿法求解。

---

### 3. 优化问题：找极值点

求函数 $g(x)$ 的极值，需要解：

$$
g'(x)=0
$$

这本身就是一个求根问题。

所以以下问题都会用到求根：

- 求最大值、最小值；
- 最小二乘拟合；
- 机器学习中的损失函数优化。

---

### 4. 计算机图形学与游戏

- 光线与曲面求交；
- 碰撞检测；
- 隐式曲面求点。

这些都需要解方程：

$$
f(x)=0
$$

---

### 5. 金融与经济

- 求内部收益率 IRR：解 $NPV(r)=0$；
- 求期权定价中的隐含波动率；
- 求均衡价格。

都是求根问题。

---

### 6. 为什么用牛顿法而不是直接解？

因为很多方程：

- 没有求根公式，五次及以上多项式一般无根式解；
- 是超越方程，含指数、对数、三角函数；
- 是高维非线性方程组。

只能迭代逼近。

牛顿法收敛快，二阶收敛，所以特别常用。

---

### 7. 一句话总结

> 求根 = 已知结果，反推条件。

凡是“让某个量等于零 / 等于目标值”的问题，几乎都能转化为求根问题，而牛顿法就是求解这类问题最有力的工具之一。

---

## 用牛顿迭代法求 $\sqrt{2}$

用牛顿迭代法求 $\sqrt{2}$，本质上就是解方程：

$$
x^2-2=0
$$

也就是求：

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

的根。

---

### 1. 牛顿迭代公式

对：

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

有：

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

代入牛顿迭代公式：

$$
x_{n+1}=x_n-\frac{f(x_n)}{f'(x_n)}
$$

得到：

$$
x_{n+1}=x_n-\frac{x_n^2-2}{2x_n}
$$

化简：

$$
x_{n+1}=\frac{1}{2}\left(x_n+\frac{2}{x_n}\right)
$$

这就是求 $\sqrt{2}$ 的牛顿迭代公式。

---

### 2. 为什么收敛这么快？

因为牛顿法是二阶收敛的：

> 每次迭代后，误差大约会平方级减小。

例如误差从：

$$
10^{-3}\to 10^{-6}\to 10^{-12}
$$

所以求 $\sqrt{2}$ 用牛顿法非常高效。

---

### 3. 通用公式

求 $\sqrt{a}$ 时，解：

$$
x^2-a=0
$$

牛顿迭代公式为：

$$
x_{n+1}=\frac{1}{2}\left(x_n+\frac{a}{x_n}\right)
$$

这个公式也叫 **巴比伦法** 或 **海伦法**，是非常古老的求平方根方法。

---

## 初值的选取

### 1. 为什么要选初值

牛顿法对初值有要求：

- 初值要离根足够近；
- 导数不能为零；
- 函数在附近要足够光滑。

只要满足这些，取什么初值都行。区别只是迭代次数多少。

初值越接近根，收敛越快。

---

### 2. 取 $x_0=1$ 的原因

取 $x_0=1$ 不是随便乱取的，主要有几个原因：

1. $\sqrt{2}$ 就在 1 附近；
2. 计算最简单；
3. 保证 $f'(x_0)\neq 0$；
4. 保证收敛；
5. 几何直观。

一句话：

> 取 $x_0=1$，是因为它离 $\sqrt{2}$ 近、计算简单、导数不为零，并且能保证牛顿法快速收敛。

---

### 3. 取 $x_0=1.5$ 呢？

取 $x_0=1.5$ 当然也可以，而且完全可行，甚至比 $x_0=1$ 更接近真正的根。

因为：

$$
1.4<\sqrt{2}<1.5
$$

取 $x_0=1.5$ 完全满足牛顿法对初值的要求：

- 离根足够近；
- $f'(1.5)=3\neq 0$；
- 函数在附近光滑。

结论：

> $x_0=1.5$ 比 $x_0=1$ 更接近 $\sqrt{2}$，所以收敛更快；两者都是合法初值，只是 1 更方便手算演示。

---

### 4. 取 $x_0=1.4$ 呢？

取初值：

$$
x_0=1.4=\frac{7}{5}
$$

因为：

$$
1.4^2=1.96
$$

和 2 的差距只有：

$$
2-1.96=0.04
$$

而：

$$
1.5^2=2.25
$$

和 2 的差距是：

$$
2.25-2=0.25
$$

初值越接近根，牛顿法收敛越快。

所以 $1.4$ 比 $1.5$ 和 $1$ 都更好。

---

## 牛顿法的二阶收敛与发散条件

这段话是在讲牛顿法的收敛条件，以及为什么初值选得不好会发散。

---

### 一、牛顿法在根附近是二阶收敛

设真实根是 $x^*$，第 $n$ 次迭代的误差是：

$$
e_n=x_n-x^*
$$

牛顿法的误差满足：

$$
e_{n+1}\approx \frac{f''(x^*)}{2f'(x^*)}e_n^2
$$

也就是说：

$$
|e_{n+1}|\le C|e_n|^2
$$

这就是二阶收敛：误差平方级下降。

举例：

假设 $C=1$，误差变化如下：

| 迭代次数 | 误差 |
|---|---|
| 0 | $10^{-1}$ |
| 1 | $10^{-2}$ |
| 2 | $10^{-4}$ |
| 3 | $10^{-8}$ |
| 4 | $10^{-16}$ |

误差每次大约平方，所以有效数字大约翻倍，非常快。

对比梯度下降，一阶收敛：

$$
|e_{n+1}|\le C|e_n|
$$

误差每次只乘一个常数，比如 0.5，那要很多步才能达到同样精度。

所以牛顿法在根附近比梯度下降快得多。

---

### 二、但前提是

牛顿迭代公式：

$$
x_{n+1}=x_n-\frac{f(x_n)}{f'(x_n)}
$$

这里有两个关键条件：

1. $f'(x_n)\neq 0$

如果 $f'(x_n)=0$，分母为零，公式直接失效。

2. 初值 $x_0$ 要足够接近根 $x^*$

只有足够近，才能保证二阶收敛。

如果初值太远，可能：

- 迭代不收敛；
- 跳到别的根；
- 来回震荡；
- 直接发散。

---

### 三、为什么初值不好会发散？

因为牛顿法是用切线去逼近根：

$$
x_{n+1}=x_n-\frac{f(x_n)}{f'(x_n)}
$$

几何意义是：在 $x_n$ 处作切线，切线与 $x$ 轴的交点作为下一个点。

如果初值离根太远，切线可能：

- 指向离根更远的地方；
- 切线几乎水平，导致 $x_{n+1}$ 跑到很远；
- 切线斜率很小，除以一个很小的数，结果爆炸。

---

### 四、老师的话是什么意思？

老师说：

> 牛顿法在根附近啊，我们讲什么叫二阶收敛……但是如果说你要去求 $f(x_n)$，导数它不等于零啊，且初始点足够足够的近。

意思是：

- 牛顿法的二阶收敛只在根附近成立；
- 前提是 $f'(x_n)\neq 0$；
- 并且初值要足够接近根。

老师说：

> 如果你按这个来，那么你所说的肯定会发散，大概率会发散。

意思是：

- 如果你不满足这些条件，初值太远，或者导数接近零；
- 那牛顿法大概率会发散，而不是收敛。

也就是说：

> 牛顿法不是万能的。  
> 它只在“根附近 + 导数不为零 + 初值足够好”的条件下才保证快速收敛。  
> 条件不满足时，它可能震荡、跳根、甚至发散。

---

### 五、总结成一句话

牛顿法的二阶收敛是有前提的：

$$
\text{初值足够接近根} + f'(x_n)\neq 0
$$

满足时，误差平方级下降，收敛极快；  
不满足时，可能发散。

所以老师的意思是：

> 你不能无条件地说牛顿法一定收敛、一定快。  
> 如果初值不好或导数接近零，它大概率会发散。

---

## $f(x)=x^3-2 x+2$ 这个例子很经典吗？

这个例子算比较经典，但严格说，它不是“最经典”的那个。它在讲牛顿法失效时经常被拿来用，原因很典型。

---

### 一、它经典在哪？

函数：

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

取初值 $x_0=0$ 时，会形成二循环，永远不收敛。

这个例子经典，是因为它非常简洁地展示了：

> 牛顿法即使函数光滑、导数不为零，也可能因为初值选择不好而震荡不收敛。

---

### 二、它为什么会出现二循环？

因为 $x_0=0$ 和 $x_1=1$ 正好互为牛顿迭代的像：

$$
N(0)=1,\quad N(1)=0
$$

其中 $N(x)$ 是牛顿迭代函数：

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

当迭代进入一个周期轨道时，就不会收敛到根。

这个例子还有一个特点：

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

它的判别式小于零，只有一个实根，另外两个是复根。

所以牛顿法如果收敛，应该收敛到那个唯一实根，但它却陷入了循环。

---

### 三、更经典的牛顿法失效例子

1. $f(x)=x^3-2 x+2$，初值 0

就是你提到的这个，经典在二循环。

2. $f(x)=\arctan x$，初值太大

例如取 $x_0=1.5$：

$$
x_{n+1}=x_n-\frac{\arctan x_n}{1/(1+x_n^2)}
$$

会出现剧烈震荡，甚至发散。

这个例子经典在说明：

> 初值离根太远时，牛顿法可能发散。

3. $f(x)=x^2-1$，初值 0

$$
f'(0)=0
$$

直接导致分母为零，牛顿法失效。

这个例子经典在说明：

> 导数等于零时，牛顿法不能用。

4. $f(x)=x^{1/3}$

牛顿法迭代：

$$
x_{n+1}=x_n-\frac{x_n^{1/3}}{(1/3)x_n^{-2/3}}
=x_n-3x_n=-2x_n
$$

所以：

$$
x_n=(-2)^n x_0
$$

会发散。

这个例子经典在说明：

> 即使函数连续，根处导数不存在或无穷大时，牛顿法也可能失效。

5. $f(x)=x^3-x$

初值取 $x_0=1/\sqrt{5}$ 时，会进入二循环。

这个例子也常被用来讲牛顿法的周期轨道。

---

### 四、所以 $f(x)=x^3-2 x+2$ 经典吗？

经典，但属于“中等经典”。

它常被用来讲：

- 牛顿法可能震荡不收敛；
- 初值选择很重要；
- 即使函数光滑、导数不为零，也不保证收敛。

但最常被提到的“牛顿法失效”例子，通常是：

- $f'(x)=0$ 的情况，比如 $f(x)=x^2-1$，初值 0；
- $\arctan x$ 初值过大导致发散；
- $x^{1/3}$ 导致发散。

你提到的这个例子，属于讲二循环时的经典例子，在数值分析教材里确实会出现，但不如上面几个“出名”。

---

### 五、一句话总结

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

是一个经典的牛顿法失效例子，因为它会导致 0 和 1 之间的二循环。

它说明：

> 牛顿法即使导数不为零，初值不好也可能不收敛。

但它不是最经典的，最经典的是导数等于零、$\arctan x$ 发散、$x^{1/3}$ 发散这几类。

## Hessian 矩阵特征值一正一负的意义

在临界点上，如果 Hessian 矩阵（海森矩阵）的特征值一正一负，这体现了该临界点是一个鞍点（Saddle Point）。

具体来说，这代表以下几层数学和几何意义：

### 1. 几何意义：像一个“马鞍”或“山口”

- **正特征值对应的方向**：函数在该方向上向上弯曲（呈现极小值的形状，像 U 型）。
- **负特征值对应的方向**：函数在该方向上向下弯曲（呈现极大值的形状，像倒 U 型）。

两者结合在一起，函数图像在一个方向上是谷，在另一个方向上是峰，整体形状就像马鞍（或者两山之间的山口）。因此，它既不是极大值，也不是极小值。

### 2. 数学判定意义（二阶导数判别法）

在多元函数求极值时，Hessian 矩阵的行列式 $|H|$ 等于所有特征值的乘积。

- 特征值一正一负 $\Rightarrow$ 乘积为负数 $\Rightarrow |H| < 0$。
- 根据二阶导数判别法，如果 $|H| < 0$，该临界点必定是鞍点，而非极值点。

### 3. 直观的动态变化

如果你站在这个点上环顾四周：

- 沿着正特征值对应的方向走，你会发现函数值在上升（你走向了高处）。
- 沿着负特征值对应的方向走，你会发现函数值在下降（你走向了低处）。

这就意味着，在这个点上，你找不到任何一个方向能让你“无论怎么走都往上（极大）”或者“无论怎么走都往下（极小）”。

### 💡 举个最简单的例子

函数：

$$
f(x,y)=x ^2-y^ 2
$$

在点 $(0,0)$ 处，它是临界点（一阶偏导都为 0）。

它的 Hessian 矩阵是：

$$
\begin{pmatrix}
2 & 0 \\
0 & -2
\end{pmatrix}
$$

特征值是 $2$ 和 $-2$（一正一负）。

你看图像：

- 沿着 $x$ 轴走，$f(x,0)=x^2$ 是个向上的抛物线（极小）；
- 沿着 $y$ 轴走，$f(0,y)=-y^2$ 是个向下的抛物线（极大）。

原点 $(0,0)$ 就是典型的鞍点。

### 总结

**Hessian 特征值一正一负，直接判定该临界点为“鞍点”，意味着函数在这个点附近既有上升趋势也有下降趋势，它不可能是极值点。**


## 优化牛顿法步长讨论总结

针对函数 $f(x) = (x - 5)^2$，使用优化牛顿法（精确二阶导）时，步长 $\alpha$ 的取值对收敛结果有决定性影响。

### 1. 迭代公式与推导

标准牛顿法迭代公式为：

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

引入步长因子 $\alpha$ 后变为：

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

对于 $f(x) = (x - 5)^2$：
- $f'(x) = 2(x - 5)$
- $f''(x) = 2$

代入得：

$x_{k+1} = x_k - \alpha \cdot \frac{2(x_k - 5)}{2} = (1 - \alpha)x_k + 5\alpha$

### 2. 不同步长 $\alpha$ 的结果

| 步长范围 | 名称 | 收敛行为 | 示例（$x_0 = 0$） |
| :---: | :---: | :--- | :--- |
| $\alpha = 1$ | 标准牛顿法 | **一步收敛**到 $x=5$ | $x_1 = 5$ |
| $0 < \alpha < 1$ | 阻尼牛顿法 | **线性收敛**，逐步逼近 $x=5$ | $\alpha=0.5$：$x_1=2.5, x_2=3.75, \dots$ |
| $\alpha > 1$ | 超调/过大步长 | **震荡或发散**，无法收敛 | $\alpha=2$：在 $0$ 和 $10$ 间循环；$\alpha=3$：发散 |

### 3. 术语严谨性说明

- **$\alpha \in (0, 1)$**：才能称为**阻尼牛顿法**（Damped Newton's Method）。“阻尼”意为减速，确保函数值下降。
- **$\alpha = 1$**：**标准牛顿法**（Pure/Classic Newton's Method）。
- **$\alpha > 1$**：不属于阻尼牛顿法，通常称为**超调（Overshoot）**或**过大步长**。在优化理论中，这被视为算法设计缺陷或发散前兆，没有专门的“阻尼”名称。

### 4. 结论

- **步长 = 1**：1 步收敛（最优）。
- **步长 < 1**：能收敛，但速度变慢（需要多步）。
- **步长 > 1**：发生震荡或发散，可能永远找不到最优解。

实际应用中，通常采用**线搜索（Line Search）**动态调整 $\alpha$（一般取 $0 < \alpha \le 1$），以兼顾下降和稳定收敛。
