第1章 迭代法收敛原理:不动点迭代法,压缩映射原理,迭代收敛的充分必要条件

各位同学好,今天我们开始《收敛分析与提升方法实战》的第一章。说实话,迭代法收敛原理是整个课程的基石。我当年刚接触数值计算时,总觉得这东西太抽象,直到在工作中踩了坑,才明白它的分量。

先问大家一个问题:为什么有些迭代算着算着就收敛了,有些却越跑越偏?这背后其实有一套严谨的数学理论在支撑。今天我们就把它掰开揉碎了讲清楚。

1.1 不动点迭代法:从方程求根说起

先看一个简单问题:求解方程 f(x) = 0。你可能会说,这有什么难的?但现实中的方程往往没有解析解,比如 e^x + x = 0,你没法用公式直接写出 x 等于多少。

这时候,不动点迭代法就派上用场了。它的核心思想很简单:把 f(x) = 0 改写成 x = g(x) 的形式。然后随便猜一个初始值 x₀,不断代入计算:

x₁ = g(x₀)
x₂ = g(x₁)
x₃ = g(x₂)
...
x_{k+1} = g(x_k)

如果这个序列 {x_k} 收敛到某个 x*,那么 x* 就是方程的解。为什么?因为两边取极限,x* = g(x*),这不就是不动点吗?

举个例子,求方程 x² - 2 = 0 的正根。我们可以写成:

x = 2/x          // 方式一
x = (x + 2/x)/2  // 方式二(牛顿法)
x = x² + x - 2   // 方式三

你猜猜看,哪种方式能收敛?我告诉你,方式一和方式三在某些初始值下会发散,而方式二(牛顿法)收敛得飞快。为什么会这样?这就引出了压缩映射原理。

核心要点:不动点迭代法的成败,完全取决于你选择的 g(x) 是否满足压缩映射条件。

1.2 压缩映射原理:收敛的"通行证"

压缩映射原理,也叫巴拿赫不动点定理。它给出了迭代收敛的充分条件。说白了就是:如果 g(x) 能把定义域内的任意两点"压缩"得更近,那么迭代就一定收敛。

数学上,压缩映射的定义是:存在常数 L ∈ [0, 1),使得对任意 x, y,都有:

|g(x) - g(y)| ≤ L|x - y|

这个 L 叫做 Lipschitz 常数。如果 L < 1,g 就是压缩映射。

我在项目中遇到过这样一个案例:用迭代法求解某个热传导方程,选了 g(x) = x + 0.1*(f(x)),结果死活不收敛。后来一检查,Lipschitz 常数大于 1,压缩条件不满足。换成 g(x) = x + 0.01*(f(x)) 后,立马收敛了。

实用技巧:判断 g(x) 是否压缩,最常用的方法是看导数。如果 |g'(x)| ≤ L < 1 在定义域内恒成立,那么 g 就是压缩映射。这是微分中值定理的直接推论。

1.3 迭代收敛的充分必要条件

压缩映射原理给出了充分条件,但不是必要条件。也就是说,即使不满足压缩条件,迭代也可能收敛。那到底什么时候收敛?什么时候发散?

我们来看一个更精确的结论:

条件 结论 说明
|g'(x*)| < 1 局部收敛 初始值足够接近解时收敛
|g'(x*)| = 1 不确定 需要更高阶导数判断
|g'(x*)| > 1 发散 即使初始值很接近也会发散

这个表格我建议你记下来。在实际工程中,我们通常先估算解的大致位置,然后检查 g'(x) 的值是否小于 1。如果是,那就放心迭代;如果不是,赶紧换方法。

我曾经犯过一个错误:用迭代法求解一个非线性方程组,没检查导数就直接开算,结果算了 1000 步还没收敛。后来一查,g'(x*) ≈ 1.2,根本不可能收敛。白白浪费了计算资源。

避坑指南:不要盲目相信迭代法。如果迭代 50 步后残差没有明显下降,大概率是方法选错了。这时候应该停下来分析 g(x) 的性质,而不是继续傻算。

1.4 知识体系总览

为了让大家对本章内容有个整体把握,我画了一张流程图。它展示了不动点迭代法的核心逻辑:从方程求根出发,经过等价变换得到迭代格式,然后通过压缩映射原理判断收敛性,最后用充分必要条件指导实际应用。

方程求根 f(x)=0 等价变换 x=g(x) 迭代格式 x_{k+1}=g(x_k) 收敛判断:压缩映射原理 |g'(x)| ≤ L < 1 充分必要条件 |g'(x*)| < 1 收敛 实际应用:选择合适迭代格式 检查导数 → 调整参数 → 迭代计算 不满足条件时重新设计 g(x) 图1:不动点迭代法收敛分析流程

1.5 实战要点总结

好了,我们来总结一下本章的核心内容:

  • 不动点迭代法:把 f(x)=0 改写成 x=g(x),然后反复迭代。关键在于 g(x) 的选择。
  • 压缩映射原理:如果 |g'(x)| ≤ L < 1,迭代一定收敛。这是最常用的判断工具。
  • 充分必要条件:在解 x* 附近,|g'(x*)| < 1 保证局部收敛,> 1 则发散。

我的建议:在实际工程中,先用简单方法估算解的大致位置,然后检查 g'(x) 的值。如果小于 0.5,放心迭代;如果在 0.5~0.9 之间,收敛较慢但可行;如果接近 1 或大于 1,赶紧换方法。

下一章我们会讨论收敛速度的量化分析,以及如何加速收敛。但在此之前,我建议你把今天的内容消化透。不动点迭代法看似简单,但它是所有迭代方法的根基。根基不牢,后面学再多技巧也是空中楼阁。

记住:迭代法不是万能的,但不懂收敛原理是万万不能的。

课后练习:试着用不动点迭代法求解方程 x = cos(x),看看需要迭代多少次才能收敛到 10⁻⁶ 精度。然后检查一下 g'(x) 在解附近的值,验证我们的理论。

可可精品资料库