OI 超几何函数与Gosper算法入门

前言

据说这个东西是 19~20 初世纪数学研究的重大成果与主要研究方向。但是很可惜,由于世界形势的变化,以德国为中心的的超几何函数、椭圆函数研究开始没落于集中于美国、苏联的数学研究飞向。

第一章

定义超几何函数

F(a1,a2an;b1,b2bm;z)=k0a1k¯ank¯zkb1k¯bnk¯k!

其中 bi 不为非正的整数。

举出若干简单例子:

F(1;1;z)=ez,F(1,1;1;z)=11z

F(a,1;1;z)=k(a+k1k)=1(1z)a

定义高斯超几何函数:

F(a,b;c;z)=k0ak¯bk¯zkck¯k!

一般的形式多少有点吓人。现在我们考察如何把一个函数/和式变成超几何形式:

考虑

F=k0tk,tk=a1k¯ank¯zkb1k¯bnk¯k!

tk+1tk=(k+a1)(k+an)z(k+b1)(k+bm)(k+1)

同时 t0=1。不为一的话在展开式外面乘上应该的 t0 即可。

来试试手:

kn(r+kk)=(r+n+1n)

使 k 最小值为 0,令 k=nk

tk=(r+nk)!r!(nk)!,tk+1tk=nkr+nk=(k+1)(kn)(1)(krn)(k+1)

=F(1,n;nr;1)

F(1,n;nr;1)=r+n+1r+1

根据范德蒙德卷积,有:

k(rk)(snk)=(r+sn)

改写为超几何形式有:

(sn)F(r,n;sn+1;1)=(r+sn)

这时,我们发现可以改写 r,s,n

于是可以得到高斯超几何函数的 z=1 的通用形式:

F(a,b;c;1)=(cab1)!(c1)!(ca1)!(cb1)!

这里 b 为非正的整数,或者 c>a+b(事实上是他们的实部),否则原级数不收敛。

而假设 b=n,有一个看起来更好的形式:

F(a,n;c;1)=(ca)n¯cn¯

事实上,这个东西能秒掉一些组合数题。

这里还有一个库莫尔公式:

F(a,b;1a+b;1)=(b/2)!b!(ba)b/2_

在特殊情况有:

F(1c2n,2n;c;1)=(1)n(2n)!(c1)!n!(c+n1)!,nZ+

还有一个可以由之前某道组合例题推广的Saalschütz公式:

F(a,b,n;c,a+bnc+1;1)=(ca)n¯(cb)n¯(c)n¯(cab)n¯

在上述过程中,注意到我们不知道什么是负数的阶乘。所以有必要插入一段关于阶乘的探讨(关于 Γ 函数的更多东西可以移步 欧拉积分)。

对于阶乘函数,有两种本质等价的定义方法:

1z!=limn+(n+zn)nz

z!=Γ(z+1)=0+tzetdt,Real(z)>1

事实上,对于第二种,可以利用 z!=z(z1)! 延拓其定义域。

有余元公式:

Γ(1z)Γ(z)=(z)!Γ(z)=πsinπz=πsinπz

不难发现,z!0 当且仅当 z 为负整数。

第二章

反射定律:

1(1z)aF(a,b;c;z1z)=F(a,cb;c;z)

微分方法:(这里非正式的把算子运算写作乘号)

定义 D 算子为 ddzϑ 算子(vartheta)为 zddz=zD

考察这几种算子的作用:

DF(a1,a2,an;b1,b2bm;z)=k1a1k¯ank¯zk1b1k¯bmk¯(k1)!

=k0a1k+1¯ank+1¯zkb1k+1¯bmk+1¯k!=k0a1(a1+1)k¯an(an+1)k¯zkb1(b1+1)k¯bm(bm+1)k¯k!

=a1anb1bmF(a1+1,,an+1;b1+1,bm+1;z)

那么 ϑ 也就很显然了。

ϑF=k0a1k¯ank¯zkb1k¯bmk¯(k1)!

但如果我们用 ai 去加上 ϑ,就会得到更好的结果(此处认为 ai 算子的作用是 aiF=ai×F)。

(ϑ+ai)=k0(k+ai)a1k¯ank¯zkb1k¯bmk¯k!=aiF(a1ai+1an;b1bm;z)

同样不难发现

(ϑ+bi1)=(bi1)F(a1an;b1bi1,bm;z)

把他们都作用于每个上参数和下参数:

(ϑ+ai)×F=ai×F(a1+1,,an+1;b1,,bm;z)

(ϑ+bi1)×F=(bi1)×F(a1,,an;b11,,bm1;z)

不难发现,上面一行是下面一行的导数。则有:

D(ϑ+bi1)×F=(ϑ+ai)×F

ϑ(ϑ+bi1)×F=z(ϑ+ai)×F

可以证明,满足某个特定这种微分方程的函数是唯一的,就是唯一的超几何函数。

同样可以证明,只有以下形式的微分方程对应 max(n,m+1)=N 的超几何函数。其中 n 是上参数个数,m 是下参数个数。

zN1(βNzαN)F(N)(z)++zN1(β1zα1)F(z)α0F(z)=0

那么可以证明高斯恒等式:

F(2a,2b;a+b+12;z)=F(a,b;a+b+12;4z(1z))

第三章

只用奇技淫巧是不足以称得上成就的。我们有一个 Gosper 算法,可以求出 f(k)δk,其中 f 是超几何项的一般函数类。

这里首先设 F(;;z)kzk[zk]F。对于超几何项求和:

Fkδk=cFk+C

Gosper 算法给出 cF 的各项参数,或说明其不存在。这里 不是求导。

t(k+1)t(k) 是不恒为 0 的有理函数,我们就称 t(k) 为一个超几何项。

第一步:令

t(k+1)t(k)=p(k+1)p(k)q(k)r(k+1)

看起来很没道理。但是他们需要满足这样的条件:

r(k)q(k)任意根的差不是正整数。

考虑构造。先令 p(k)=1。然后按照超几何函数来拆开他们:

q(k)=z(k+ai),r(k)=k(k+bi1)

如果违反了条件,则有 q(k) 整除 (k+A)r(k) 整除 (k+B),且 AB=d>0

则令 q(k)(k+A1)d1_q(k)

此时 q(k+1)q(k) 变化了 k+Ak+B+1,是正确的。

第二步:

求超几何项 ΔT(k)=t(k)

你知道吗?把大象塞进冰箱只需要三步

T(k)=r(k)s(k)t(k)p(k)

此时,

t(k)=T(k+1)T(k)=r(k+1)s(k+1)t(k+1)p(k+1)r(k)s(k)t(k)p(k)

注意到

t(k+1)p(k+1)=t(k)p(k)q(k)r(k+1)

t(k)=q(k)s(k+1)t(k)p(k)r(k)s(k)t(k)(k)

那么

p(k)=q(k)s(k+1)r(k)s(k)

假设 T 是超几何项,那么显然 s 是多项式的商;可以依据前面的条件进一步证明,s 就是多项式。

下试证明这个结论。

不妨设 s(k)=f(k)g(k),且 f,g 没有公共根。

g(k) 为常数,那么结论得证;否则,设 (k+β)g(k) 的一因式,使得 N 最大。

其中N 为最大的,使 (k+β+N1)g(k) 因式的正整数。显然 N=1 时成立。

那么 g(β)=g(1Nβ)=0

p(k)=q(k)s(k+1)r(k)s(k) 两边同时乘上 g(k)g(k+1),得到:

p(k)g(k)g(k+1)=q(k)f(k+1)g(k)r(k)g(k+1)f(k)

k=β,得到 r(β)g(1β)f(β)=0

注意到 f(β)g(β)=0,且 g(1β)0,因为如果其为零 N 不满足最大性质。

r(β)=0

k=βN,得到 q(βN)f(1βN)g(βN)=0

同样的,可知 q(βN)=0。注意到 β(βN)=N,为正整数。

r(k)q(k) 存在差为 N 的根。不符合前设。

那么可以写出 s 的表达式:

s(k)=i=0daiki

那么如何确定 d 呢?

改写 p(k)=q(k)s(k+1)r(k)s(k) 为:

2p(k)=(q(k)r(k))(s(k+1)+s(k))+(q(k)+r(k))(s(k+1)s(k))

Q(k)=q(k)r(k),R(k)=q(k)+r(k)

容易发现,若 degQdegR,则 degs=degpdegQ

如果 degQ<degR=d,则 degQ=d1

[kd]R(k)=A,[kd1]Q(k)=B,[kd]s(k)=C

则有 [kd+d1]右式=(BdC+2AC)

如果 Bd+2A0,那么 degs=degpdegQ

否则,d=2AB。这两种可能都是合法的,但是第一种情况满足就不需要考虑第二种。

那么只需要带入 p(k)=q(k)s(k+1)r(k)s(k) 若干个值,得到一个线性方程组,然后求出结果。

下面证明

(nk)δk

(其中 n 是非负整数)不存在封闭形式。

t(k)=(nk)=n!(nk)!k!

那么 t(k+1)t(k)=nkk+1

p(k)=1,q(k)=nk,r(k)=k

于是

T(k)=k(nk)s(k)nk

Q(k)=n2k,R(k)=n

于是 degs=degpdegQ=1

显然,deg 的值域为 N,所以不能求出其封闭形式。

唯一略显遗憾的是,绝大部分题目的最后结果并不是一个封闭形式,所以在 OI 中应用并不广泛根本没用

posted @   British_Union  阅读(835)  评论(4编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示