前言

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

第一章

定义超几何函数

\[F(a_1,a_2\dots a_n;b_1,b_2\dots b_m;z)=\sum_{k\ge 0}\frac{a_1^{\overline{k}}\dots a_n^{\overline {k}}z^k}{b_1^{\overline k}\dots b_n^{\overline k}k!}
\]

其中 \(b_i\) 不为非正的整数。

举出若干简单例子:

\[F(1;1;z)=e^z,F(1,1;1;z)=\frac{1}{1-z}
\]
\[F(a,1;1;z)=\sum_k\binom{a+k-1}{k}=\frac{1}{(1-z)^a}
\]

定义高斯超几何函数:

\[F(a,b;c;z)=\sum_{k\ge 0}\frac{a^{\overline{k}}b^{\overline {k}}z^k}{c^{\overline k}k!}
\]

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

考虑

\[F=\sum_{k\ge 0}t_k,t_k=\frac{a_1^{\overline{k}}\dots a_n^{\overline {k}}z^k}{b_1^{\overline k}\dots b_n^{\overline k}k!}
\]
\[\frac{t_{k+1}}{t_k}=\frac{(k+a_1)\dots (k+a_n)z}{(k+b_1)\dots(k+b_m)(k+1)}
\]

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

来试试手:

\[\sum_{k\le n}\binom{r+k}{k}=\binom{r+n+1}{n}
\]

使 \(k\) 最小值为 \(0\),令 \(k=n-k\)。

\[t_k=\frac{(r+n-k)!}{r!(n-k)!},\frac{t_{k+1}}{t_k}=\frac{n-k}{r+n-k}=\frac{(k+1)(k-n)(1)}{(k-r-n)(k+1)}
\]
\[=F(1,-n;-n-r;1)
\]
\[\therefore F(1,-n;-n-r;1)=\frac{r+n+1}{r+1}
\]

根据范德蒙德卷积,有:

\[\sum_k \binom{r}{k}\binom{s}{n-k}=\binom{r+s}{n}
\]

改写为超几何形式有:

\[\binom{s}{n}F(-r,-n;s-n+1;1)=\binom{r+s}{n}
\]

这时,我们发现可以改写 \(r,s,n\)。

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

\[F(a,b;c;1)=\frac{(c-a-b-1)!(c-1)!}{(c-a-1)!(c-b-1)!}
\]

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

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

\[F(a,-n;c;1)=\frac{(c-a)^{\overline n}}{c^{\overline n}}
\]

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

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

\[F(a,b;1-a+b;-1)=\frac{(b/2)!}{b!}(b-a)^{\underline{b/2}}
\]

在特殊情况有:

\[F(1-c-2n,-2n;c;-1)=(-1)^n\frac{(2n)!(c-1)!}{n!(c+n-1)!},n\in\mathbb{Z}^+
\]

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

\[F(a,b,-n;c,a+b-n-c+1;1)=\frac{(c-a)^{\overline n}(c-b)^{\overline n}}{(-c)^{\overline n}(c-a-b)^{\overline n}}
\]

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

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

\[\frac{1}{z!}=\lim_{n\to +\infty}\binom{n+z}{n}n^{-z}
\]
\[z!=\Gamma(z+1)=\int_{0}^{+\infty}t^ze^{-t}\text{d}t,\text{Real}(z)>-1
\]

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

有余元公式:

\[\Gamma(1-z)\Gamma(z)=(-z)!\Gamma(z)=\frac{\pi}{\sin\pi z}=\frac{\pi}{\sin\pi z}
\]

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

第二章

反射定律:

\[\frac{1}{(1-z)^a}F(a,b;c;\frac{-z}{1-z})=F(a,c-b;c;z)
\]

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

定义 \(D\) 算子为 \(\dfrac{d}{dz}\),\(\vartheta\) 算子(vartheta)为 \(z\dfrac{d}{dz}=zD\)。

考察这几种算子的作用:

\[DF(a_1,a_2,\dots a_n;b_1,b_2\dots b_m;z)=\sum_{k\ge 1}\frac{a_1^{\overline k}\dots a_n^{\overline k}z^{k-1}}{b_1^{\overline k}\dots b_m^{\overline k}(k-1)!}
\]
\[=\sum_{k\ge 0}\frac{a_1^{\overline {k+1}}\dots a_n^{\overline {k+1}}z^{k}}{b_1^{\overline {k+1}}\dots b_m^{\overline {k+1}}k!}=\sum_{k\ge 0}\frac{a_1(a_1+1)^{\overline {k}}\dots a_n(a_n+1)^{\overline {k}}z^{k}}{b_1(b_1+1)^{\overline {k}}\dots b_m(b_m+1)^{\overline {k}}k!}
\]
\[=\frac{a_1\dots a_n}{b_1\dots b_m}F(a_1+1,\dots ,a_n+1;b_1+1\dots,b_m+1;z)
\]

那么 \(\vartheta\) 也就很显然了。

\[\vartheta F=\sum_{k\ge 0}\frac{a_1^{\overline k}\dots a_n^{\overline k}z^{k}}{b_1^{\overline k}\dots b_m^{\overline k}(k-1)!}
\]

但如果我们用 \(a_i\) 去加上 \(\vartheta\),就会得到更好的结果(此处认为 \(a_i\) 算子的作用是 \(a_iF=a_i\times F\))。

\[(\vartheta +a_i)=\sum_{k\ge 0}\frac{(k+a_i)a_1^{\overline k}\dots a_n^{\overline k}z^{k}}{b_1^{\overline k}\dots b_m^{\overline k}k!}=a_iF(a_1\dots a_i+1\dots a_n;b_1\dots b_m;z)
\]

同样不难发现

\[(\vartheta +b_i-1)=(b_i-1)F(a_1\dots a_n;b_1\dots b_i-1\dots ,b_m;z)
\]

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

\[\prod(\vartheta+a_i)\times F=\prod a_i\times F(a_1+1,\dots ,a_n+1;b_1,\dots,b_m;z)
\]
\[\prod(\vartheta+b_i-1)\times F=\prod (b_i-1)\times F(a_1,\dots ,a_n;b_1-1,\dots,b_m-1;z)
\]

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

\[D\prod(\vartheta+b_i-1)\times F=\prod(\vartheta+a_i)\times F
\]
\[\vartheta\prod(\vartheta+b_i-1)\times F=z\prod(\vartheta+a_i)\times F
\]

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

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

\[z^{N-1}(\beta_N-z\alpha_N)F^{(N)}(z)+\dots+z^{N-1}(\beta_1-z\alpha_1)F'(z)-\alpha_0F(z)=0
\]

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

\[F(2a,2b;a+b+\frac{1}{2};z)=F(a,b;a+b+\frac{1}{2};4z(1-z))
\]

第三章

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

这里首先设 \(F(\dots;\dots;z)_k\) 为 \(z^k[z^k]F\)。对于超几何项求和:

\[\sum F_k\delta k=cF'_k+C
\]

Gosper 算法给出 \(c\) 和 \(F'\) 的各项参数,或说明其不存在。这里 \('\) 不是求导。

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

第一步:令

\[\frac{t(k+1)}{t(k)}=\frac{p(k+1)}{p(k)}\frac{q(k)}{r(k+1)}
\]

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

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

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

\[q(k)=z\prod(k+a_i),r(k)=k\prod(k+b_i-1)
\]

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

则令 \(q(k)(k+A-1)^{\underline{d-1}} \to q(k)\)。

此时 \(\dfrac{q(k+1)}{q(k)}\) 变化了 \(\dfrac{k+A}{k+B+1}\),是正确的。

第二步:

求超几何项 \(\Delta T(k)=t(k)\)。

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

令 \(T(k)=\dfrac{r(k)s(k)t(k)}{p(k)}\)

此时,

\[t(k)=T(k+1)-T(k)=\frac{r(k+1)s(k+1)t(k+1)}{p(k+1)}-\frac{r(k)s(k)t(k)}{p(k)}
\]

注意到

\[\frac{t(k+1)}{p(k+1)}=\frac{t(k)}{p(k)}\frac{q(k)}{r(k+1)}
\]

\[t(k)=\frac{q(k)s(k+1)t(k)}{p(k)}-\frac{r(k)s(k)t(k)}{(k)}
\]

那么

\[p(k)=q(k)s(k+1)-r(k)s(k)
\]

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

下试证明这个结论。

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

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

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

那么 \(g(-\beta)=g(1-N-\beta)=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=-\beta\),得到 \(r(-\beta)g(1-\beta)f(-\beta)=0\)。

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

故 \(r(-\beta)=0\)。

令 \(k=-\beta-N\),得到 \(q(-\beta-N)f(1-\beta-N)g(-\beta-N)=0\)。

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

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

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

\[s(k)=\sum_{i=0}^da_ik^i
\]

那么如何确定 \(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)\)。

容易发现,若 \(\deg Q\ge \deg R\),则 \(\deg s=\deg p-\deg Q\)。

如果 \(\deg Q<\deg R=d'\),则 \(\deg Q=d'-1\)。

设 \([k^{d'}]R(k)=A,[k^{d'-1}]Q(k)=B,[k^d]s(k)=C\)。

则有 \([k^{d+d'-1}]\)右式\(=(BdC+2AC)\)。

如果 \(Bd+2A\neq 0\),那么 \(\deg s=\deg p-\deg Q\)。

否则,\(d=\dfrac{-2A}{B}\)。这两种可能都是合法的,但是第一种情况满足就不需要考虑第二种。

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

下面证明

\[\sum\binom{n}{k}\delta k
\]

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

\[t(k)=\binom{n}{k}=\frac{n!}{(n-k)!k!}
\]

那么 \(\dfrac{t(k+1)}{t(k)}=\dfrac{n-k}{k+1}\)

设 \(p(k)=1,q(k)=n-k,r(k)=k\)。

于是

\[T(k)=\frac{k\binom{n}{k}s(k)}{n-k}
\]

有 \(Q(k)=n-2k,R(k)=n\)。

于是 \(\deg s=\deg p-\deg Q=-1\)。

显然,\(\deg\) 的值域为 \(\mathcal{N}\),所以不能求出其封闭形式。

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

OI 超几何函数与Gosper算法入门的更多相关文章

  1. 【转】 SVM算法入门

    课程文本分类project SVM算法入门 转自:http://www.blogjava.net/zhenandaci/category/31868.html (一)SVM的简介 支持向量机(Supp ...

  2. 三角函数计算,Cordic 算法入门

    [-] 三角函数计算Cordic 算法入门 从二分查找法说起 减少乘法运算 消除乘法运算 三角函数计算,Cordic 算法入门 三角函数的计算是个复杂的主题,有计算机之前,人们通常通过查找三角函数表来 ...

  3. 循环冗余校验(CRC)算法入门引导

    目录 写给嵌入式程序员的循环冗余校验CRC算法入门引导 前言 从奇偶校验说起 累加和校验 初识 CRC 算法 CRC算法的编程实现 前言 CRC校验(循环冗余校验)是数据通讯中最常采用的校验方式.在嵌 ...

  4. 【算法入门】广度/宽度优先搜索(BFS)

    广度/宽度优先搜索(BFS) [算法入门] 1.前言 广度优先搜索(也称宽度优先搜索,缩写BFS,以下采用广度来描述)是连通图的一种遍历策略.因为它的思想是从一个顶点V0开始,辐射状地优先遍历其周围较 ...

  5. (转)三角函数计算,Cordic 算法入门

    由于最近要使用atan2函数,但是时间上消耗比较多,因而网上搜了一下简化的算法. 原帖地址:http://blog.csdn.net/liyuanbhu/article/details/8458769 ...

  6. 【转】循环冗余校验(CRC)算法入门引导

    原文地址:循环冗余校验(CRC)算法入门引导 参考地址:https://en.wikipedia.org/wiki/Computation_of_cyclic_redundancy_checks#Re ...

  7. LDA算法入门

    http://blog.csdn.net/warmyellow/article/details/5454943 LDA算法入门 一. LDA算法概述: 线性判别式分析(Linear Discrimin ...

  8. 贝叶斯公式由浅入深大讲解—AI基础算法入门

    1 贝叶斯方法 长久以来,人们对一件事情发生或不发生的概率,只有固定的0和1,即要么发生,要么不发生,从来不会去考虑某件事情发生的概率有多大,不发生的概率又是多大.而且概率虽然未知,但最起码是一个确定 ...

  9. 贝叶斯公式由浅入深大讲解—AI基础算法入门【转】

    本文转载自:https://www.cnblogs.com/zhoulujun/p/8893393.html 1 贝叶斯方法 长久以来,人们对一件事情发生或不发生的概率,只有固定的0和1,即要么发生, ...

  10. 模式识别之Earley算法入门详讲

    引言:刚学习模式识别时,读Earley算法有些晦涩,可能是自己太笨.看了网上各种资料,还是似懂非懂,后来明白了,是网上的前辈们境界太高,写的最基本的东西还是非常抽象,我都领悟不了,所以决定写个白痴版的 ...

随机推荐

  1. 缓存之ehcache 之使用

    1. EHCache 的特点,是一个纯Java ,过程中(也可以理解成插入式)缓存实现,单独安装Ehcache ,需把ehcache-X.X.jar 和相关类库方到classpath中.如项目已安装了 ...

  2. kafka之介绍

    Kafka 由于高吞吐量.可持久化.分布式.支持流数据处理等特性而被广泛应用.但当前关于Kafka原理及应用的相关资料较少,在我打算编写本文时,还没有见到中文版本的Kafka相关书籍,对于初学者甚至是 ...

  3. HZNUOJ-1503公路乘车--DP

    题目传送门:https://acm.hznu.edu.cn/OJ/problem.php?id=1503 题解:我们发现后一状态由前一状态决定,即后一公里由前面十公里的状态决定,经典 dp,我们直接列 ...

  4. 实用&free的音频格式转化工具

    最近写的博客居然是7年前,今天给小朋友下载歌曲时在网上搜了好多格式转化的方法,挨个尝试了之后发现好多是收费的,或者不支持某种格式转化的,但还是大浪淘沙到一些实用的工具.分享给大家参考,同时也督促自己不 ...

  5. 有关IOS内存读写冲突

    有关IOS内存读写冲突 在写内存相关代码时,获取已使用内存代码中报错 let hostPort: mach_port_t = mach_host_self() var host_size = mach ...

  6. 【C#】【平时作业】习题-11-ADO.NET

    目录 选择题 简述并举例说明 什么是ADO.NET? 什么是连接字符串? connection对象的作用? commmand对象的作用? dataAdapter对象的作用? DataReader对象的 ...

  7. 鲲鹏cpu

    cat /etc/openEuler-release sudo dmidecode -t processor |grep Version   lscpu  

  8. Go channel 原理

    作用 Go 语言的 channel 是一种 goroutine 之间的通信方式,它可以用来传递数据,也可以用来同步 goroutine 的执行. chan 是 goroutine 之间的通信桥梁,可以 ...

  9. Qt音视频开发13-视频解码线程基类的设计

    一.前言 这个解码线程基类的设计,是到目前为止个人觉得自己设计的最好的基类之一,当然也不是一开始就知道这样设计,没有个三五年的摸爬滚打以及社会的毒打,是想不到要这样设计的,一方面是要不断提炼各种视频类 ...

  10. Qt开源作品34-qwt无需插件源码

    一.前言 QWT,全称是Qt Widgets for Technical Applications,是一个基于LGPL版权协议的开源项目,可生成各种统计图.为具有技术专业背景的程序提供GUI组件和一组 ...