前言

据说这个东西是 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. Graylog之基本使用

    文档:https://docs.graylog.org/en/3.0/ Graylog Sidecar是一个轻量级配置管理系统,适用于不同的日志收集器,也称为后端.Graylog节点充当包含日志收集器 ...

  2. Javascript 常用封装(二)

    1.字符串占位宽度 计算占位宽度:字符串的占位宽度除了涉及到具体的字符串内容,还与字体大小有关,可以将其放入Dom中来获取实际占位宽度 //计算字符串的占位宽度 function getTextWid ...

  3. ehcarts 实战小计-1

    需求 展示未来未来36个月(等分为3个时间范围)的经济效益趋势,3个等分时间区域在趋势图上方常显,不同时间区域之间通过灰色虚线间隔开: 鼠标hover趋势图每个1/3区域,对应区域会有以下3个效果: ...

  4. github访问不了解决方法

    github突然无法访问,解决办法如下-迷恋自留地 首先通过网址https://tool.chinaz.com/dns?type=a&host=github.com 修改hosts文件,win ...

  5. 鸿蒙应用开发从入门到入行 - 篇7:http网络请求

    鸿蒙应用开发从入门到入行 第七篇 - http网络请求 导读:在本篇文章里,您将掌握鸿蒙开发工具DevEco的基本使用.ArkUI里的基础组件,并通过制作一个简单界面掌握使用 HarmonyOS - ...

  6. 给我2分钟,保证教会你在Vue3中实现一个定高的虚拟列表

    前言 虚拟列表对于大部分一线开发同学来说是一点都不陌生的东西了,有的同学是直接使用第三方组件.但是面试时如果你简历上面写了虚拟列表,却给面试官说是通过三方组件实现的,此时空气可能都凝固了.所以这篇文章 ...

  7. Ubuntu sudo nopasswd方法

    1 运行 visudo 2 假设用户名为yourname, 则在最后一行添加: # User privilege specificationroot ALL=(ALL:ALL) ALL# Member ...

  8. java - 正则表达式替换Spring @RequestMapping URL中的@PathVariable值

    我在接口(只是为了保存常量)中有Spring MVC URL的定义,例如: String URL_X = "/my-url/{id:[0-9]*}"; String URL_Y = ...

  9. macOS:无法打开“XXXX”,因为Apple无法检查其是否包含恶意软件。的解决办法

    今天在安装node.js的时候出现了如下错误 从网上找到两种解决方案: 第一种(不建议)在终端输入以下命令即可 sudo spctl --master-disable1按回车键,随后提醒你输入电脑密码 ...

  10. Qt编写的项目作品15-皮肤生成器+UIDemo

    一.功能特点 自带17套精美皮肤样式,其中包括黑色.灰色.扁平等. 皮肤生成器只需要简单几步就可以生成一套自定义的皮肤. 自带了26种uidemo,非常漂亮美观,涵盖了主界面布局.菜单切换等各种效果, ...