Preface
高数内容鸽了,看书自己学吧,无能为力了。
生成函数
形式幂级数
对于形如:
这样的多项式我们称之为形式幂级数.
形式幂级数是一个抽象的数学概念,我们从来不指定\(x\)的值,因为其没有确切意义,也不关心求和的收敛与发散问题,只关心形式幂级数的系数,也就是\(a_i\)的值.
普通型生成函数
定义
对于一个数列\(\{f_i\}\),我们定义它的普通型生成函数(\(\mathrm{Ordinary\ Generating\ Function}\),简称\(\mathrm{OGF}\))为一个形式幂级数:
其中\(f_n\)又称为\(x^n\)在\(F(x)\)中的系数,取系数的符号记作:\(f_n=[x^n]F(x)\).
四则运算
生成函数可以进行四则运算和微积分,我们需要了解运算法则.
首先,生成函数的加减法运算与多项式的加法运算相同:
于是我们可以得知生成函数具有线性性,也就是说如下两条运算法则成立:
其实,生成函数的乘法运算和多项式的乘法运算的定义也是一样的,我们可以考虑\(f_n x^n\)与\(g_m x^m\)乘积的系数回累加到\(x^{n+m}\)上,所以可以这样定义乘法:
我们也称\(\{h_i\}=\{\sum_{j=0}^i f_j\times g_{i-j}\}\)为数列\(\{f_i\}\)和\(\{g_i\}\)的卷积
平行位移
我们可以对一个生成函数乘上\(x\)的若干次幂,达到系数平行位移的效果.
微积分
生成函数的微积分就是多项式的微积分:
不定积分会带一个常数\(\mathrm{C}\),这是常识了,一般我们就看\(\int F(0)\mathrm{d}x\)是不是我们所期望的数字,再来决定\(\mathrm{C}\)就可以了,通常来说是\(0\).
常见数列的普通型生成函数
由于在形式幂级数中我们不在乎\(x\)的取值,所以我们一般都可以把形式幂级数表示成跟简单的形式,然后再用于生成函数的有关计算.
就比如说,我们要求数列\(\{f_i\}=\{1,1,1,\cdots\}\)的生成函数:
让\(n\rightarrow \infty\)就好,这里用到了等比数列求和公式. 此时,如果我们令\(x\in (-1,1)\),那么就有:
利用平移技巧,我们可以得知:
利用整体换元,我们还可以知道:
令\(c=-1\),还可以得到数列\(\{f_i\}=\{1,-1,1,-1,\cdots\}\)的生成函数:
下面我们来看几个复杂一点的生成函数:
\(1.\) \(\{f_i\}=\{\binom{k-1}{0},\binom{k}{1},\binom{k+1}{2},\cdots\}\),\(F(x)=\frac{1}{(1-x)^k}\)
证明:
可以考虑
用隔板法就可以求出\([x^n]F(x)=\binom{n+k-1}{k}\),故得证.
令\(k=2\),还可以得知\(\{f_i\}=\{1,2,3,\cdots\}\)的生成函数\(F(x)=\frac{1}{(1-x)^2}\).
\(2.\) \(\{f_i\}=\{\binom{n}{0},\binom{n}{1},\binom{n}{2},\cdots\}\),\(F(x)=(1+x)^n\)
证明:直接用广义二项式定理展开右边就好.
\(3.\) \(\{f_i\}=\{0,1,\frac{1}{2},\frac{1}{3},\cdots\}\),\(F(x)=\ln \frac{1}{1-x}\)
证明:
两边同时求一个不定积分:
因为\(F(0)=0\),所以可以得出\(\mathrm{C}=0\).
\(4.\) \(\{f_i\}=\{-0,1,-\frac{1}{2},\frac{1}{3},\cdots\}\),\(F(x)=\ln (1+x)\)
证明:
两边同时求一个不定积分:
因为\(F(0)=0\),所以可以得出\(\mathrm{C}=0\).
总结
下表给出常见数列的普通型生成函数和常见的生成函数变换技巧.
\(\mathrm{Sequence}\) | \(\mathrm{Ordinary\ Generating\ Function}\) |
---|---|
\(\langle1,1,1,\cdots\rangle\) | \(F(x)=\frac{1}{1-x}\) |
\(\langle1,2,3,\cdots\rangle\) | \(F(x)=\frac{1}{(1-x)^2}\) |
\(\langle1,-1,1,\cdots\rangle\) | \(F(x)=\frac{1}{1+x}\) |
\(\left\langle\binom{k-1}{0},\binom{k}{1},\binom{k+1}{2},\cdots\right\rangle\) | \(F(x)=\frac{1}{(1-x)^k}\) |
\(\left\langle\binom{n}{0},\binom{n}{1},\binom{n}{2},\cdots\right\rangle\) | \(F(x)=(1+x)^n\) |
\(\langle c^0,c^1,c^2,\cdots\rangle\) | \(F(x)=\frac{1}{1-cx}\) |
\(\langle0,0,1,1,\cdots\rangle\) | \(F(x)=\frac{x^2}{1-x}\) |
\(\langle1,0,1,0,1,\cdots\rangle\) | \(F(x)=\frac{1}{1-x^2}\) |
\(\left\langle0,1,\frac{1}{2},\frac{1}{3},\cdots\right\rangle\) | \(F(x)=\ln \frac{1}{1-x}\) |
\(\left\langle-0,1,-\frac{1}{2},\frac{1}{3},\cdots\right\rangle\) | \(F(x)=\ln \frac{1}{1+x}\) |
指数型生成函数
定义
对于一个数列\(\{f_i\}\),我们定义它的指数型生成函数(\(\mathrm{Exponential\ Generating\ Function}\),简称\(\mathrm{EGF}\))为一个形式幂级数:
也就是说,我们使用符号\(\hat{F}(x)\)表示函数的时候,就默认是指数型生成函数,而\(F(x)\)默认是普通型生成函数.
相信大家都已经注意到了指数型生成函数与普通型生成函数的区别,我们在级数求和的每一项处都除掉了\(i!\),其实意义就是除掉的组合对象的标号。
为什么要除掉标号?就比如说\(F(x)\)代表全排列的普通型生成函数时,就很难写出其收敛形式,不便于运算. 而如果用\(\hat{F}(x)\)表示全排列的指数型生成函数,那么很容易得出\(\hat{F}(x)=\frac{1}{1-x}\). 在定义指数型生成函数的运算之后,我们就可以方便的用收敛形式进行运算,得到结果输出时,再把标号乘上去即可. 这里也就解释了为什么指数型生成函数都是用于计算带标号组合对象的.
四则运算
指数型生成函数也可以进行四则运算,其定义如下:
两个指数型生成函数的卷积我们需要特别注意一下,因为指数型生成函数对应的都是有标号组合对象,所以卷积需要通过二项式系数卷积的形式来重新分配标号. 巧合的是,卷积的结果仍为指数型生成函数.
微积分
根据指数型生成函数的定义式,我们很快可以写出指数型生成函数进行微积分的结果:
容易发现,微积分对应了数列左移\(/\)右移后的指数型生成函数,不过这时候组合意义就消失了.
洛必达法则和泰勒多项式
在指数型生成函数的收敛形式求解中,我们可能要使用更多的高数知识,这里列出最重要的两个供大家回顾.
常见数列的指数型生成函数
首先是排列数的指数型生成函数,\(\{f_i\}=\{0!,1!,2!,\cdots\}\),\(\hat{F}(x)=\frac{1}{1-x}\),这个就是直接把标号除掉了.
然后我们可以考虑其他常见数列的指数型生成函数:
\(1.\) \(\{f_i\}=\{1,1,1,\cdots\}\),\(\hat F(x)=e^x\)
证明:将\(e^x\)在原点泰勒展开即可.
\(2.\) \(\{f_i\}=\{1,c,c^2,\cdots\}\),\(\hat F(x)=e^{cx}\)
证明:把\(1.\)式中的\(x\)代入\(cx\)即可.
\(3.\) \(\{f_i\}=\{\overbrace{0,0,\cdots,0}^{k-1\ \mathrm{times}},k^{\underline{k}},(k+1)^{\underline{k}},\cdots\}\),\(\hat F(x)=e^x x^k\).
证明:
\(4.\) 环排列的指数型生成函数:\(\hat F(x)=\ln \frac{1}{1-x}\).
证明:
\(n\)个数组成环排列的方案数为\((n-1)!\),代入\(\mathrm{EGF}\)的定义式后可以化简为\(\{f_i\}=\{0,1,\frac{1}{2},\frac{1}{3},\cdots\}\)的\(\mathrm{OGF}\).
Epilogue
正在施工...