可以看《具体数学》
假设我们已知递归关系:\(g_n=\sum\limits_{k=1}^lc_kg_{n-k}\) ,现在我们想给出 \(g_n\) 关于 \(n\) 的封闭形式。那么生成函数提供了一套机械式的计算方式。
分四步
一个更加强大的工具应当具备解决简单问题的能力,这里我们以斐波那契数列为例
第一步,通常意义下我们对斐波那契数列的定义考虑到初值会分三条,但在上述假设下我们可以给出一条式子来定义,即:
第二步,累加得到:
第三步,移项即可得到 \(F(z)=\dfrac{z}{1-z-z^2}\)
第四步,我们考虑更一般的情况,如果有理函数 \(R(z)=\dfrac{P(z)}{Q(z)}\) ,其中 \(P(z)Q(z)\) 均为整式函数,我们应该如何处理?
如果 \(P(z)\) 次数不小于 \(Q(z)\) ,很明显我们可以通过多项式除法取出一个整式。那么接下来我们只考虑 \(P(z)\) 次数小于 \(Q(z)\) 的情况。
由于 \(Q(z)\) 是整式函数,我们考虑一个特殊的有理函数
为什么考虑这个,因为这个具有展开形式,并且若干个这个有理函数的和可以表示许多有理函数,再加上一个多项式的调整,我们可以得到任意有理函数。
形式化的来说,我们有如下的做法:
我们发现 \(T(z)\) 只能是我们多项式除法得到的商式,\(S(z)\) 就是 \(P(z)\) 对 \(Q(z)\) 的余式与 \(Q(z)\) 得到的新有理函数的分解,为了方便,下面的 \(R(z)\) 表示这个新的有理函数, \(P(z)\) 表示余式。
很明显,为了凑起来后分母一样,如果我们假设 \(Q(z)\) 的 \(l\) 个根分别为 \(\alpha_1...\alpha_l\) ,那么有 \(\rho_k=\dfrac{1}{\alpha_k}\) 。或者我们考虑 \(Q(z)=q_0(1-\alpha_1z)...(1-\alpha_kz)\) 的反射多项式 \(Q^R(z)=q_0(z-\rho_1)...(z-\rho_l)\) ,其反射多项式的根就是我们需要的 \(\rho\)
接下来,我们考虑如果这 \(l\) 个根互不相同的做法。
很明显,这时 \(\forall k=1,2...l,m_k=0\) 。此时,我们需要构造合适的 \(a_k\) ,使得 \(H(z)=R(z)-S(z)\equiv 0\) 。我们的证明思路分两步:
第二步比较简单,假设我们已经证明了第一步了。如果 \(H(z)\) 非零,那么这个极限显然不收敛。但是由于 \(R(z)\) 和 \(S(z)\) 均是分子次数小于分母的有理函数,那么这两个函数在无穷处的极限肯定都是零,所以 \(H(z)\) 在无穷处的极限也是零。于是 \(H(z)\equiv 0\) 。
现在返回来看第一步,我们注意到如果 \(H(z)\) 是一个非多项式的有理函数,那么根据分母的根,一定可以得到 \(H(z)\) 存在无穷点。考虑到 \(H(z)\) 的构成,我们只需要让 \(H(z)\) 在 \(x=\alpha_k\) 处的取值恒非无穷即可。并且我们可以注意到, \(R(z)\) 和 \(S(z)\) 在这些位置都是一阶无穷大。所以欲证明 \(\lim\limits_{z\rightarrow\alpha_k}H(z)\ne\infty\) ,只需证明:
注意到:
然后运用洛必达得到
两个极限相等我们就得到
所以 \([z^n]R(z)=\sum\limits_{k=1}^la_k\rho^n,a_k=-\dfrac{\rho_kP(1/\rho_k)}{Q'(1/\rho_k)}\)
回看我们的斐波那契数列,我们得到 \(\rho_1=\dfrac{1+\sqrt{5}}{2},\rho_2=\dfrac{1-\sqrt{5}}{2},P(z)=z,Q'(z)=-1-2z\)
于是 \(a_k=-\dfrac{\rho P(1/\rho)}{Q(1/\rho)}=\dfrac{-1}{-1-2/\rho}=\dfrac{\rho}{\rho+2}\)
所以 \(a_1=\dfrac{1}{\sqrt{5}},a_2=-\dfrac{1}{\sqrt{5}}\)
所以 \(f_n=\dfrac{1}{\sqrt{5}}\left(\dfrac{1+\sqrt{5}}{2}\right)^n-\dfrac{1}{\sqrt{5}}\left(\dfrac{1-\sqrt{5}}{2}\right)^n\)
实际的话,解出 \(\rho\) 之后,根据初值解一下系数的方程是更好的选择。