【学术】连分数

一. 普通连分数

一. 连分数的定义

连分数 \(x\) 一般用数列来表示:\(x=[a_0;a_1,a_2,\dots ,a_n]\),意为 $ \displaystyle a_0+\dfrac{1}{a_1+\dfrac{1}{a_2+\dfrac{1}{a_3+\dfrac{1}{\ddots+\dfrac{1}{a_n}}}}}$。

它的重要作用就是求近似

举个例子。

\(\dfrac{45}8=5.625\)。将它转化为连分数的过程即辗转相除法

\(\dfrac{45}{8}=5+\dfrac{5}{8}\)

\(\dfrac{8}{5}=1+\dfrac{3}{5}\)

\(\dfrac{5}3=1+\dfrac{2}3\)

\(\dfrac{3}{2}=1+\dfrac{1}{2}\)

\(\dfrac{2}{1}=2\)

注意到辗转相除的本质就是上一次的结果的分数部分就是下一次的等号左侧。

我们取每一次操作的商作为连分数的序列 \(a\),那么可得 \(a=[5,1,1,1,2]\)。

将它写作连分数的样子就是 \(5+\dfrac{1}{1+\dfrac{1}{1+\dfrac{1}{1+\dfrac{1}2}}}\)。

那么根据辗转相除的过程感性理解就知道连分数等于原分数。读者也可自行验证。

那么如果我对于 \(a\) 只取其前 \(3\) 位,即新序列 \(b=[5,1,1]\),那么其连分数为 \(5+\dfrac{1}{1+\dfrac{1}1}=5.5\),与正确答案 \(5.625\) 差不多。

注意虽然 \(5.625-5.5=0.25\) 相差的误差不算小,但是我们只是取了其前三位计算。对于一个连分数,我取它的位数越多答案越精确。

比如对于著名分数 \(\dfrac{77708431}{2640858}\),它的连分数用序列表示出来为 \([29,2,2,1,5,1,4,1,1,2,1,6,1,10,2,2,3]\).

我们取前四位算算:\(29+\dfrac{1}{2+\dfrac{1}{2+\dfrac{1}{1}}}=\dfrac{206}{7}\)。

而 \(\dfrac{77708431}{2640858}=29.42544847167...\),\(\dfrac{206}{7}=29.4285714...\)。

可见我们只取了前四位答案依旧较为精确。

事实上,很多情况下连分数不一定分子为 \(1\):$ \displaystyle a_0+\dfrac{b_1}{a_1+\dfrac{b_2}{a_2+\dfrac{b_3}{a_3+\dfrac{b_4}{\ddots+\dfrac{b_n}{a_n}}}}}$。

这时候用数列即表示为 \([a_0;(b_1,a_1),(b_2,a_2),\dots (b_n,a_n)]\)。

首项 \(a_0\) 后用分号间隔表示其为整数,不带 \(b\)。当然也有部分书籍此处依旧使用逗号。

除了用数列表示连分数,还可以使用 Pringsheim 的记法,记作:\(\displaystyle x=a_0+\sum_{i=1}^n \dfrac{b_i|}{|a_i}\)。 LaTeX 没有打错。

或者是高斯的记法:\(\displaystyle x=a_0+\underset{i=1}{\overset{n}{\mathbb K}}\dfrac{b_i}{a_i}\)。

本文使用最普遍的数列记法。

连分数有一些很显然的性质:

\([a_0;a_1,\dots a_n]=a_0+\dfrac{1}{[a_1;a_2,\dots ,a_n]}=[a_0;[a_1;a_2,\dots ,a_n]]\)。

\(r_i\) 表示 \([a_i\dots a_n]\)。表示第 \(i\) 余项。

对于连分数显然最后一项不为 \(0\)。若中间有一项为 \(0\):

\(\begin{aligned}x & = [a_0,\dots,a_{k-1},0,a_{k+1},r_{k+2}] \\ & = [a_0,\dots,a_{k-1}+\dfrac{1}{0+\dfrac{1}{a_{k+1}+\dfrac{1}{r_{k+2}}}}]\\&=[a_0,\dots,a_{k-1}+a_{k+1}+\dfrac{1}{r_{k+2}}]\\&=[a_0,\dots,a_{k-1}+a_{k+1},r_{k+2}]\end{aligned}\)

所以对于 \(a_k=0\) 的作用就是将 \(a_{k-1},a_{k+1}\) 变成一项,从而减少项数。这是个很好的 trick。

我们把截到连分数第 \(i\) 项即 \([a_0;a_1,\dots, a_i]\) 称作第 \(i\) 个近似或渐进分数。

把第 \(i\) 近似用分数表示出来:\(\dfrac{p_i}{q_i}\)。

下部分将讲解关于第 \(i\) 近似的求法及其其他性质。

二. 连分数基本结论

考虑如何去求出来 \(p_i,q_i\) 的递推式或者通项。

一些显然的结论:\(p_0=a_0,q_0=1,p_1=a_0a_1+1,q_1=a_1\dots\)。

事实上读者可以尝试手玩多几组来找规律。

  • 定理 \(1.1\):递推公式

第 \(i\) 近似的分数的递推式:

\[\begin{cases}p_i=a_ip_{i-1}+p_{i-2}\\q_i=a_iq_{i-1}+q_{i-2}\end{cases} \]

考虑证明:

使用数学归纳法:

显然对于 \(i\le 2\) 时直接验证显然。

设对于 \(i=n\) 时原式成立,考虑推出 \(i=n+1\) 时原式亦成立。

\[\begin{aligned}x & = [a_0;a_1,a_2,\dots, a_n,a_{n+1}] \\ & = [a_0;a_1,a_2,\dots,a_{n-1},a_{n}+\dfrac{1}{a_{n+1}} ]\\&=\dfrac{(a_n+\dfrac{1}{a_{n+1}})p_{n-1}+p_{n-2}}{(a_n+\dfrac{1}{a_{n+1}})q_{n-1}+q_{n-2}}\\&=\dfrac{a_np_{n-1}+\dfrac{p_{n-1}}{a_{n+1}}+p_{n-2}}{a_nq_{n-1}+\dfrac{q_{n-1}}{a_{n+1}}+q_{n-2}}\\&=\dfrac{a_na_{n+1}p_{n-1}+p_{n-1}+a_{n+1}p_{n-2}}{a_na_{n+1}q_{n-1}+q_{n-1}+a_{n+1}q_{n-2}}\\&= \dfrac{a_{n+1}(a_np_{n-1}+p_{n-2})+p_{n-1}}{a_{n+1}(a_nq_{n-1}+q_{n-2})+q_{n-1}}\\&=\dfrac{a_{n+1}p_n+p_{n-1}}{a_{n+1}q_n+q_{n-1}}\end{aligned} \]

\(\therefore \dfrac{p_{n+1}}{q_{n+1}}=\dfrac{a_{n+1}p_n+p_{n-1}}{a_{n+1}q_n+q_{n-1}}\)

证毕。

  • 定理 \(1.2\):反序定理

\[\dfrac{p_i}{p_{i-1}}=\begin{cases}[a_i;a_{i-1},\dots, a_2,a_1,a_0](a_0≠0)\\ [a_i;a_{i-1},\dots, a_2](a_0=0)\end{cases} \]

\[\dfrac{q_i}{q_{i-1}}=[a_i,a_{i-1},\dots ,a_2,a_1] \]

证明:

对定理 \(1\) 的第一式两遍除以 \(p_{i-1}\) 得到

\[\dfrac{p_i}{p_{i-1}}=a_i+\dfrac{p_{i-1}}{p_{i-2}} \]

设 \(\chi_i=\dfrac{p_i}{p_{i-1}}\),则上述式子转为 \(\chi_i=a_i+\dfrac{1}{\chi_{i-1}}=[a_i;\chi_{i-1}]\),而同理显然有 \(\chi_{i-1}=[a_{i-1};\chi_{i-2}]\)。

将上述式子递推下去,到了 \(\chi_1=\dfrac{p_1}{p_0}=a_1+\dfrac{1}{a_0}=[a_1;a_0]\)。

如此就有上述公式:\(\dfrac{p_i}{p_{i-1}}=[a_i;\dots,a_1,a_0]\)。

而因为最后一位不能为 \(0\),所以若 \(a_0=0\),则 \(p_0=0\),那么 \(\chi_1\) 无意义,递推到 \(\chi_2=a_2\) 结束。

对于 \(q_i\) 的情况同理。

\(~\)

对于两个相邻的渐近分数之间误差大小是我们所关心的。那么考虑去计算它们之间的误差。

也就是 \(\dfrac{p_{i+1}}{q_{i+1}}-\dfrac{p_i}{q_i}=\dfrac{p_{i+1}q_i-p_iq_{i+1}}{q_iq_{i+1}}\)

对于分子 \(p_{i+1}q_i-p_iq_{i+1}\),去计算:

\[\begin{aligned}p_{i+1}q_i-p_iq_{i+1}&=(a_{i+1}p_i+p_{i-1})q_i-(a_{i+1}q_i+q_{i-1})p_i\\&=-(p_iq_{i-1}-p_{i-1}q_i)\end{aligned} \]

注意到 \(p_iq_{i-1}-p_{i-1}q_i\) 为下一项。

而 \(p_1q_0-p_0q_1=1\)。

所以继续递推下去显然可以得到:

  • 定理 \(1.3\):相邻渐近分数之差

\[\dfrac{p_{i+1}}{q_{i+1}}-\dfrac{p_i}{q_i}=\dfrac{(-1)^i}{q_iq_{i+1}} \]

对于分子由刚才的递推显然得到:\(p_{i+1}q_i-p_iq_{i+1}=(-1)^i\)。

事实上此时就可以计算 \(x\) 与渐进分数的差。

直接给结论,具体过程读者可自行推出:

\[x-\dfrac{p_i}{q_i}=\dfrac{(-1)^i}{q_i(q_{i-1}+q_ir_{i+1})} \]

继续考虑对于间隔一项的误差之差。

\[\begin{aligned}\dfrac{p_{i+2}}{q_{i+2}}-\dfrac{p_i}{q_i}&=\dfrac{p_{i+2}}{q_{i+2}}-\dfrac{p_{i+1}}{q_{i+1}}+\dfrac{p_{i+1}}{q_{i+1}}-\dfrac{p_i}{q_i}\\&=\dfrac{(-1)^{i+1}}{q_{i+1}q_{i+2}}+\dfrac{(-1)^i}{q_iq_{i+1}}\\&=\frac{(-1)^i}{q_{i+1}}\left(\frac{q_{i+2}-q_i}{q_iq_{i+2}}\right)=\dfrac{(-1)^ia_{i+2}}{q_iq_{i+2}}\end{aligned} \]

那么对于奇偶去分类,可以得到下述结论。

  • 定理 \(1.4\):连分数奇偶项单调性:

对一个确定的连分数,其奇数项渐近分数严格递减,偶数项渐近分数严格递增,奇数项渐近分数总是大于相邻的偶数项渐近分数。

三. 无限连分数

巨坑待补。

上一篇:Two-way Partial AUC优化(ICML-2021,oral)


下一篇:ML:分类预测问题中评价指标(ER/混淆矩阵P-R-F1/ROC-AUC/RP/mAP)简介、使用方法、代码实现、案例应用之详细攻略