递推会不会真的“靠近”目标?¶
先备知识¶
第 3 章已经证明:每个正数 \(a\) 都有唯一正平方根 \(\sqrt a\),并且可以比较正数的平方。本单元把这个已经存在的目标放在递推过程旁边,研究每一步是否仍在目标上方、是否朝着它下降。高等代数只用分式的正性、平方差分解和不等式;不需要解析几何。Python 活动只要求会给变量赋值、定义一个函数并用 for 循环重复有限次。
学习目标¶
完成本单元后,你应能:
- 写出 Babylonian 递推的初始条件与更新公式;
- 用归纳法证明迭代项为正且始终严格大于 \(\sqrt a\);
- 用平方差证明迭代项单调下降;
- 把有限步输出看成检查猜想的证据,而不把它误当作证明。
牵引问题¶
已知 \(a>0\) 时,第 3 章保证了 \(\sqrt a\) 存在。可是如果只会试算,怎样系统地给出越来越合理的候选值?古老的 Babylonian 方法从一个正猜测 \(x_1\) 出发,每一步都把当前值 \(x_n\) 同它的配对数 \(a/x_n\) 平均。平均之后的数会不会跑到 \(\sqrt a\) 下方?会不会忽上忽下?在尚未建立数列极限定义时,我们能先证明哪些每一步都可检查的性质?
探索与猜想¶
取 \(a=2\)、\(x_1=2\)。第一步给出
再算一步得到 \(x_3=17/12\)。这些数都大于 \(\sqrt2\),并且似乎不断下降。这里有两个待证明的猜想:
- 从 \(x_1>\sqrt a\) 开始,是否每个 \(x_n\) 仍有 \(x_n>\sqrt a\)?
- 一旦 \(x_n\) 位于目标上方,下一项是否不大于当前项?
若两点都成立,递推至少不会失控:它始终被 \(\sqrt a\) 从下方挡住,又不向上反弹。至于它是否有一个极限、极限如何定义,留待下一部建立数列语言后再处理。
概念与理论¶
Babylonian 递推¶
设 \(a>0\),选择初值 \(x_1>\sqrt a\),并对 \(n=1,2,\ldots\) 定义
这是一条递推关系:第 \(n+1\) 项由第 \(n\) 项计算。式中的除法要求 \(x_n\ne0\),所以正性不是装饰,而是递推能继续执行的条件。
上方正性与单调性的不变量¶
命题。 若 \(a>0\) 且 \(x_1>\sqrt a\),则对每个 \(n\in\mathbb N\),都有
证明。 先证上方正性。初始条件已经给出 \(x_1>\sqrt a>0\)。若 \(x_n>\sqrt a\),则 \(x_n>0\),并且
故 \(x_{n+1}>\sqrt a>0\)。由数学归纳法,每一项都为正且位于 \(\sqrt a\) 上方;特别地,所有后续除法都有意义。
再由 \(x_n>\sqrt a\) 得 \(x_n^2>a\),从而当然也有 \(x_n^2\ge a\)。直接相减:
分母为正、分子为负,因此 \(x_{n+1}<x_n\)。若只需要非严格的版本,\(x_n^2\ge a\) 给出 \(x_{n+1}\le x_n\);本题的严格初值使不等式严格。\(\square\)
这份证明还给出一个已经可用的有界性结论:对每个 \(n\),都有
左侧来自上方正性(事实上此处严格大于),右侧来自从 \(x_1\) 开始的单调下降。因此递推项被两个固定数夹住。这份证明提供的是有限步骤不变量:对任意给定的 \(n\),第 \(n\) 步都保持上方正性、下降且有界;它尚未把“无限多步之后”的对象当作已定义的极限。
例题与迁移¶
例:从 \(2\) 出发逼近 \(\sqrt2\)¶
对 \(a=2\)、\(x_1=2\),递推为
因为 \(2>\sqrt2\),上面的命题适用。前几项为
它们依次下降,且都大于 \(\sqrt2\)。为量化“上方”,可利用平方差:当 \(x_n>\sqrt a\) 时,
这个恒等式告诉我们,检查残差 \(x_n^2-a\) 能帮助判断候选值离目标有多远;但在本章,我们只把它作为有限步比较工具,不预先赋予它极限理论的含义。
算法活动:输出有限步表格¶
下面的代码只输出有限步结果,刻意不在书中执行。读者可在本地运行,并将输出与上述不变量逐行比对。
def babylonian_table(a: float, x: float, steps: int) -> list[tuple[int, float, float]]:
rows = []
for n in range(1, steps + 1):
rows.append((n, x, x * x - a))
x = 0.5 * (x + a / x)
return rows
for n, x, residual in babylonian_table(2.0, 2.0, 6):
print(n, f"{x:.12f}", f"{residual:.3e}")
运行后可检查三件事:表中的 \(x\) 是否为正;后一行是否小于前一行;残差 \(x^2-2\) 是否仍为正。程序的浮点数输出可能有舍入误差,因而它只能帮助发现错误或支持猜想;真正保证“在 \(\sqrt2\) 上方且下降”的是前面的代数证明。
即时检验与回望¶
- 为什么初值条件 \(x_1>\sqrt a\) 自动保证递推式第一步中的除法有意义?
答案
因为 \(\sqrt a>0\),所以 \(x_1>\sqrt a\) 蕴含 \(x_1>0\),特别地 \(x_1\ne0\)。
- 在上方正性证明中,为什么 \(((x_n-\sqrt a)^2)/(2x_n)\) 为正?
答案
\(x_n>\sqrt a\) 使平方的分子严格大于零;又 \(x_n>0\),故分母 \(2x_n\) 为正。
- 仅看到程序输出的六行数字下降,为什么还不能证明每一项都会下降?
答案
六行只检查了六个有限实例。命题要求对每个自然数 \(n\) 都成立;归纳步骤才把任意一步的结论传给下一步。
回看牵引问题:递推并不是“不断按键”的同义词。初值、更新式和不变量共同把有限步骤组织成可证明的过程。下一单元将研究如何用一对端点持续夹住目标,并用区间长度给出更直接的有限误差证书。
习题与答案¶
ex-u-01-04-01-01¶
设 \(a=9\)、\(x_1=4\)。写出 \(x_2,x_3\),并说明它们是否大于 \(3\)。
答案
\(x_2=(4+9/4)/2=25/8\),\(x_3=(25/8+72/25)/2=1201/400\)。因初值 \(4>3=\sqrt9\),命题保证 \(x_2,x_3>3\);也可直接比较分数。
ex-u-01-04-01-02¶
设 \(x>\sqrt a\)。证明 \(T(x)=\frac12(x+a/x)\) 仍严格大于 \(\sqrt a\)。
答案
因 \(x>0\),
故 \(T(x)>\sqrt a\)。
ex-u-01-04-01-03¶
设 \(x>\sqrt a\)。证明 \(T(x)<x\),并指出所用的严格不等式来自哪里。
答案
由 \(x>\sqrt a>0\) 得 \(x^2>a\)。于是
所以 \(T(x)<x\)。严格性来自 \(x^2>a\),而非仅仅 \(x^2\ge a\)。
ex-u-01-04-01-04¶
完整解答。 设 \(a>0\)、\(x_1>\sqrt a\),并由 Babylonian 递推定义 \(x_{n+1}\)。用数学归纳法证明:每个 \(x_n\) 都满足 \(x_n>\sqrt a\),且对每个 \(n\) 有 \(x_{n+1}<x_n\)。说明这份结论为什么还不是数列极限定理。
答案
初始时 \(x_1>\sqrt a>0\)。假设 \(x_n>\sqrt a\),则 \(x_n>0\),并且
因此 \(x_{n+1}>\sqrt a\),归纳得每一项均在目标上方且为正。再由 \(x_n>\sqrt a\) 得 \(x_n^2>a\);于是
故 \(x_{n+1}<x_n\)。证明说明任意有限编号的项都满足这些关系,但尚未定义“数列有极限”或证明无限过程对应某个最终值;这些工作留给后续的数列极限单元。