跳转至

迭代数据何时值得相信?

先备知识

有限极限的证明必须给出:对任意 \(\varepsilon>0\),存在 \(N\),使所有 \(n\ge N\) 都满足误差要求。有限前缀只能展示有限项;再长的表格也不能直接覆盖整个尾部。若已经证明显式公式,则可以用 \(\varepsilon\)--\(N\) 定义把公式变成证书。

学习目标

完成本单元后,你应能:

  1. 用有限迭代表提出明确、可反驳的长期猜想;
  2. 比较稳定靠近、周期振荡和缓慢变化三种外观;
  3. 解释小增量、图像与有限前缀为何都不是收敛证明;
  4. 把数值探索、代数结构和 \(\varepsilon\)--\(N\) 证书分成不同证据层级。

牵引问题

下面三条递推都很短:

\[ \text{A: }x_{n+1}=\frac1{2+x_n},\qquad \text{B: }x_{n+1}=1-x_n, \qquad \text{C: }x_{n+1}=\frac{x_n}{1+x_n}. \]

计算器可以迅速输出很多位小数。什么时候这些数据值得相信?更准确地说:它们能支持什么结论,又不能支持什么结论?

探索与猜想

统一取初值 \(x_1=1\),手算前六项(小数取六位):

\(n\) A:\(1/(2+x_n)\) B:\(1-x_n\) C:\(x_n/(1+x_n)\)
1 1.000000 1.000000 1.000000
2 0.333333 0.000000 0.500000
3 0.428571 1.000000 0.333333
4 0.411765 0.000000 0.250000
5 0.414634 1.000000 0.200000
6 0.414141 0.000000 0.166667

合理的猜想分别是:A 在某个约为 \(0.4142\) 的值附近交替靠近;B 在 \(0\)\(1\) 之间周期振荡;C 可能等于 \(1/n\) 并趋于 \(0\)。表格本身没有证明任何一个“对所有充分大的 \(n\)”的陈述,但它指出了下一步应寻找的代数关系或反例。

概念与理论

数据、猜想与证书

本章把证据分成三层:

  1. 有限数据: 用于发现模式、检查计算、寻找反例候选;
  2. 结构命题: 用代数或归纳证明每个指标都满足某个公式或性质;
  3. 极限证书: 对任意误差构造门槛,并控制整个尾部。

从第 1 层跳到第 3 层是逻辑缺口。可靠流程是:先让数据提出可检验猜想,再寻找第 2 层结构,最后按定义完成第 3 层证明。

三个常见假证书

小增量不是证书。 \(|a_{n+1}-a_n|\) 很小只比较相邻两项,不说明它们靠近某个固定实数。例如 \(a_n=\sqrt n\) 满足

\[ a_{n+1}-a_n =\frac1{\sqrt{n+1}+\sqrt n} \le\frac1{\sqrt n}. \]

给定 \(\varepsilon>0\),取正整数 \(N>1/\varepsilon^2\);若 \(n\ge N\),上式严格小于 \(\varepsilon\),所以相邻增量趋于 \(0\)。但 \(a_n\) 无界,所以不可能收敛到有限实数。

图像变平不是证书。 像素宽度、纵轴尺度和浮点舍入都可能隐藏缓慢变化或小幅振荡;图像只显示有限窗口。

长前缀不是证书。 任意有限前缀之后都可以另行接上完全不同的尾部。例如一列前一百万项全为 \(0\),以后恒为 \(1\);前缀再稳定也不决定最终行为。

递推 C 的完整证书

定理。\(x_1=1\)\(x_{n+1}=x_n/(1+x_n)\),则 \(x_n=1/n\),因而 \(x_n\to0\)

障碍。 表格中的 \(1,1/2,1/3,\ldots\) 只是模式;必须证明公式覆盖全部正整数,并从定义证明极限。

路线。 先归纳证明显式式 \(x_n=1/n\),再使用已证明的倒数数列 \(\varepsilon\)--\(N\) 论证。

逐步证明。\(n=1\) 时,\(x_1=1=1/1\)。假设某个 \(n\ge1\)\(x_n=1/n\),则

\[ x_{n+1}=\frac{x_n}{1+x_n} =\frac{1/n}{1+1/n} =\frac1{n+1}. \]

由归纳法,\(x_n=1/n\) 对所有 \(n\in\mathbb N\) 成立。任取 \(\varepsilon>0\),由阿基米德性质取整数 \(N>1/\varepsilon\)。若 \(n\ge N\),则

\[ |x_n-0|=\frac1n\le\frac1N<\varepsilon. \]

所以 \(x_n\to0\)\(\square\)

假设使用。 初值启动归纳;递推式完成归纳步骤;阿基米德性质提供误差门槛。

常见错误。 只从前三项猜出 \(1/n\) 就直接引用其极限,漏掉了“递推确实永远产生 \(1/n\)”这一步。

方法迁移。 当递推表呈现简单模式时,先用归纳把猜想升级为结构命题,再用定义处理极限。

递推 B 的振荡证书

\(x_1=1\)\(x_{n+1}=1-x_n\),则代入两次得

\[ x_{n+2}=1-x_{n+1}=1-(1-x_n)=x_n. \]

因此奇数项恒为 \(1\),偶数项恒为 \(0\)。要证明它没有有限极限,可对任意候选 \(L\) 注意:\(0\)\(1\) 相距 \(1\),至少一个到 \(L\) 的距离不小于 \(1/2\);否则三角不等式将给出 \(1<1\)。每个尾部都有奇数项和偶数项,故取 \(\varepsilon_L=1/2\),每个尾部都出现离 \(L\) 至少 \(1/2\) 的项。于是它不收敛于任何有限 \(L\)

这里有限表提示了周期,真正的证书是恒等式 \(x_{n+2}=x_n\) 加上极限定义的否定。

递推 A 目前能说到哪里

\(x_1=1\)\(x_{n+1}=1/(2+x_n)\),可归纳证明 \(x_n>0\),且 \(n\ge2\)\(0<x_n<1/2\)。若某个数 \(\ell\) 在一次更新后保持不变,它必须满足

\[ \ell=\frac1{2+\ell},\qquad \ell^2+2\ell-1=0, \]

其正解为 \(\sqrt2-1\)。表格因而提示“迭代可能趋于这个不动值”的猜想,但解出不动值不等于证明迭代收敛。本章尚未获得把递推中的极限直接穿过分式所需的法则,也没有给出控制任意尾部误差的估计,因此此处只能记录猜想,不能宣布证明完成。

例题与迁移

例:用短程序生成而不裁决

下面的 Python 只复现有限迭代表:

def iterate(step, x, count):
    values = [x]
    for _ in range(count - 1):
        x = step(x)
        values.append(x)
    return values

print(iterate(lambda x: 1 / (2 + x), 1.0, 8))

改变 count 可以扩大观察窗口,却不会把有限循环变成对无限尾部的证明。程序的角色是检查手算、发现模式和暴露反例候选。

例:显示精度制造的“稳定”

若只显示三位小数,\(1/n\) 在很大一段范围内可能连续打印为 0.000。这不表示后续精确值都等于 \(0\);事实上每个 \(1/n\) 都是正数。相反,递推 B 若纵轴缩放过大,\(0\)\(1\) 的跳动也可能视觉上变小。舍入值和绘图尺度都不能替代精确不等式。

即时检验与回望

  1. 对递推 A 解出方程 \(\ell=1/(2+\ell)\),是否已经证明迭代收敛于 \(\ell\)
答案

没有。方程只筛选“假如存在极限时可能的候选值”,没有证明极限存在,也没有给出任意误差对应的尾部门槛。

  1. 为什么 \(|a_{n+1}-a_n|\to0\) 不能单独证明 \((a_n)\) 收敛?
答案

它只说明相邻步长变小,不说明总位置靠近某个固定实数。\(a_n=\sqrt n\) 的相邻差趋于 \(0\),但数列无界,因此没有有限极限。

习题与答案

习题 1:为三条递推分类证据

对 A、B、C 的前六项表,分别写出一个“数据支持的猜想”和一个“表格尚未证明的事项”。

答案

A 猜想趋于约 \(0.4142\),但表格未证明极限存在;B 猜想在 \(0,1\) 间周期振荡,但表格未证明所有后续项保持周期;C 猜想 \(x_n=1/n\) 并趋于 \(0\),但表格既未证明显式公式覆盖所有 \(n\),也未给出任意误差的门槛。

习题 2:证明两周期

\(x_{n+1}=1-x_n\)。证明 \(x_{n+2}=x_n\),并判断什么初值会使数列恒定。

答案

直接代入得 \(x_{n+2}=1-x_{n+1}=1-(1-x_n)=x_n\)。若要恒定,须 \(x_1=1-x_1\),即 \(x_1=1/2\);此时每项都是 \(1/2\)。其他初值在 \(x_1\)\(1-x_1\) 两值之间交替。

习题 3:由递推反推显式式

\(x_1=1/2\)\(x_{n+1}=x_n/(1+x_n)\)。猜测并证明显式公式,再证明其极限。

答案

猜测 \(x_n=1/(n+1)\)。初值成立;若 \(x_n=1/(n+1)\),则

\[ x_{n+1}=\frac{1/(n+1)}{1+1/(n+1)}=\frac1{n+2}. \]

归纳得公式。给定 \(\varepsilon>0\),取整数 \(N>1/\varepsilon\)\(n\ge N\)\(|x_n|=1/(n+1)<1/n\le1/N<\varepsilon\),故 \(x_n\to0\)

习题 4:长前缀反例

给定正整数 \(K\),构造两个前 \(K\) 项完全相同、但一个收敛于 \(0\)、另一个收敛于 \(1\) 的数列。

答案

\(a_n=0\) 对所有 \(n\);令

\[ b_n=\begin{cases}0,&n\le K,\\1,&n>K. \end{cases} \]

两列前 \(K\) 项相同。\(a_n\to0\);而 \(b_n\)\(K+1\) 项起恒为 \(1\),所以 \(b_n\to1\)。任何固定长度的前缀都不能决定极限。

习题 5:审查一份数值论证

有人说:“我画了前 \(10^5\) 项,曲线已经变平,而且最后两项相差小于 \(10^{-12}\),所以数列收敛。”指出缺失的逻辑,并写出真正需要证明的命题。

答案

图像和最后一步差只涉及有限信息,既未指定候选极限 \(L\),也未控制第 \(10^5\) 项以后的所有项。真正需要证明的是:存在某个 \(L\in\mathbb R\),使

\[ \forall\varepsilon>0\;\exists N\in\mathbb N\;\forall n\ge N, \qquad |a_n-L|<\varepsilon. \]

若先从数据猜出 \(L\),仍须通过代数估计或结构定理构造这个 \(N\)

常见误区与后续

  • 把候选值当存在性证明: 解递推的形式平衡方程,只能筛选可能极限。
  • 把计算长度当量词: 再大的有限 count 也不能代表“所有 \(n\ge N\)”。
  • 把相邻差小当作靠近固定值: 缓慢漂移仍可能无界。
  • 把舍入后的相等当精确相等: 显示位数会隐藏非零误差。
  • 让代码承担它没有证明的结论: 代码适合生成数据;收敛结论需要覆盖无限尾部的数学证书。

本单元没有新增生产算法。递推 A 的收敛性将在后续章节获得足够理论工具后再证明;此时最可靠的结论是:数据提出猜想,定义规定证明债务。