生成函数

生成函数

1. 牛顿二项式定理

1.1 定义

首先对 \(\binom n m\) 的定义进行扩展:

  • \(n\) 是实数,\(m\) 是整数。则:

\[\binom{n}{m}= \begin{cases} \dfrac{n(n-1)(n-2)\cdots(n-m+1)}{m!} &(m\geq 1)\\ 1 &(m=0)\\ 0 &(m<0) \end{cases} \]

那么

\[(x+y)^n=\sum_{i=0}^{\infty} \binom n i x^iy^{n-i} \]

一般情况下,只考虑 \(|x|<|y|\) 的情况,否则右边不收敛。

在左边提取出 \((\frac x y)^n\),得到 \((1+x)^n=\sum_{i=0}^{\infty} \binom n i x^i\)。这是我们经常见到的形式。

1.2 推论

首先

\[\binom{-n}{k}=\dfrac{-n(-n-1)\cdots(-n-k+1)}{k!}=(-1)^k\binom {n+k-1} k \]

于是对 \(|z|<1\)

\[(1+z)^{-n}=\dfrac{1}{(1+z)^n}=\sum_{i=0}^{\infty} (-1)^i\binom{n+i-1}{i}z^i \]

\(n=1\),得

\[\dfrac{1}{1+z}=\sum_{i=0}^{\infty} (-1)^iz^i \]

\(-z\) 代替 \(z\),得

\[(1-z)^{-n}=\dfrac{1}{(1-z)^n}=\sum_{i=0}^{\infty}\binom{n+i-1}{i} z^i \]

\[\dfrac{1}{1-z}=\sum_{i=0}^{\infty} z^i \]

2. 形式幂级数

\(F(x)=\sum_{n\ge 0}a_nx^n\),这样有无穷项的 “多项式” 称为 幂级数

我们用到的其实是形式幂级数,形式幂级数区别于幂级数的地方在于,当我们使用幂级数的时候,我们说的相等是所有点处的值都相等,而当我们使用形式幂级数的时候,我们说的相等是所有系数都相等。

形式幂级数的 \(x\) 只是形式变量,我们只关注 \(x^n\) 的系数,并不关注具体的函数值是多少。

3. 普通生成函数(OGF)

3.1 定义

\(a_0,a_1,\cdots\) 为无穷序列,其生成函数

\[F(x)=a_0x^0+a_1x^1+a_2x^2+\cdots=\sum_{n\geq 0} a_nx^n \]

\(a\) 是有限的序列,则在其后面加上无限个 \(0\) 即可。\(F(x)\) 中的 \((x)\) 可以省略。

设数列 \(a\) 的 OGF 为 \(F(x)\)\(b\) 的 OGF 为 \(G(x)\)

生成函数有加减法:

\[F(x)+G(x)=\sum_{n\ge 0} (a_i+b_i)x^n \]

\(a+b\) 的 OGF 为 \(F+G\)

还有乘法:

\[F(x)G(x)=\sum_{n\ge 0} x^n (\sum_{i+j=n} a^ib^j) \]

\(a\times b\) 的 ODF 即为 \(F\times G\)\(\times\) 为卷积。

3.2 例子

  • \(1,1,1,1,\cdots\)

    \(F(x)=1+x+x^2+x^3+\cdots=\sum_{n\ge 0}x^n=\frac 1 {1-x}\)

    \(xF+1=F\),于是 \(F(x)=\frac 1 {1-x}\)

  • \(1,p,p^2,p^3,\cdots\)

    \(F(x)=1+px+(px)^2+(px)^3+\cdots=\sum_{n\ge 0}(px)^n=\frac{1}{1-px}\)

  • \(1,0,1,0,\cdots\)

    \(F(x)=1+x^2+x^4+\cdots=\sum_{n\ge 0}x^{2n}=\frac{1}{1-x^2}\)

  • \(0,1,1,1,\cdots\)

    \(F(x)=x+x^2+x^3+\cdots=\sum_{n\ge 1}x^n=\frac x {1-x}\)

  • \(1,0,0,1,0,0,1,0,0,\cdots\)

    \(F(x)=1+x^3+x^6+x^9+\cdots=\sum_{n\ge 0} x^{3n}=\frac{1}{1-x^3}\)

  • \(1,0,3,0,9,0,27,0,81,0,\cdots\)

    \(F(x)=1+3x^2+9x^4+27x^6+\cdots=\sum_{n\ge 0} 3^nx^{2n}=\sum_{n\ge 0} (3x^2)^n=\frac{1}{1-3x^2}\)

从上面几个例子可以看出,有理分式 \(\dfrac{x^a}{1-bx^c}=x^a\sum_{n\geq 0}(bx^c)^n=\sum_{n\ge 0}b^nx^{a+cn}\)

这对应着由 \(a\)\(0\) 开头,接下来由 \(1\)\(b^n\)\(c-1\)\(0\) 组成的循环节无限循环组成的数列。

  • \(\binom n 0,\binom n 1,\binom n 2\cdots\)

    \(F(x)=\sum_{i\geq 0} \binom n i x^i=(1+x)^n\)

  • \(1,2,3,4,\cdots\)

    \(F(x)=\sum_{n\ge 0} (n+1) x^n\)

    解 1:\(F(x)=\sum_{n\ge 1}nx^{n-1}=\sum_{n\ge 1}(x^n)'=(\sum_{n\ge 1}x^n)'=(\frac x {1-x})'=\frac 1 {(1-x)^2}\)

    解 2:\(F(x)=\sum_{x\ge 0}\binom {n+1} n x^n=\frac{1}{(1-x)^2}\)

  • \(f_0,f_1,f_2,\cdots\),其中 \(f_i\)\(x_1+x_2+\cdots+x_k=n\) 的非负整数解个数,\(k\) 是正整数。

    \(f_i=\binom{n+k-1}{k-1}\)

    \(F(x)=\sum_{n\geq 0} \binom{n+k-1}{k-1} x^n=\frac{1}{(1-x)^{k}}\)

  • \(p^0f_0,p^1f_1,p^2f_2,p^3f_3,\cdots\)

    \(F(x)=\sum_{n\ge 0} \binom{n+k-1}{k-1}p^nx^n=\frac{1}{(1-px)^k}\)

  • \(0,1,4,9,16,25,\cdots\)

    \(\frac{1}{(1-x)^2}=\sum_{n\ge 0}(n+1)x^n\)

    \(\Rightarrow \frac{x}{(1-x)^2}=\sum_{n\ge 1} nx^n\)

    \(\Rightarrow \frac{1+x}{(1-x)^3}=\sum_{n\ge 1} n^2x^{n-1}\) (两边同时求导)

    \(\Rightarrow \frac{x(1+x)}{(1-x)^3}=\sum_{n\ge 0} n^2x^n\)

    \(\Rightarrow F(x)=\sum_{n\ge 0}n^2x^n=\frac{x(1+x)}{(1-x)^3}\)

  • \(0,1,8,27,\cdots,n^3,\cdots\)

    \(\frac{x(1+x)}{(1-x)^3}=\sum_{n\ge 0}n^2x^n\)

    \(\Rightarrow \frac{x^2+4x+1}{(1-x)^4}=\sum_{n\ge 0}n^3x^{n-1}\)

    \(\Rightarrow \frac{x(x^2+4x+1)}{(1-x)^4}=\sum_{n\ge 0}n^3x^n\)

    对于一般的 \(0,1,\cdots,n^k,\cdots\),可以类似地两边连续求导并乘 \(x\) 得到。

3.3 常用变换

\(F(x)=\sum_{n\ge 0} a_nx^n\)

  • \(G=F\times x^k\),得到 \(F\) 向右移动 \(k\) 位,最左边补 \(k\)\(0\) 的结果。

  • \(G=F\times \frac{1}{1-x}\),得到 \(F\) 对系数做前缀和的结果。

    \(G(x)=\frac{1}{1-x}\sum\limits_{n\ge 0}a_nx^n=\sum\limits_{n\ge 0}x^n\sum\limits_{n\ge 0}a^nx^n=\sum\limits_{n\ge 0}\sum\limits_{m\ge 0}a^nx^{n+m}=\sum\limits_{k\ge 0}(\sum_{n\ge 0}a_n)x^k\)

  • \(G=F\times (1-x)\),得到 \(F\) 对系数做差分的结果(假设 \(a_{-1}=0\))。

    \(G(x)=(1-x)\sum\limits_{n\ge 0}a_nx^n=\sum\limits_{n\ge 0}a_nx^n-a_nx^{n+1}=\sum\limits_{n\ge 0} a_nx_n-\sum\limits_{n\ge 1}a_{n-1}x^n=\sum\limits_{n\ge 0} (a_n-a_{n-1})x^n\)

3.4 应用

应用 1: 考虑 \(f_0,f_1,f_2\cdots\) 的例子:设 \(G(x)=\sum_{n\geq 0} x^n\),那么

\[F(x)=(G(x))^k=(1+x+x^2+\cdots)(1+x+x^2+\cdots)\cdots \]

\(x^n\) 的系数(记为 \([x^n]F(x)\)) 即为 \(x_1+x_2+\cdots+x_k=n\) 的非负整数解个数。

应用 2:\(x_1+x_2+x_3+x_4=n\) 的非负整数解个数,其中 \(x_1\) 为偶数,\(x_2\)\(5\) 的倍数,\(x_3\leq 4\)\(x_4\leq 1\)

\(F_i(x)\)\(b_0,b_1,b_2,\cdots\) 的生成函数,\(b_j\) 表示 \(x_i=j\) 的方案数,这里非 \(0\)\(1\)。那么

\[\begin{gathered} F_1(x)=\sum_{n\ge 0}x^{2n}=\frac{1}{1-x^2}\\ F_2(x)=\sum_{n\ge 0}x^{5n}=\frac{1}{1-x^5}\\ F_3(x)=1+x+x^2+x^3+x^4=\frac {1-x^5}{1-x}\\ F_4(x)=1+x=\dfrac{1-x^2}{1-x} \end{gathered} \]

于是

\[F(x)=F_1(x)F_2(x)F_3(x)F_4(x)=\dfrac{1}{(1-x)^2}=\sum_{n\ge 0}(n+1)x^n \]

\([x^n]F(x)\) 即为答案。

可以看出,OGF 可以方便地求出没有标号的多重集组合问题。

注意最后的级数有可能是个更复杂的有理分式,从而无法快速得到答案,此时需要进行有理分式分解。

3.4 OGF 的卷积

考虑 \(a\times b\) 的 OGF \(H=F\times G\)

\([x^n]F(x)\) 表示在 \(S\) 中取出 \(n\) 个的方案数,\([x^n]G(x)\) 表示在 \(T\) 中取出 \(n\) 个的方案数。

那么枚举在 \(S\) 中取 \(i\) 个,\(T\) 中取 \(j\) 个,得到 \(S\cup T\) 中取 \(n\) 个的方案数 \([x^n]H(x)=\sum_{i+j=n} ([x^i]F(x))([x^j]G(x))\)

4. 指数生成函数 (EGF)

4.1 泰勒级数

\[\begin{gathered} f(x)=f(x_0)+\frac{f'(x_0)}{1!}(x-x_0)+\dfrac{f''(x_0)}{2!}(x-x_0)^2+\cdots =\sum_{n\geq 0} \dfrac{f^{(n)}(x-x_0)^n}{n!}\\ f(x)=f(0)+\frac{f'(0)}{1!}x+\dfrac{f''(0)}{2!}x^2+\cdots=\sum_{n\geq 0}\dfrac{f^{(n)}x^n}{n!} \end{gathered} \]

常见的泰勒级数:

\[\begin{gathered} e^x=1+\dfrac{x}{1!}+\dfrac{x^2}{2!}+\dfrac{x^3}{3!}+\cdots=\sum_{n\geq 0}\dfrac{x^n}{n!}\\ e^{-x}=1-\dfrac{x}{1!}+\dfrac{x^2}{2!}-\dfrac{x^3}{3!}+\cdots=\sum_{n\geq 0}(-1)^n\dfrac{x^n}{n!}\\ e^{ax}=1+\dfrac{ax}{1!}+\dfrac{a^2x^2}{2!}+\dfrac{a^3x^3}{3!}+\cdots=\sum_{n\geq 0}\dfrac{a^nx^n}{n!}\\ \ln(x+1)=\dfrac x 1-\dfrac {x^2} 2+\dfrac {x^3} 3-\dfrac{x^4} 4+\cdots=\sum_{n\geq 1}(-1)^{n-1}\dfrac{x^n}{n}\\ -\ln(x+1)=-\dfrac x 1+\dfrac {x^2} 2-\dfrac {x^3} 3+\dfrac{x^4} 4-\cdots=\sum_{n\geq 1}(-1)^{n}\dfrac{x^n}{n}\\ \ln(1-x)=-\dfrac x 1-\dfrac{x^2}{2}-\dfrac{x^3}{3}-\cdots=-\sum_{n\geq 1}\dfrac{x^n}{n}\\ -\ln(1-x)=\dfrac x 1+\dfrac{x^2}{2}+\dfrac{x^3}{3}\cdots=\sum_{n\geq 1}\dfrac{x^n}{n}\\ \dfrac{1}{1-x}=1+x+x^2+x^3+\cdots=\sum_{n\geq 0} x^n\\ \end{gathered} \]

4.2 定义

定义无穷序列 \(a_0,a_1,a_2,\cdots\) 的指数生成函数为:

\[\hat{F}(x)=\sum_{n\geq 0} \dfrac{a_nx^n}{n!} \]

OGF 一般处理组合数的序列,而 EGF 一般处理排列的序列。

设数列 \(a\) 的 EGF 为 \(\hat{F}(x)\)\(b\) 的 EGF 为 \(\hat{G}(x)\)

EGF 有加法:

\[\hat{F}(x)+\hat{G}(x)=\sum_{n\geq 0} \dfrac{(a_n+b_n)x^n}{n!} \]

\(a+b\) 的 EGF 为 \(\hat{F}+\hat{G}\)

还有乘法:

\[\hat{F}(x)\hat{G}(x)=\sum_{n\geq 0}\sum_{i=0}^n\dfrac{a_ix^i\times b_{n-i}x^{n-i}}{i!\times(n-i)!}=\sum_{n\geq 0}\sum_{i=0}^n\binom{n}{i}\frac{a_ib_{n-i}x^n}{n!} \]

\(c_n=\sum_{i+j=n}\binom{n}{i}a_ib_j\) 的 EGF 为 \(\hat{F}\times\hat{G}\)

4.3 例子

  • \(1,1,1,1,\cdots\)

    \(\hat{F}(x)=\sum_{n\ge 0} \frac{x^n}{n!}=e^x\)

    这也是为什么 \(\hat{F}(x)\) 叫指数生成函数。

  • \(1,p,p^2,p^3,\cdots\)

    \(\hat{F}(x)=\sum_{n\ge 0} \frac{p^nx^n}{n!}=e^{px}\)

  • \(1,0,1,0,1,\cdots\)

    \(\hat{F}(x)=\sum_{n\ge 0}[2\mid n]\frac{x^n}{n!}=\sum_{n\ge 0}\frac{1+(-1)^n}{2}\frac{x^n}{n!}=\frac{e^x+e^{-x}}{2}\)

  • \(0,1,0,1,\cdots\)

    \(\hat{F}(x)=\frac{e^x-e^{-x}}{2}\)

  • \(0,1!,2!,3!,\cdots\)

    \(\hat{F}(x)=\sum_{n\ge 1} \frac{(n-1)!x^n}{n!}=\sum_{n\ge 1} \frac{x^n}{n}=-\ln(1-x)\)

  • \(A(n,0),A(n,1),A(n,2),A(n,3),\cdots\)

    \(\hat{F}(x)=\sum_{i\ge 0} A(n,i)\frac{x^i}{i!}=\sum_{n\ge 0}\binom n i x^i=(1+x)^n\)

4.4 常用变换

设数列 \(a_0,a_1,a_2,\cdots\),其 EGF 为:\(\hat{F}=\sum_{n\ge 0} \frac{a_nx^n}{n!}\)

对其求导,得

\[\hat{F}'=\sum_{n\ge 1} \dfrac{a_n}{n!} n x^{n-1}=\sum_{n\ge 1}\dfrac{a_nx^{n-1}}{(n-1)!}=\sum_{n\ge 0} \dfrac{a_{n+1}x^n}{n!} \]

则求导对应系数右移。

对其积分,得

\[\int \hat{F} dx=\sum_{n\ge 0}\left(\int \frac{a_nx^n}{n!} dx\right)=\sum_{n\ge 0} \dfrac{a_nx^{n+1}}{(n+1)!}=\sum_{n\ge 1}\dfrac{a_{n-1}x^n}{n!} \]

则积分对应系数左移。

4.5 应用

应用 1: 求多重集 \(\{c_1\cdot a_1,c_2\cdot a_2,c_3\cdot a_3\cdots c_k\cdot a_k\}\)\(n\) 排列数。

设数列 \(b_0,b_1,b_2,\cdots\)\(b_j\) 为选出 \(j\)\(a_i\) 的方案数,这里非 \(0\)\(1\)。则其 EGF 为:

\[\hat{F}_i(x)=\sum_{n=0}^{c_i} \dfrac{x^n}{n!} \]

然后设数列 \(g_0,g_1,g_2,\cdots\)\(g_n\) 表示要求的 \(n\) 排列数,则其 EGF 为:

\[\hat{F}(x)=\prod_{i=1}^k\hat{F}_i(x) \]

考虑 \([x^n]\hat{F}(x)\)。设 \(m_1+m_2+m_3+\cdots+m_k=n\),那么它们给第 \(n\) 项加上了

\[\prod \dfrac{x^i}{m_i!}=\dfrac{x^n}{\prod m_i!}=\dfrac{x^n}{n!}\dfrac{n!}{\prod m_i!} \]

也就是给 \([x^n]\hat{F}(x)\) 加上了 \(\dfrac{n!}{\prod m_i!}\),恰好是其对应的排列数。

可以看出,EGF 可以方便地求出有标号的多重集排列问题。

应用 2: 拿出 \(n\) 个球并排列,球有红、绿、蓝三色,只区分颜色。要求红球必须是偶数个,求排列数。

\(f_i\)\(n\) 排列数,其 EGF 为:

\[\hat{F}(x)=(\sum_{n\geq 0}\dfrac{x^{2n}}{(2n)!})(\sum_{n\geq 0}\dfrac{x^n}{n!})^2=\dfrac{e^x+e^{-x}}{2}e^{2x}=\dfrac{e^{3x}+e^x}{2}=\dfrac{\sum_{n\geq 0}(\dfrac{x^n3^n}{n!}+\dfrac{x!}{n!})}{2}=\dfrac 1 2\sum_{n\ge 0}\dfrac{(3^n+1)x^n}{n!} \]

于是 \(f_i=[x^n]\hat{F}(x)=\dfrac{3^n+1}{2}\)

应用 3:求 \(1,3\) 都出现偶数次的 \(n\) 位五进制数的个数。

\(f_i\) 为这样的 \(i\) 位数个数,其 EGF 为:

\[\hat{F}(x)=(\sum_{n\geq 0}\dfrac{x^{2n}}{(2n)!})^2(\sum_{n\geq 0}\dfrac{x^n}{n!})^3=(\dfrac{e^x+e^{-x}}{2})^2e^{3x}=\dfrac{e^{5x}+2\times e^{3x}+e^x}{4}=\frac 1 4\sum_{n\ge 0} \dfrac{(5^n+2\times 3^n+1)x^n}{n!} \]

\(f_i=[x^n]\hat{F}(n)=\dfrac{5^n+2\times 3^n+1}{4}\)

4.6 EGF 的卷积

上面提到,\(c_n=\sum_{i+j=n}\binom{n}{i}a_ib_j\) 的 EGF 为 \(\hat{H}=\hat{F}\times\hat{G}\)

\([x^n]F(x)\)\(S\) 中的 \(n\) 排列数,\([x^n]G(x)\)\(T\) 中的 \(n\) 排列数。

枚举 \(S,T\) 中分别取 \(i,j\) 个,得到 \(S\cup T\)\(n\) 排列数 \([x^n]\hat{H}(x)=\sum_{i+j=n}\binom{n}{i}([x^i]\hat{F}(x))([x^j]\hat{G}(x))\)

*4.7 EGF 的 exp 与 ln

设形式幂级数 \(A=\sum_{n\ge 0} a_nx^n\)

\[\exp (A)=e^A=\sum_{n\ge 0} \dfrac{A^n}{n!} \]

\(B=\exp A\),那么两边同时求导,得到 \(B'=A'\times B\)。根据这个式子可以 \(O(n^2)\) 递推系数:

\[b_0=0,b_n=\dfrac 1 n \sum_{n=1}^n a_ib_{n-i} i \]

考虑其组合意义。设数列 \(f_0,f_1,f_2,\cdots\)\(f_i\) 表示大小为 \(i\) 的集合个数,其中元素有标号,其 EGF 为 \(\hat{F}\)

再设数列 \(g_0,g_1,g_2,\cdots\)\(g_i\) 表示无序地选择一些集合组合起来,使得集合大小总和为 \(i\) 的方案数,其 EGF 为 \(\hat{G}\)。则

\[g_n=\sum_{s_1+s_2+\cdots+s_m=n} \dfrac{1}{m!} \binom{n}{s_1 \ s_2 \cdots s_m} \prod f_{s_i}=n!\sum_{s_1+\cdots+s_m=n} \dfrac{1}{m!} \prod \dfrac{f_{s_i}}{s_i!} \]

移项得

\[\dfrac{g_n}{n!}=\sum_{s_1+\cdots+s_m=n} \dfrac{1}{m!} \prod \dfrac{f_{s_i}}{s_i!} \]

于是

\[\hat{G}=\sum_{m\ge 0} \dfrac{\hat{F}^m}{m!}=\exp (\hat{F}) \]

然后考虑 \(\ln\)\(\ln\)\(\exp\) 的逆,即 \(\ln(\exp(x))=x,\exp(\ln(x))=x\)。所以 \(\ln\) 就是把组合起来的集合再拆回去。

\(B=\ln(A)\),则 \(B'=\dfrac{A'}{A}\),即 \(A\times B'=A'\)。同样可以 \(O(n^2)\) 递推系数,得到

\[b_0=0,b_n=\dfrac{a_n}{a_0}-\dfrac{1}{a_0n}\sum_{i=1}^{n-1}a_{n-i}b_i i \]

一般来说 \(a_0=1\),所以上式一般可以写成

\[b_n=a_n-\dfrac 1 n\sum_{i=1}^{n-1}a_{n-i}b_i i \]

例子 1:\(n\) 个点的有标号无向连通图个数。

设答案为 \(f_n\),再设 \(g_n\)\(n\) 个点的有标号无向图(不要求联通)的个数。显然 \(g_n=2^{\frac{n(n-1)}{2}}\)

考虑任意一张无向图,它是由若干个连通块无序地组合而形成的,那么 \(\hat{G}=\exp(\hat{F})\),得到 \(\hat{F}=\ln \hat{G}\)

例子 2:\(n\) 个点的不区分儿子的有标号有根树个数。

设答案为 \(f_n\),列出方程:

\[f_n=\sum_{s_1+\cdots+s_m=n-1} \binom{n}{1 \ s_1\ \cdots \ s_m} \dfrac{1}{m!}\prod f_{s_i}=n!\sum_{s_1+\cdots+s_m=n-1}\dfrac{1}{m!}\prod \dfrac{f_{s_i}}{s_i!} \]

得到 \(\hat{F}=z\exp(\hat{F})\)不会求系数,咕咕咕

例子 3: 求将 \(n\) 个有标号元素划分为若干个不交非空子集的方案数。

设答案为 \(f_n\)。再设 \(g_n\)\(i\) 个元素组成一个非空集合的方案数,显然 \(g_n=[n\ge 0]\)

于是 \(\hat{G}=e^x-1,\hat{F}=\exp(\hat{G})=e^{e^x-1}\)

5. 生成函数与递推关系

若数列 \(f\) 满足

\[f_n=a_1f_{n-1}+a_2f_{n-2}+\cdots+a_kf_{n-k}\ (n\ge k) \]

\(a_i\) 为不依赖于 \(n\) 的常数,则称此递推关系为 常系数齐次线性递推关系

5.1 斐波那契数列

斐波那契数列的定义是:\(f_0=0,f_1=1,f_n=f_{n-1}+f_{n-2}\ (n\ge 2)\)

移项得 \(f_n-f_{n-1}-f_{n-2}=0\)

其 OGF

\[\begin{aligned} F(x)&=\sum_{n\ge 0} f_nx^n \end{aligned} \]

根据递推关系列方程:

\[\begin{aligned} F-xF-x^2F&=\sum_{n\ge 0}f_nx^n-\sum_{n\ge 0}f_nx^{n+1}-\sum_{n\ge 0}f_nx^{n+2}\\ &=f_0x^0+f_1x^1+f_0x^1+\sum_{n\ge 2}(f_n-f_{n-1}-f_{n-2})x^n\\ &=x \end{aligned} \]

得到

\[F=\dfrac{x}{1-x-x^2} \]

接下来将其展开。

展开 1

\[\begin{aligned} F(x)&=\dfrac{x}{1-(x^2+x)}\\ &=x\sum_{n\ge 0}(x^2+x)^n\\ &=x\sum_{n\ge 0}\sum_{i=0}^n\binom n i x^{2i}x^{n-i}\\ &=x\sum_{n\ge 0}\sum_{i=0}^n\binom n i x^{n+i}\\ &=x\sum_{n\ge 0}x^n\sum_{i=0}^n\binom{n-i} i\\ &=\sum_{n\ge 0}x^{n+1}\sum_{i=0}^n\binom{n-i} i\\ &=\sum_{n\ge 1} x^n\sum_{i=0}^{n-1}\binom{n-i-1}{i} \end{aligned} \]

得出结论:\(f_n=\sum_{i=0}^{n-1}\binom{n-i-1} i\),即杨氏三角(帕斯卡三角)从 \((n-1,0)\)\((0,n-1)\) 对角线的和。

展开 2:

首先

\[1-x-x^2=(1-\dfrac{1+\sqrt{5}}{2}x)(1-\dfrac{1-\sqrt{5}}{2}x) \]

\(a=\frac{1+\sqrt{5}}{2}x,b=\frac{1-\sqrt{5}}{2}\)

考虑将 \(F\) 分解为 \(\dfrac{A}{1-ax}+\dfrac{B}{1-bx}\) 的形式,解得 \(A=\dfrac{1}{\sqrt{5}},B=-\dfrac{1}{\sqrt{5}}\)

然后

\[\begin{aligned} F&=\dfrac 1{\sqrt{5}}\dfrac{1}{1-\frac{1+\sqrt{5}}{2}x}-\dfrac{1}{\sqrt{5}}\dfrac{1}{1-\frac{1-\sqrt{5}}{2}x}\\ &=\dfrac{1}{\sqrt{5}}\left(\sum_{n\ge 0}\left(\left(\dfrac{1+\sqrt{5}}{2}\right)^n-\left(\dfrac{1-\sqrt{5}}{2}\right)^n\right)x^n\right) \end{aligned} \]

得到

\[f_n=\dfrac{1}{\sqrt{5}}\left(\left(\dfrac{1+\sqrt{5}}{2}\right)^n-\left(\dfrac{1-\sqrt{5}}{2}\right)^n\right) \]

5.2 一般的常系数齐次线性递推关系

对一般的常系数齐次线性递推关系 \(f_n=\sum_{i=1}^k a_if_{n-i}\),我们可以类似地求出一个通项公式,但由于高阶多项式的存在,会变得更加复杂,往往因很难求出某高阶多项式的所有根而受到限制。

\(f_n\) 满足递推关系

\[f_n+a_1f_{n-1}+a_2f_{n-2}+\cdots+a_kf_{n-k}=0 \ (a_k\ne 0) \]

要求 \(a_k\ne 0\),否则可以变为更低阶的递推关系。

那么假设 \(f_n=q^n\),有

\[\begin{gathered} q^n+a_1q^{n-1}+a_2q^{n-2}+\cdots+a_kq^{n-k}=0\\ \Rightarrow q^{k}+a_1q^{k-1}+a_2q^{k-2}+\cdots+a_{k-1}q^1+a_k=0 \end{gathered} \]

称这个方程为对应递推关系的 特征方程

\(q_1,q_2,q_3,\cdots,q_k\)\(k\) 个可重根。由于 \(a_k\ne 0\),所有的 \(q_i\ne 0\)


先考虑 \(q_i\) 互不相同的情况。

容易证明,

\[f_n=c_1q_1^n+c_2q_2^n+c_3q_3^n+\cdots+c_kq_k^n \]

满足上述递推关系。其中 \(c_i\) 是任意选定的常数。

接下来证明其是通解,也就是对于任意一组初值 \(f_0,f_1,f_2,\cdots,f_{k-1}\),都能选出 \(c_1,c_2,c_3,\cdots,c_k\) 满足递推关系。

列出方程

\[\begin{cases} c_1+c_2+c_3+\cdots+c_k=f_0\\ c_1q_1+c_2q_2+c_3q_3+\cdots+c_kq_k=f_1\\ c_1q_1^2+c_2q_2^2+c_3q_3^2+\cdots+c_kq_k^2=f_2\\ \cdots\\ c_1q_1^{k-1}+c_2q_2^{k-1}+\cdots+c_kq_k^{k-1}=f_{k-1} \end{cases} \]

其系数矩阵为

\[\begin{bmatrix} 1 &1 &1 &\cdots &1\\ q_1 &q_2 &q_3 &\cdots &q_{k}\\ q_1^2 &q_2^2 &q_3^2 &\cdots &q_k^2\\ \vdots &\vdots &\vdots &\ddots &\vdots\\ q_1^{k-1} &q_2^{k-1} &q_3^{k-1} &\cdots &q_k^{k-1}\\ \end{bmatrix} \]

这是个范德蒙矩阵,其行列式为 \(\prod_{1\leq i<j\leq k}(q_j-q_i)\),不为 \(0\)。所以原方程一定有解。

考虑斐波那契数列,其递推关系为

\[f_n-f_{n-1}-f_{n-2}=0 \]

其特征方程为

\[q^2-q-1=0 \]

解得 \(q_1=\dfrac{1+\sqrt{5}}{2},q_2=\dfrac{1-\sqrt{5}}{2}\)

然后根据 \(f_0=0,f_1=1\) 列方程:

\[\begin{cases} c_1+c_2=0\\ c_1q_1+c_2q_2=1 \end{cases} \]

解得 \(c_1=\dfrac{1}{\sqrt{5}},c_2=-\dfrac{1}{\sqrt{5}}\)

于是

\[f_n=c_1q_1^{n}+c_2q_2^n=\dfrac{1}{\sqrt{5}}\left(\left(\dfrac{1+\sqrt{5}}{2}\right)^n-\left(\dfrac{1-\sqrt{5}}{2}\right)^n\right) \]


再考虑有重根的情况。

上面求得的通解不适用。考虑递推关系 \(f_n=4f_{n-1}-4f_{n-2}\),其特征方程为 \(q^2-4q+4=0\),解得 \(q_1=q_2=2\)

若再按上面的方法列出通解 \(f_n=c_1q_1^n+c_2q_2^n\),两个常数可以合并 \(f_n=c(q_1^n+q_2^n)\),一个常数不一定能满足两个初值。

\(f_0=4,f_1=5\) 时,\(c_1+c_2=4,2c_1+2c_2=5\),无解。

但可以发现,\(f_n=n2^n\) 也是一个解。

可以代入验证:

\[n2^n-4\times (n-1)2^{n-1}+4\times(n-2)2^{n-2}=0 \]

所以

\[f_n=c_12^n+c_2n2^n \]

也是解。其中 \(c_1,c_2\) 是任意选定的常数。

接下来证明其是通解。对于给定的初值 \(f_0,f_1\),列出方程

\[\begin{cases} c_1+0c_2=f_0\\ 2c_1+2c_2=f_1 \end{cases} \]

解得 \(c_1=f_0,c_2=\frac{f_1-2f_0}{2}\)

然后考虑一般情况。对于 \(s_i\) 重根 \(q_i\),可以验证

\[f_n=G_{i,n}=c_1q_i^n+c_2nq^{n}+c_3n^2q^{n}+\cdots+c_kn^{k-1}q^n=\sum_{i=1}^kc_in^{i-1}q^n \]

也是解,\(c_i\) 是随意选定的常数。那么 \(f_n\) 的通解即为

\[f_n=\sum_{i=1}^n G_{i,n} \]

证明相当复杂,记住结论即可。


也可以利用生成函数求解。

类似斐波那契数列的生成函数,令 \(a_0=1\),我们列出方程:

\[\begin{aligned} a_0F+a_1xF+\cdots+a_kx^kF&=\sum_{n\ge 0}f_ix^n+\sum_{n\ge 0}a_1f_ix^{n+1}+\cdots+\sum_{n\ge 0}a_kf_ix^{n+k}\\ &=\sum_{n\ge 0}f_ix^n+\sum_{n\ge 1}a_1f_{i-1}x^{n}+\cdots+\sum_{n\ge k}a_kf_{i-k}x^{n}\\ &=\sum_{n=0}^{k-1}x^n\left(\sum_{i=0}^na_if_{n-i}\right)+\sum_{n\ge k}x^n\left(\sum_{i=0}^k a_if_{n-i}\right)\\ &=\sum_{n=0}^{k-1}x^n\left(\sum_{i=0}^na_if_{n-i}\right) \end{aligned} \]

得到

\[\begin{gathered} F=\dfrac{P}{Q}\\ P=\sum_{n=0}^{k-1}x^n\left(\sum_{i=0}^na_if_{n-i}\right)\\ Q=\sum_{i=0}^k a_ix^i \end{gathered} \]

我们将 \(F\) 分解为

\[F=\sum \dfrac{c}{(1-a_ix)^{k_i}} \]

的部分分式形式,其中 \(Q=\prod (1-a_ix)^{k_i}\)\(c\) 为常数。

然后将其转化为形式幂级数的形式,求出 \(f_n=[x^n]F\) 即可。

由此看出,对于任意的常系数齐次线性递推关系 \(\sum\limits_{i=0}^k a_if_{n-i}=0\),其生成函数 \(F\) 一定能分解为 \(\dfrac{P}{Q}\) 的形式,其中 \(\deg P<k,\deg Q=k\)\(Q\) 常数项不为 \(0\)

反之亦然,接下来我们证明这样的 \(F=\dfrac P Q\) 一定对应一个满足 \(\sum\limits_{i=0}^k a_if_{n-i}\) 的数列 \(f\)

\(P=\sum\limits_{i=0}^{k-1}d_nx^n,Q=\sum\limits_{i=0}^{k}a_nx^n\)\(n<0\)\(f_n=0\),则

\[\begin{aligned} \sum_{i=0}^{k-1}d_nx^n&=\left(\sum_{n=0}^k a_nx^n\right)\left(\sum_{n\ge 0} f_nx^n\right)\\ &=\sum_{n\ge 0}\sum_{m=0}^kf_na_mx^{n+m}\\ &=\sum_{n\ge 0} x^n\left(\sum_{i=0}^ka_if_{n-i}\right) \end{aligned} \]

列出方程

\[\begin{cases} a_0f_0=d_0\\ a_0f_1+a_1f_0=d_1\\ a_0f_2+a_1f_1+a_2f_0=d_2\\ \vdots\\ a_0f_{k-1}+a_1f_{k-2}+a_2f_{k-3}+\cdots+a_{k-1}f_0=d_{k-1}\\ a_0f_{n}+a_1f_{n-1}+a_2f_{n-2}+\cdots+a_kf_{n-k}=\sum\limits_{i=0}^k a_if_{n-i}=0 \end{cases} \]

对前 \(k\) 个方程写出增广矩阵,是满秩的,所以可以唯一确定 \(f_0,f_1,f_2,\cdots f_{k-1}\)

对于最后一个方程,由于 \(a_0\ne 0\),则 \(f\) 满足 \(\sum_{i=0}^k a_if_{n-i}\) 的常系数齐次线性递推关系。

*6. 部分分式分解

这里给出一个更为一般的部分分式分解方法。

对于 \(F=\dfrac{R}{(1-ax)^k}\),其中 \(R\) 是个多项式,提取 \([x^n]F\) 是容易的。设 \(\deg R=c\),有:

\[\begin{aligned} F&=\left(\sum_{n=0}^c R_nx^n\right)\left(\sum_{n\ge 0}\binom{n-k+1}{k-1}a^nx^n\right)\\ &=\sum_{n\ge 0}x^n\left(\sum_{i+j=n,i\ge 0,0\le j\le c}\binom{i-k+1}{k-1}R_ja^i\right) \end{aligned} \]

对于较为简单的有理分式 \(\dfrac P Q\),我们可以先将 \(Q\) 因式分解,然后直接待定系数法求解。例如:

\[F=\dfrac{3x+2}{(x+3)(x+1)^2} \]

待定系数法,

\[F=\dfrac{A}{x+3}+\dfrac{B}{x+1}+\dfrac{C}{(x+1)^2}=\dfrac{3x+2}{(x+3)(x+1)^2} \]

通分列方程,解得 \(A=-\frac 7 4,B=\frac 7 4,C=\frac 1 2\)

于是

\[F=-\dfrac{7}{4(x+3)}+\dfrac{7}{4(x+1)}+\dfrac{1}{2(x+1)^2} \]

对于更一般的情况,设有两个多项式 \(P,Q\)。若 \(Q=\prod_{i} (1-a_ix)^{k_i}\),结论是可以给出 \(\dfrac P Q\) 的分解:

\[\dfrac{P}{Q}=\sum_{i} \dfrac{R_i}{(1-a_ix)^{k_i}}+R_0 \]

其中 \(R_0=\dfrac{P-P\bmod Q}{Q}\),每个 \(R_i\) 满足 \(\deg R_i< k_i\)

首先考虑若这样的分解存在,\(R_i\) 应等于什么。

两边同乘 \(Q\) 并移项

\[P\bmod Q=\sum_i R_i\prod_{j\ne i} (1-a_jx)^{k_j} \]

\(X=P\bmod Q\),则 \(\deg X<\deg Q\)

两边同时对 \((1-a_ix)^{k_i}\) 取模:

\[X\equiv R_i\prod_{j\ne i}(1-a_jx)^{k_j} \pmod{(1-a_ix)^{k_i}} \]

\[R_i\equiv\dfrac{X}{\prod_{j\ne i}(1-a_jx)^{k_j}} \pmod{(1-a_ix)^{k_i}} \]

换元 \(t=1-a_ix\),那么 \(x=\frac{1-t}{a_i}\)。把 \(x\) 全都换成 \(t\),问题转化为 \(\bmod \ t^{k_i}\) 意义下求逆元。

设多项式 \(A\) 满足 \(\deg A<k\) 且常数项不为 \(0\),要求一个次数小于 \(k\)\(B\),满足 \(AB\equiv 1\pmod{x^{k_i}}\)

列出方程:

\[\sum_{n=0}^{k-1}x^n\left(\sum_{i+j=n}A_iB_j\right)=1 \]

首先有 \(B_0=\dfrac{1}{A_0}\)。假设已经知道了 \(B_0,B_1,B_2,\cdots,B_{m-1}\),那么

\[\sum_{i+j=m}A_iB_j=0\Rightarrow A_0B_m+\sum_{i+j=m,i>0}A_iB_j=0\Rightarrow B_m= \dfrac{-\sum_{i+j=m,i>0}A_iB_j}{A_0} \]

求出 \(R_i=\sum_j b_jt^j\),现在换回去:

\[\begin{aligned} R_i&=\sum_{j} b_j(1-a_ix)^{j}\\ &=\sum_{j} \sum_{p=0}^j b_j\binom{j}{p} (-a_i)^px^p\\ &=\sum_{p\ge 0}(-a_i)^p x^p\left(\sum_{j\ge p} b_j\binom j p \right) \end{aligned} \]

总复杂度 \(O(n^2)\)

从上向下推已经结束,现在我们从下向上推,以证明我们求出的 \(R_i\) 确实满足条件。

现在对于每个 \(i\)\(X\) 满足

\[X\equiv R_i\prod_{j\ne i}(1-a_jx)^{k_j} \pmod{(1-a_ix)^{k_i}} \]

根据多项式 CRT(和普通 CRT 基本一致),

\[X=\sum_{i} R_i\prod_{j\ne i}(1-a_jx)^{k_j}+tQ \]

其中 \(t\) 是个多项式。发现 \(X\)\(\sum_{i} R_i\prod_{j\ne i}(1-a_jx)^{k_j}\) 的次数都 \(<\deg Q\),那么 \(t\) 必须为 \(0\),于是得出

\[X=\sum_{i} R_i\prod_{j\ne i}(1-a_jx)^{k_j} \]

命题得证。

posted @ 2025-08-09 15:59  XP3301_Pipi  阅读(62)  评论(1)    收藏  举报
Title