一. 普通连分数
一. 连分数的定义
连分数 x 一般用数列来表示:x=[a0;a1,a2,…,an],意为 a0+1a1+1a2+1a3+1⋱+1an。
它的重要作用就是求近似。
举个例子。
458=5.625。将它转化为连分数的过程即辗转相除法。
458=5+58
85=1+35
53=1+23
32=1+12
21=2
注意到辗转相除的本质就是上一次的结果的分数部分就是下一次的等号左侧。
我们取每一次操作的商作为连分数的序列 a,那么可得 a=[5,1,1,1,2]。
将它写作连分数的样子就是 5+11+11+11+12。
那么根据辗转相除的过程感性理解就知道连分数等于原分数。读者也可自行验证。
那么如果我对于 a 只取其前 3 位,即新序列 b=[5,1,1],那么其连分数为 5+11+11=5.5,与正确答案 5.625 差不多。
注意虽然 5.625−5.5=0.25 相差的误差不算小,但是我们只是取了其前三位计算。对于一个连分数,我取它的位数越多答案越精确。
比如对于著名分数 777084312640858,它的连分数用序列表示出来为 [29,2,2,1,5,1,4,1,1,2,1,6,1,10,2,2,3].
我们取前四位算算:29+12+12+11=2067。
而 777084312640858=29.42544847167...,2067=29.4285714...。
可见我们只取了前四位答案依旧较为精确。
事实上,很多情况下连分数不一定分子为 1:a0+b1a1+b2a2+b3a3+b4⋱+bnan。
这时候用数列即表示为 [a0;(b1,a1),(b2,a2),…(bn,an)]。
首项 a0 后用分号间隔表示其为整数,不带 b。当然也有部分书籍此处依旧使用逗号。
除了用数列表示连分数,还可以使用 Pringsheim 的记法,记作:x=a0+n∑i=1bi||ai。 LaTeX 没有打错。
或者是高斯的记法:x=a0+nKi=1biai。
本文使用最普遍的数列记法。
连分数有一些很显然的性质:
[a0;a1,…an]=a0+1[a1;a2,…,an]=[a0;[a1;a2,…,an]]。
ri 表示 [ai…an]。表示第 i 余项。
对于连分数显然最后一项不为 0。若中间有一项为 0:
x=[a0,…,ak−1,0,ak+1,rk+2]=[a0,…,ak−1+10+1ak+1+1rk+2]=[a0,…,ak−1+ak+1+1rk+2]=[a0,…,ak−1+ak+1,rk+2]
所以对于 ak=0 的作用就是将 ak−1,ak+1 变成一项,从而减少项数。这是个很好的 trick。
我们把截到连分数第 i 项即 [a0;a1,…,ai] 称作第 i 个近似或渐进分数。
把第 i 近似用分数表示出来:piqi。
下部分将讲解关于第 i 近似的求法及其其他性质。
二. 连分数基本结论
考虑如何去求出来 pi,qi 的递推式或者通项。
一些显然的结论:p0=a0,q0=1,p1=a0a1+1,q1=a1…。
事实上读者可以尝试手玩多几组来找规律。
第 i 近似的分数的递推式:
{pi=aipi−1+pi−2qi=aiqi−1+qi−2
考虑证明:
使用数学归纳法:
显然对于 i≤2 时直接验证显然。
设对于 i=n 时原式成立,考虑推出 i=n+1 时原式亦成立。
x=[a0;a1,a2,…,an,an+1]=[a0;a1,a2,…,an−1,an+1an+1]=(an+1an+1)pn−1+pn−2(an+1an+1)qn−1+qn−2=anpn−1+pn−1an+1+pn−2anqn−1+qn−1an+1+qn−2=anan+1pn−1+pn−1+an+1pn−2anan+1qn−1+qn−1+an+1qn−2=an+1(anpn−1+pn−2)+pn−1an+1(anqn−1+qn−2)+qn−1=an+1pn+pn−1an+1qn+qn−1
∴pn+1qn+1=an+1pn+pn−1an+1qn+qn−1
证毕。
pipi−1={[ai;ai−1,…,a2,a1,a0](a0≠0)[ai;ai−1,…,a2](a0=0)
qiqi−1=[ai,ai−1,…,a2,a1]
证明:
对定理 1 的第一式两遍除以 pi−1 得到
pipi−1=ai+pi−1pi−2
设 χi=pipi−1,则上述式子转为 χi=ai+1χi−1=[ai;χi−1],而同理显然有 χi−1=[ai−1;χi−2]。
将上述式子递推下去,到了 χ1=p1p0=a1+1a0=[a1;a0]。
如此就有上述公式:pipi−1=[ai;…,a1,a0]。
而因为最后一位不能为 0,所以若 a0=0,则 p0=0,那么 χ1 无意义,递推到 χ2=a2 结束。
对于 qi 的情况同理。
对于两个相邻的渐近分数之间误差大小是我们所关心的。那么考虑去计算它们之间的误差。
也就是 pi+1qi+1−piqi=pi+1qi−piqi+1qiqi+1
对于分子 pi+1qi−piqi+1,去计算:
pi+1qi−piqi+1=(ai+1pi+pi−1)qi−(ai+1qi+qi−1)pi=−(piqi−1−pi−1qi)
注意到 piqi−1−pi−1qi 为下一项。
而 p1q0−p0q1=1。
所以继续递推下去显然可以得到:
pi+1qi+1−piqi=(−1)iqiqi+1
对于分子由刚才的递推显然得到:pi+1qi−piqi+1=(−1)i。
事实上此时就可以计算 x 与渐进分数的差。
直接给结论,具体过程读者可自行推出:
x−piqi=(−1)iqi(qi−1+qiri+1)
继续考虑对于间隔一项的误差之差。
pi+2qi+2−piqi=pi+2qi+2−pi+1qi+1+pi+1qi+1−piqi=(−1)i+1qi+1qi+2+(−1)iqiqi+1=(−1)iqi+1(qi+2−qiqiqi+2)=(−1)iai+2qiqi+2
那么对于奇偶去分类,可以得到下述结论。
对一个确定的连分数,其奇数项渐近分数严格递减,偶数项渐近分数严格递增,奇数项渐近分数总是大于相邻的偶数项渐近分数。
三. 无限连分数
巨坑待补。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步