记Gosper-Zeilburger算法的理解(具体数学)

来来来,这个玩意我研究得断断续续,有一段时间了,现在考虑一下思路

引入

要研究这个东西,首先要先知道这个东西是用来干什么的

简单来说,考虑一个函数 \(t(k)\),我们想要求 \(\sum_{k=a}^b t(k)\) 是多少(自然默认\(a\le b\)

就例如 \(t(k)=\dfrac{1}{k(k+1)}\)

你说害,我会裂项!然后写出一个:

\[\dfrac{1}{k(k+1)}=\dfrac{1}{k}-\dfrac{1}{k+1} \]

所以有

\(\begin{aligned}\sum\limits_{k=a}^b \dfrac{1}{k(k+1)}&=\sum\limits_{k=a}^b \dfrac{1}{k}-\dfrac{1}{k+1}\\&=\sum\limits_{k=a}^b \dfrac{1}{k}- \sum\limits_{k=a}^b\dfrac{1}{k+1}\\&=\sum\limits_{k=a}^b \dfrac{1}{k}- \sum\limits_{k=a+1}^{b+1}\dfrac{1}{k}\\&=\dfrac{1}{a}-\dfrac{1}{b+1}\end{aligned}\)

系统一点来写:

\(\begin{aligned}\sum\limits_{k=a}^b t(k)&=\sum\limits_{k=a}^b \left[T(k+1)-T(k)\right]\\&=\sum\limits_{k=a}^b T(k+1)-\sum\limits_{k=a}^bT(k)\\&=\sum\limits_{k=a+1}^{b+1} T(k)-\sum\limits_{k=a}^bT(k)\\&=T(b+1)-T(a)\end{aligned}\)

会想到上面的例子里面 \(T(k)=\dfrac{1}{k}\)

——那就不对啦!\(T(k)=-\dfrac{1}{k}\) 才对

这个时候我们看见,这个方法的关键就是找到那个满足 \(T(k+1)-T(k)=t(k)\)\(T(k)\),这也是裂项思想里最关键的部分

但是不是什么东西都有这个对应的 \(T(k)\)的封闭形式,这也就对应前缀和封闭形式不存在

这很好理解,如果 \(S(n)=\sum\limits_{k=1}^n t(k)\) 中的 \(S(n)\) 有封闭形式,应有 \(S(n+1)-S(n)=t(n+1)\)

那就记录 \(T(n)=S(n-1)\),这样就有 \(t(n)=T(n+1)-T(n)\)了,那就不应该说没有对应的 \(T(k)\) 的封闭形式

所以你可能会问:有哪一些东西可以裂项呢?裂出来又是什么东西?

前置内容:超几何级数

好好好我知道这非常突然,起码我读具体数学时候从5.4读到5.5后我就有点小蒙了

为什么要提到这个呢?我们先来看一些简单的例子:

我们有数列 \({a_n}\),在高中里它常见的封闭形式有哪些?

因为我们讨论的大框架的是前缀和,所以我们就不考虑什么 \({a_n}\) 可以拆成 \({\lambda b_n+\mu c_n}\) 然后 \({b_n}\)\({c_n}\) 形式更简单的情况了,我们就把注意力放在这些形式更简单的情况

有什么呢?

  • 常数 \(a_n=c\)
  • 非零整数幂函数 \(a_n=n^p(p \in \mathbb{Z})\)
  • 指数函数 \(a_n=c^n\)

这些可太简单了,我想你肯定会这些封闭形式的(第二行的会伯努利数就行)

最大的问题是:我们经常看见的不是这些,而是一些更复杂的东西:

  • \(\frac{2^{k+1}}{k+1}-\frac{2^{k}}{k}=\frac{2^k\cdot(k-1)}{k(k+1)}\)

  • \(\frac{k+1}{2^{k+1}}-\frac{k}{2^{k}}=\frac{1-k}{2^{k+1}}\)

我想第一个东西就很抽象,尽管一般人可以通过观察分母来猜到这一条路

超几何级数则是这么多东西的一个通式,这个记号就很离谱:

\[F\left(\begin{array}{c|} a_1,a_2,\dots ,a_n\\b_1,b_2,\dots,b_m \end{array}\ z\right) =\sum_{k\ge 0} \dfrac{\prod_{i=1}^{n} a_i^{\overline{k}}}{\prod_{i=1}^{m} b_i^{\overline{k}}} \cdot\dfrac{z^k}{k!} \]

其中的 \(a^{\overline{k}} = a\cdot(a+1)\cdot\dots\cdot(a+k-1)= \prod_{i=0}^{k-1} (a+i)\),称作上升幂(尽管大家来看这篇文章应当是有这类基础知识了,但是以免劝退还是注明了)

注意这里的 \(F\) 本身就是一个和式的结果,一般记

\[F\left(\begin{array}{c|} a_1,a_2,\dots ,a_n\\b_1,b_2,\dots,b_m \end{array}\ z\right)_k\]

是它的第 \(k\) 项 (对对对\(k\in \mathbb{N}\),也就是从 \(0\) 开始,尽管只要没有特殊情况超几何级数的第 \(0\) 项永远是 \(1\)

这个东西最特别的地方是啥呢?为了后期符号的简便,还是用 \(t_k\) 代表某个超几何级数的第 \(k\) 项吧

尝试给相邻的两项做商:

\(\dfrac{t_{k+1}}{t_k}=\dfrac{\dfrac{\prod_{i=1}^{n} a_i^{\overline{k+1}}}{\prod_{i=1}^{m} b_i^{\overline{k+1}}} \cdot\dfrac{z^{k+1}}{(k+1)!}}{\dfrac{\prod_{i=1}^{n} a_i^{\overline{k}}}{\prod_{i=1}^{m} b_i^{\overline{k}}} \cdot\dfrac{z^k}{k!}}=\dfrac{\prod_{i=1}^{n} a_i^{\overline{k+1}}}{\prod_{i=1}^{n} a_i^{\overline{k}}}\cdot\dfrac{\prod_{i=1}^{m} b_i^{\overline{k}}}{\prod_{i=1}^{m} b_i^{\overline{k+1}}}\cdot\dfrac{z}{k+1}\)

而我们知道:

\(\dfrac{\prod_{i=1}^{n} a_i^{\overline{k+1}}}{\prod_{i=1}^{n} a_i^{\overline{k}}}=\prod\limits_{i=1}^n\dfrac{\prod_{j=0}^{k} (a_i+j)}{\prod_{j=0}^{k-1} (a_i+j)}=\prod\limits_{i=1}^n(a_i+k)\)

故对于原始式有:

\(\dfrac{t_{k+1}}{t_k}=\prod\limits_{i=1}^n(a_i+k)\cdot\left[\prod\limits_{i=1}^m(b_i+k)\right]^{-1}\cdot\dfrac{z}{k+1}=\dfrac{(k+a_1)(k+a_2)\cdots(k+a_n)z}{(k+b_1)(k+b_2)\cdots(k+b_m)(k+1)}\)

换言之,如果对于一个数列 \({t_n}\),它有封闭的形式,并且 \(\dfrac{t_{k+1}}{t_k}\) 是一个有理分式,即一个分子,分母均为多项式的分式,那么我们就可以把数列 \({t_n}\) 对应到一个超几何级数上

如果这个有理分式的分母里没有 $(k+1)$ 怎么说? 你上下同时乘上一个不就好了

那么除去我们刚刚讨论的那几个形式简单的情况,还有什么人们熟知的情况呢?

譬如阶乘,就是一个例子,还有指数固定的上升/下降幂,或者由此联想得到的二项式系数,也就是组合数 \(C_n^m\)\(\dbinom{n}{m}\),这些东西都包含在超几何级数的范畴里

其实这个问题更多的出现在一系列二项式求和的问题里,又或者是如同W.W.索耶所言的“……大部分函数都被 \(F(a,b;c;z)\)(即 \(F\left(\begin{array}{c|}a,b\\c\end{array}\ z\right)\))这个符号所覆盖”一样

总之,我们来看一看对于这种函数有什么方便的方式来解出这些数列与级数前缀和的简单形式

又或者说我们希望求出一个同样属于超几何级数的简单形式不然好像这个东西就算写出来也不见得有些用处

一些前置的限制

当然,眼光都放到这么大的范围了,为了尽量让我们在讨论一个合法的东西,还是说明一下:我们暂时不考虑诸如负数的阶乘,上升幂,复数的阶乘或者各种奇奇怪怪的东西怎么处理,先把我们的眼光放在正实数与 \(0\)

尽管你可能知道什么 \(\operatorname{Gamma}\) 函数一类的定义拓展可以解决这些事

同样,考虑到对于一个多项式函数,其值不为 \(0\) 的情况远多余其值为 \(0\) 的情况,所以先不考虑分母为 \(0\) 的不合法情况

\(\text{Gosper}\) 算法

那么我们就直接看问题的具体表述:

给定一个超几何级数数列 \(t(k)\),求出它的离散积分 \(T(k)\)超几何级数的某常数倍表示,或者说明此形式不存在

离散积分:\(t(k)\) 的离散积分为 \(T(k) \Rightarrow t(k)=T(k+1)-T(k)\)(啊你就把最后的 \(+C\) 暂时不考虑吧,或者默认 \(+C\) 中的 \(C\)\(C=0\)

我们的算法就在这样一个情景下运行

我毫无头猪

emm,\(t(k)=T(k+1)-T(k)\),或者写成 \(\dfrac{T(k+1)}{t(k)}-\dfrac{T(k)}{t(k)}=1\)

嗯,这个式子肯定是一个有理分式减去有理分式的类型,我们尝试用几个多项式变量来代替 \(T\) 这一个有理分式变量

好,开始了,设:\(\dfrac{T(k)}{t(k)}=\dfrac{F(k)}{G(k)}\),其中 \(F,G\) 均为多项式

再设:\(\dfrac{T(k+1)}{t(k)}=\dfrac{f(k)}{g(k)}\),其中 \(f,g\) 均为多项式

\(\because\) 我们有 \(\dfrac{T(k+1)}{t(k)}=\dfrac{T(k+1)*t(k+1)}{t(k+1)*t(k)}=\dfrac{F(k+1)}{G(k+1)}\cdot\dfrac{t(k+1)}{t(k)}\)

\(\therefore \dfrac{t(k+1)}{t(k)}=\dfrac{f(k)}{g(k)}\cdot\dfrac{G(k+1)}{F(k+1)}\)

你会说:变量一下从一个变成了四个,比设 \(T(k)=\dfrac{f(k)}{g(k)}\) 还要不合算,That remains to be seen

好吧,我们还是假设我们可以通分,也就是假设 \(g(k)=G(k)\)

那就有 \(\dfrac{t(k+1)}{t(k)}=\dfrac{G(k+1)f(k)}{G(k)F(k+1)}\)\(G(k)=f(k)-F(k)\)

于是我们就发现了:我们要回巧妙的选取这三个函数使其满足上面两个式子,这样我们就能求出 \(T(k)=\dfrac{F(k)t(k)}{G(k)}\)

尽管有了一个方向,我们还是发现有些麻烦

怎么求得函数?

不妨假设我们已经选好了一个 \(G(k)\),接下来我们的目的就是要找到一对合适的 \(f(k)\)\(F(k)\),或者说明这样的一对不存在

想到这样一个因素:\(\dfrac{t(k+1)}{t(k)}=\dfrac{fz(k)}{fm(k)}=\dfrac{G(k+1)f(k)}{G(k)F(k+1)}\),其中 \(fz,fm\) 都是关于 \(k\) 的多项式

说明

\[\left\{\begin{matrix}fz(k)a(k)s(k)&=G(k+1)f(k)\\fm(k)a(k)s(k)&=G(k)F(k+1)\end{matrix}\right. \]

其中出现的多项式 \(a(k),s(k)\) 是由于考虑到选取的 \(G(k)\) 可能是原来的分式 \(\dfrac{fz(k)}{fm(k)}\) 上下有同乘的多项式,或者 \(F(k+1)\)\(f(k)\) 如此操作导致的

那我们就有 \(\hat{f}(k)=f(k)/s(k)=\dfrac{fz(k)a(k)}{G(k+1)}\)\(\hat{F}(k+1)=F(k+1)/s(k)=\dfrac{fm(k)a(k)}{G(k)}\)

此时我们就把 \(a(k),G(k)\) 都定下来就好,因为 \(a(k)\) 是配合 \(G(k)\) 一起操作的,那现在我们的自由度是操作 \(s(k)\) 一项,需要满足的是:

\(G(k)=\hat{f}(k)s(k)-\hat{F}(k)s(k-1)\)

\(s(k) := s(k+1)\) (反正只是整体位移一位,为了对齐一下书上的形式)

整理得:\(G(k)=\hat{f}(k)s(k+1)-\hat{F}(k)s(k)\)

好好好,我们要开始讨论了,这比较复杂,尽管在此时的条件下我们的除了 \(s\) 之外的三个多项式都是已知的

简单的讨论

考虑这种情况先尝试硬凑,也就是待定系数……

嘶,不对,我们,并不知道 \(s\) 的次数是多少

那就只能搞点骚操作了,将原式变为:

\(\begin{aligned}2G(k)&=2\hat{f}(k)s(k+1)-2\hat{F}(k)s(k)\\&=[\hat{f}(k)-\hat{F}(k)][s(k+1)+s(k)]+[\hat{f}(k)+\hat{F}(k)][s(k+1)-s(k)]\end{aligned}\)

简化一下,记 \(Q(k)=\hat{f}(k)-\hat{F}(k),R(k)=\hat{f}(k)-\hat{F}(k)\)

所以 \(2G(k)=Q(k)[s(k+1)+s(k)]+R(k)[s(k+1)-s(k)]\)

这步操作的意义是什么呢?因为 \(s(k+1)+s(k)\) 的次数肯定比 \(s(k+1)-s(k)\) 恰好大 \(1\),如果我们将多项式 \(0\) 的次数记作 \(-1\)

所以,不妨把任意多项式 \(a\) 的次数记作 \(\deg a\),特别的,记 \(\deg 0=-1\)

那么:

  1. \(\deg Q>\deg R-1\)

那不用说,\(\deg \left\{ Q(k)[s(k+1)+s(k)]\right\}\ge \deg\left\{R(k)[s(k+1)-s(k)]\right\}\),就应该有 \(\begin{aligned}\deg 2G&=\deg G\\&=\max(\deg \left\{ Q(k)[s(k+1)+s(k)]\right\},\deg\left\{R(k)[s(k+1)-s(k)]\right\})\\&=\deg \left\{ Q(k)[s(k+1)+s(k)]\right\}\\&=\deg Q+\deg s\end{aligned}\)

\(\therefore \deg s=\deg G-\deg Q\)

  1. \(\deg Q=\deg R-1\)

这里需要考虑前后两项的最高次系数相反,刚好相互抵消的可能

如果 \(Q(k)=\lambda_1 k^{\deg R-1}+\cdots,R(k)=\lambda_2 k^{\deg R}\)

并且假设我们有 \(s(k)=\sum\limits_{i=0}^{\deg s}\alpha_i k^i\),那么:

\(\begin{aligned}s(k+1)&=\sum\limits_{i=0}^{\deg s}\alpha_i (k+1)^i\\&=\sum\limits_{i=0}^{\deg s}\alpha_i \sum\limits_{j=0}^i\dbinom{i}{j}k^j\\&=\sum\limits_{i=0}^{\deg s}\sum\limits_{j=0}^i\alpha_i \dbinom{i}{j}k^j\\&=\sum\limits_{j=0}^{\deg s}\sum\limits_{i=j}^{\deg s}\alpha_i \dbinom{i}{j}k^j\\&=\sum\limits_{j=0}^{\deg s}k^j\sum\limits_{i=j}^{\deg s}\alpha_i \dbinom{i}{j}\end{aligned}\)

所以:

\(s(k+1)-s(k)=\sum\limits_{j=0}^{\deg s}k^j\left[-\alpha_j+\sum\limits_{i=j}^{\deg s}\alpha_i \dbinom{i}{j}\right]\)

观察一些简单的情况,发现对于 \(s(k+1)-s(k)\),当 \(j=\deg s\)\(k^j\) 系数为 \(0\)

\(j=\deg s-1\)\(k^j\) 的系数为 \(-\alpha_j+\alpha_{j+1}\dbinom{j+1}{j}+\alpha_j\dbinom{j}{j}=(\deg s)\alpha_{\deg s}\)

所以对于 \(k^{\deg s+\deg R-1}\) 的项,前一项我们有系数 \(2\lambda_1\alpha_{\deg s}\),后一项则有系数 \(\lambda_2\cdot(\deg s)\alpha_{\deg s}\)

所以必须考虑到 \(\deg s=-\dfrac{2\lambda_1}{\lambda_2}\) 的特殊情况

自然,如果这个值求出来不是个合理的东西(指分数,不是 \(-1\) 的负数,或者求出来 \(-1\)\(s\) 明显不是零)就不需要考虑了

当然,如果 \(\deg s\le\deg G-\deg R+1\) 也同样不用考虑了,因为不然原式右侧有抵消情况的次数就和左侧对不上了

  1. \(\deg Q<\deg R-1\)

那就有 \(\deg G=\deg R+\deg s-1\) 了,也就是 \(\deg s=\deg G-\deg R+1\)

当然,如果这个情况下的 \(\deg s\) 满足了上面的方程也就不用看了

就通过上面三个情况分析即可,如果 \(\deg\) 里有一堆 \(-1\) 就不用这么烦直接看得了(

实际操作的时候还是先看看情况 \(1,3\) 再看看情况 \(2\) 吧,不然计算 \(Q\)\(R\) 还是比较费力的

知道 \(\deg s\) 后直接考虑待定系数法即可,不想手算 \(\deg s=10\) 就交给计算机,顺便解决计算 \(Q\)\(R\) 费力的问题

好的这个问题解决了,但是我们还没解决怎么选 \(G\)\(a\) 的问题

怎么选取函数 \(G\)

我们刚刚说的是,我们已经解决了“选取 \(G\)”的问题,但这本身就很有思考含量:如果我们选的这个 \(G\) 导致最后的方程没有解,是因为 \(T(k)\) 不存在,还是因为我们的选择不优?而且每次都要解一遍待定系数法,这个工作量还是蛮大的

换个方式来表达我们的问题:是否存在一种选取 \(G\) 的方法,保证我们发现方程无解时就可以断定是由于整个 \(T\) 不存在呢?

我们先看看什么情况下求出来的 \(s\) 不是一个多项式,也就是假设 \(s\) 是一个除了多项式以外的东西,那也只能是一个有理分式了

那就假设 \(s(k)=\dfrac{\alpha(k)}{\beta(k)}\),其中 \(\alpha(k),\beta(k)\) 均为多项式并且没有公共的根,带入上面的式子:

\(\begin{aligned} G(k)&&=&\hat{f}(k)s(k+1)-\hat{F}(k)s(k)\\ \ &&=&\hat{f}(k)\cdot\dfrac{\alpha(k+1)}{\beta(k+1)}-\hat{F}(k)\cdot\dfrac{\alpha(k)}{\beta(k)}\\ \Leftrightarrow G(k)\beta(k)\beta(k+1)&&=&\hat{f}(k)\alpha(k+1)\beta(k)-\hat{F}(k)\alpha(k)\beta(k+1)\end{aligned}\)

我们想要证明的就是 \(deg \beta=0\),或者 \(\not\exist \delta\in\mathbb{R},(k-\delta)|\beta(k)\),或者说 \(\forall\delta\in\mathbb{R},(k-\delta)\not|\beta(k)\)

注意到式子中都是 \(k-1,k,k+1\) 的关系,那为了简单一些,我们不妨先从整数环这一个实数加法环的子环入手,在下面的讨论里,我们有自变量 \(\delta\in\mathbb{Z}\)

先看看 \(\beta(\delta)=0\) 的时候会发生什么,因为 \(\alpha\)\(\beta\) 没有公共的根,所以 \(\alpha(\delta)\not=0\)

此时我们可以代入 \(k=\delta\) 到上面的式子里,就有 \(G(k)\cdot 0\cdot \beta(k+1)=\hat{f}(k)\alpha(k+1)\cdot 0-\hat{F}(k)\alpha(k)\beta(k+1)\)

\(\Rightarrow \hat{F}(k)\alpha(k)\beta(k+1)=0 \Rightarrow \hat{F}(k)\beta(k+1)=0\)

同理,我们可以代入 \(k=\delta-1\) 到上面的式子里,就有 \(G(k)\beta(k)\cdot 0=\hat{f}(k)\alpha(k+1)\beta(k)-\hat{F}(k)\alpha(k)\cdot 0\)

\(\Rightarrow \hat{f}(k)\alpha(k+1)\beta(k)=0 \Rightarrow \hat{f}(k)\beta(k)=0\)

或者说:若 \((k-\delta)|\beta(k)\),则 \(\hat{F}(\delta)\beta(\delta+1)=0\)\(\hat{f}(\delta-1)\beta(\delta-1)=0\)

根据逆否命题同样成立,所以:若 \(\hat{F}(\delta)\beta(\delta+1)\not=0\)\(\hat{f}(\delta-1)\beta(\delta-1)\not=0\),则 \((k-\delta)\not|\beta(k)\)

现在假设 \(\hat{F}(k)\) 的整数零点的最大值为 \(F_0\)(如果不存在,就记 \(F_0=-\infin\),为了记号方便,有 \(\forall x\in \mathbb{R},-\infin<x<\infin\)),\(\hat{f}(k)\) 的整数零点的最小值为 \(f_0\)(如果不存在,就记 \(f_0=\infin\)),考虑到 \(\hat{F}(k)\)\(\hat{f}(k)\) 都是多项式函数,所以总有:

\(\left\{\begin{aligned}\forall x>F_0,\hat{F}(k)\not=0\\\forall x<f_0,\hat{f}(k)\not=0\\\end{aligned}\right.\)

\(\beta(k)\) 也同样是一个多项式函数,那么在 \(|\delta|\) 足够大的时候,就必然有 \(\beta(\delta)\not=0\)

根据 \(F_0\) 的定义,如果 \(\delta>F_0\),就有 \(\hat{F}(\delta)\not=0\),从而把这个命题改写为:

\(\delta>F_0 \Rightarrow [\beta(\delta+1)\not=0\Rightarrow\beta(\delta)\not=0]\)

所以由此可知:\(\forall \delta>F_0,\beta(\delta)\not=0\)

对于第二个条件 \(\hat{f}(\delta)\beta(\delta)\not=0 \Rightarrow \beta(\delta+1)\not=0\) 做同样操作,变型为:

\(\delta<f_0 \Rightarrow [\beta(\delta)\not=0\Rightarrow\beta(\delta+1)\not=0]\)

所以 $\forall \delta<f_0,\beta(\delta+1)\not=0 \iff \forall \delta\le f_0,\beta(\delta)\not=0 $

诶,那我只需要满足 \(F_0\le f_0\) 就可以证明 \(\forall \delta\in\mathbb{Z},\beta(\delta)\not=0\)

再把 \(F_0\)\(f_0\) 的定义带回去,就有 \([\forall x\in\{x\in\mathbb{Z}|\hat{F}(x)=0\},\forall y\in\{x\in\mathbb{Z}|\hat{f}(x)=0\},x \le y]\Rightarrow [\forall \delta\in\mathbb{Z},\beta(\delta)\not=0]\)

以此类推,我们可以把实数环拆解为一个整数 \(\delta\) 和一个实数 \(\epsilon\in [0,1)\) 的和,这样,如果我们关注一对实数 \(x=\delta_x+\epsilon_x\in\{x\in\mathbb{R}|\hat{F}(x)=0\},y=\delta_y+\epsilon_y\in\{x\in\mathbb{R}|\hat{f}(x)=0\}\),可以写出几条思路:

  1. 我们比较 \(x,y\) 大小的前提是 \(\epsilon_x=\epsilon_y\),换言之,\(x-y\in\mathbb{Z}\)
  2. 如果前提成立,必须要有 \(x\le y\)

合起来写,就是 \(x-y\not\in\mathbb{N}_{+}\)

总结一下,我们找到了一个保证 \(\deg\beta=0\) 的充分命题:\(\forall x_1,x_2,[\hat{F}(x_1)=0,\hat{f}(x_2)=0 \Rightarrow x_1-x_2\not\in\mathbb{N}_{+}]\)

如果你看了《具体数学》后对这个条件的正负号有疑问 的确,我们的 $\hat{F}$ 对应的是书中的 $r$,$\hat{f}$ 对应的是书中的 $q$,所以乍看之下我们的结论与书中相差一个符号

但需要指出的是,书中的 \(\alpha,\beta\) 两值并不是根,而是根的相反数(因为写的是 \(k+\alpha\),而不是 \(k-\alpha\)

也借此提醒,在实际应用时一定要注意符号!

好的,现在我们已经找到了这个条件,那么只要我们足够聪明,就可以随心找到这个 \(G\)

……但是如果我没有很强大的注意力,怎么办呢?换言之,如果我发现我选完了 \(G\) 之后相应的有一组 \(x_1\)\(x_2\),不满足这个前提,又该怎么办呢?

不着急,我们来看一下怎么 “补救”,假如现在有 \(\hat{F}(x_1)=0,\hat{f}(x_2)=0\and\ x_1-x_2\in\mathbb N_+\),不妨用 \(f'(k)\)\(F'(k)\) 分别表示 \(f(k)/(k-x_2)\)\(F(k)/(k-x_1)\)

那么在原来的式子里,他就长成这样:

\[\dfrac{t(k+1)}{t(k)}=\dfrac{G(k+1)f'(k)(k-x_2)}{G(k)F'(k+1)(k-x_1+1)} \]

如果,\(x_1-x_2=1\),则有 \(k-x_1+1=k-x_2-1+1=k-x_2\),那直接消掉就好

如果,\(x_1-x_2=2\),则有 \(k-x_1+1=k-x_2-2+1=k-x_2-1\),直接取出一个新的 \(\hat G(k)=G(k)\cdot (k-x_2-1)\),原式自然化为 \(\dfrac{t(k+1)}{t(k)}=\dfrac{\hat G(k+1)f'(k)}{\hat G(k)F'(k+1)}\)

如果,\(x_1-x_2=3\),则有 \(k-x_1+1=k-x_2-3+1=k-x_2-2\)

你也许会想到给分式上下同时乘以 \((k-x_2-1)\) 后取出一个新的 \(\hat G(k)=G(k)\cdot (k-x_2-2)(k-x_2-1)\),原式化为 \(\dfrac{t(k+1)}{t(k)}=\dfrac{G(k+1)f'(k)(k-x_2)(k-x_2-1)}{G(k)F'(k+1)(k-x_2-2)(k-x_2-1)}=\dfrac{\hat G(k+1)f'(k)}{\hat G(k)F'(k+1)}\)

通过这种类推,我们想到可以利用上下同时乘上一组数的方式来解决:只要分数线上下同时乘上 \((k-x_1+2)\dots(k-x_2-1)\)

就可以提出一个新的 \(\hat G\)\(\hat G(k)=G(k)\cdot (k-x_1+1)(k-x_1+2)\dots(k-x_2-1)\)

就有:\(\dfrac{t(k+1)}{t(k)}=\dfrac{G(k+1)(k-x_1+2)\dots(k-x_2-1)f'(k)(k-x_2)}{G(k)(k-x_1+2)\dots(k-x_2-1)F'(k+1)(k-x_1+1)}=\dfrac{\hat G(k+1)f'(k)}{\hat G(k)F'(k+1)}\)

这样,我们甚至可以一开始令 \(G_0(k)=1\),然后得到 \(\dfrac{t(k+1)G_0(k)}{t(k)G_0(k+1)}=\dfrac{f_0(k)}{F_0(k+1)}=\dfrac{\Pi_{f_0(\alpha)=0}(k-\alpha)}{\Pi_{F_0(\beta)=0}(k+1-\beta)}\)

然后挑一组 \(\alpha_0,\beta_0\) 满足 \(\beta-\alpha\in\mathbb N_+\),按照上面的方法使得 \(G_1(k)=G_0(k)\cdot\dfrac{(k-\alpha-1)!}{(k-\beta+1)!}\)

重复这个方式,一步一步递推 \(G\) 这个函数列,因为 \(\alpha\)\(\beta\) 总是有限的,所以我们总能在有限步里找到一个最终的 \(G(k)\) 它和对应的 \(\hat f(k),\hat F(k)\) 是满足我们的条件的

Gosper总结

我们已经把整个Gosper算法的流程及原理讲完了,不妨来总结一下它的整个流程总结一下:

  1. 对于超几何级数的通项 \(t(k)\) ,求出 \(\dfrac{t(k+1)}{t(k)}\)
  2. 针对上面的比值对分数线上下都因式分解,假设因式分解得到的根分别构成可重集 \(Up,Dn\),并令 \(G(k):=1\) 接下来重复执行以下操作:
    • \(\exist \alpha\in Up,\beta\in Dn\Rightarrow \beta-\alpha\in\mathbb N_+\),挑出这一组数且将它们由原属集合中删去,并令 \(G(k):=G(k)\cdot\dfrac{(k-\alpha-1)!}{(k-\beta+1)!}\)
  3. 按照等式 \(\dfrac{t(k+1)}{t(k)}=\dfrac{G(k+1)\hat f(k)}{G(k)\hat F(k+1)}\) 整理得出 \(\hat f(k),\hat F(k)\)
  4. 求解多项式方程 \(G(k)=\hat f(k)s(k+1)-\hat F(k)s(k)\)
    • 先讨论 \(s(k)\) 的次数,再具体求解
      • \(s(k)\) 无解,说明 \(t(k)\) 不存在可以用超几何级数的常数倍表示的离散积分
      • \(s(k)\) 存在,代入 \(\dfrac{T(k)}{t(k)}=\dfrac{F(k)}{G(k)}=\dfrac{\hat F(k)s(k)}{G(k)} \Leftrightarrow T(k)=\dfrac{t(k)s(k)\hat F(k)}{G(k)}\)

由此,我们得到了 \(T(k)\)

posted @ 2025-01-29 13:09  The_Euclidea_Witness  阅读(1)  评论(0)    收藏  举报