Skip to content

定义Definition

简单连分数与收敛分数

Simple continued fraction · Convergent · 简单连分数 · 收敛分数

通过反复取整数部分与倒数,把实数写成简单连分数,并用收敛分数给出可证明的有理逼近误差。

形式陈述 ​

对实数 x,令 x0=x,依次取

an=⌊xn⌋,xn+1=1xn−an.

若 xn=an,则在取倒数之前停止。这里 an 称为部分商,xn 称为完全商;a0 可以是任意整数,而后续完全商均大于 1,因而 an≥1(n≥1)。算法停止于 m 时,得到有限简单连分数

x=[a0;a1,…,am]=a0+1a1+1⋱+1am.

单项情形规定为 [a0]=a0。这个过程对有理数恰好有限终止;对无理数则无限继续。无限记号 [a0;a1,a2,…] 的意义由下面的收敛定理确定,而不是先假定无限嵌套分式已经有值。

截取前 n+1 个部分商所得的分数称为第 n 个收敛分数,记作 pn/qn。它们可用整数递推计算:

p−2=0,p−1=1,pn=anpn−1+pn−2,q−2=1,q−1=0,qn=anqn−1+qn−2.

对算法已经产生的每个 n≥0,有 [a0;…,an]=pn/qn,且 qn>0、分数既约。若 x 无理,则

1qn(qn+1+qn)<|x−pnqn|<1qnqn+1≤1qn2,

并且偶数索引的收敛分数小于 x,奇数索引的收敛分数大于 x。这些结论既给出收敛,也给出每次截断的误差证书。

直觉

把带余除法读成分式 ​

十进制展开每次抽取一个固定精度的数位;简单连分数每次抽取当前值的整数部分,再把不足 1 的余量倒过来。倒数把小余量放大,使下一次取整仍能取得信息。对有理输入,这正是整数欧几里得算法的另一种读法:

A=a0B+r⟹AB=a0+rB=a0+1B/r(r>0).

设 B>0,带余除法保证 0≤r<B,即使 A 为负也一样。下一步处理 B/r,随后处理下一对除数与余数。正余数严格下降,所以一定终止。反过来,有限个整数经过加法和取倒数仍得到有理数,因此终止的输入必为有理数。

两项递推为什么能保存全部前缀 ​

计算收敛分数时,不必每次重新展开整串嵌套分式。保留一个可变的末项 t,归纳可得

[a0;…,an−1,t]=tpn−1+pn−2tqn−1+qn−2.

n=0 时左边就是 t,右边由初值也等于 t。将末项 t 换成 an+1/u,分子、分母同乘 u,新的系数正好是 anpn−1+pn−2 与 anqn−1+qn−2,这就完成归纳。取 t=an,便得到收敛分数的递推。那两项初值是让这一个公式从第零项起统一成立的记账方式。

递推还有一个不会随部分商大小改变的量。令

Dn=pnqn−1−pn−1qn.

直接代入递推,含 an 的项相消,留下 Dn=−Dn−1。由于 D0=−1,所以

pnqn−1−pn−1qn=(−1)n+1.

pn,qn 的任何公约数都整除左边,因此只能为 1。同一个恒等式还给出相邻收敛分数的距离:

|pn+1qn+1−pnqn|=1qnqn+1.

保留真实尾项,证明逼近的是原来的数 ​

现在令 x 无理,算法就始终拥有下一个完全商 xn+1。在前缀后保留这个真实尾项,而不是把它删掉,上一小节的恒等式给出

x=pnxn+1+pn−1qnxn+1+qn−1.

与 pn/qn 相减,利用 Dn 的符号,得到精确误差:

x−pnqn=(−1)nqn(qnxn+1+qn−1).

分母为正,所以误差符号完全由 n 的奇偶性决定。又因为

an+1<xn+1<an+1+1,qn+1=an+1qn+qn−1,

误差分母中括号内的量严格介于 qn+1 与 qn+1+qn 之间;取倒数就得到形式陈述中的双侧误差界。

最后还需确认这个界真的趋于零。q0=1、q1=a1≥1,且对 n≥2 有 qn≥qn−1+qn−2,所以分母无界增长。于是 1/qn2→0,按序列收敛的定义,pn/qn→x。这个证明从原实数的有限次运算出发,避免了用“无限连分数等于 x”来证明它自己收敛的循环。

例子与边界

一条余数链给出一个有限连分数 ​

欧几里得算法的熟悉例子是

252=2⋅105+42,105=2⋅42+21,42=2⋅21.

将三次除法的商顺次读出,得到

252105=[2;2,2]=2+12+1/2=125.

递推则依次产生 2/1、5/2、12/5。最后一项是精确值,已经没有尾项,所以不能把无理数的严格正误差下界套在这里。

有限表示需要一个规范约定:有多个部分商时,要求末项 am≥2。若允许末项为 1,就有

[a0;…,am]=[a0;…,(am−1),1](m≥1, am≥2).

例如 [2;2,2]=[2;2,1,1];整数也有 [k]=[k−1;1]。规范表示的唯一性来自取整:末项至少为 2 时,每个非初始尾部的值都严格大于 1,所以各层余量严格在 0 与 1 之间,当前整数部分必为该层的部分商。随后取倒数便唯一恢复下一层。末项为 1 的表示将最后两项合并后也回到这一规范表示。

负数同样适用,但必须向下取整。例如 −7/3 的首项是 −3,得到 [−3;1,2]。另外,分母并非从第一步起就严格增加:若 a1=1,则 q0=q1=1;严格增加从 q2 开始。这不影响无限情形中分母趋于无穷的结论。

为平方根给出一个可核验的区间 ​

因为 1<2<2,首项为 1。取一次倒数得到

x1=12−1=1+2,1x1−2=1+2=x1.

因此完全商从这里开始重复,2=[1;2,2,2,…]。用递推逐项计算:

索引 n 部分商 an 分子 pn 分母 qn 收敛分数的位置
0 1 1 1 下侧
1 2 3 2 上侧
2 2 7 5 下侧
3 2 17 12 上侧
4 2 41 29 下侧
5 2 99 70 上侧

前五个收敛分数的最后一个是 41/29;再算一步便得到一个上界。因此

4129<2<9970.

这个结论也有不依赖小数计算的独立核验:412=1681<2⋅292=1682,而 992=9801>2⋅702=9800;所有量为正,平方比较保留大小关系。区间宽度恰为

9970−4129=99⋅29−41⋅7029⋅70=12030<11000.

所以 41/29 是下侧逼近,且其绝对误差严格小于 1/1000。这里 1/2030 是上下端点的距离,并不是 41/29 的实际误差;实际误差由有理化精确写成

2−4129=2⋅292−41229(292+41)=129(292+41).
推论与应用

简单连分数把“算出一个接近的分数”变成了“算出分数及其误差证书”。对无理输入,连续两个收敛分数分居两侧,将较小者记为 Ln、较大者记为 Un,就有

Ln<x<Un,Un−Ln=1qnqn+1.

给定容许误差 ε>0,只要继续计算到 qnqn+1>1/ε,两端点对 x 的绝对误差便都小于 ε。判断何时停止只需整数乘法与比较;上面的平方根例子正是这个步骤的一次完整执行。

误差公式还解释了为什么有些收敛分数特别准确。下一部分商很大时,qn+1=an+1qn+qn−1 也大,因此已经得到的 pn/qn 满足更强的上界 1/(qnqn+1)。精度由后续部分商控制,而不只是由当前分母决定。

这些证书依赖于正确的部分商。对精确有理数,可以直接沿整数余数链计算;对 2 这样的代数数,本例用代数恒等式确定了全部后续部分商。若输入只是一个有限精度的小数,取整与倒数得到的是该近似输入的信息;要把结论用于原数,还需另外控制输入误差。这与收敛分数的数学误差界是两项不同的工作。

本条建立的是交错夹逼与误差控制。若进一步比较同一分母限制下的所有有理数,还必须明确比较的是 |x−p/q| 还是 |qx−p|,并证明相应的最佳逼近定理;这里的误差界本身不承担这一结论。

参考资料
  • Nicolas Mascot, MAU23101, Chapter 6: Continued Fractions,2021 年 4 月 17 日版,PDF pp. 8–12(终止性)、pp. 14–19(收敛分数递推与既约性)、pp. 22–24(交错收敛)、pp. 29–30(误差界)。本文的误差公式直接由真实尾项推导。
  • Rutgers University, Math 574, Lecture 1,Spring 2004,§2,pp. 2–3:简单连分数、欧几里得算法以及有限表示的末项约定。
关系图谱7 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系