Loading [MathJax]/extensions/TeX/mathchoice.js

生成函数求递推数列通项

生成函数求递推数列通项

可以看《具体数学》

假设我们已知递归关系:gn=lk=1ckgnk ,现在我们想给出 gn 关于 n 的封闭形式。那么生成函数提供了一套机械式的计算方式。

分四步

1.gngk=0,k<0

2.znG(z)

3.G(z)

4.G(z)zngn

一个更加强大的工具应当具备解决简单问题的能力,这里我们以斐波那契数列为例

第一步,通常意义下我们对斐波那契数列的定义考虑到初值会分三条,但在上述假设下我们可以给出一条式子来定义,即:

fn=fn1+fn2+[n=1]

第二步,累加得到:

F(z)=nfnzn=nfn1zn+nfn2zn+n[n=1]zn=zF(z)+z2F(z)+z

第三步,移项即可得到 F(z)=z1zz2

第四步,我们考虑更一般的情况,如果有理函数 R(z)=P(z)Q(z) ,其中 P(z)Q(z) 均为整式函数,我们应该如何处理?

如果 P(z) 次数不小于 Q(z) ,很明显我们可以通过多项式除法取出一个整式。那么接下来我们只考虑 P(z) 次数小于 Q(z) 的情况。

由于 Q(z) 是整式函数,我们考虑一个特殊的有理函数

\dfrac{a}{(1-\rho z)^{m+1}}=\sum\limits_{n\ge 0}\dbinom{n+m}{m}a\rho^nz^n

为什么考虑这个,因为这个具有展开形式,并且若干个这个有理函数的和可以表示许多有理函数,再加上一个多项式的调整,我们可以得到任意有理函数。

形式化的来说,我们有如下的做法:

S(z)=\sum\limits_{k=1}^l\dfrac{a_k}{(1-\rho_kz)^{m_k+1}}

T(z)是一个多项式函数

那么R(z)=S(z)+T(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 。我们的证明思路分两步:

1.证明H(z)是多项式函数

2.由\lim\limits_{z\rightarrow\infty}H(z)=0得到H(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 ,只需证明:

\lim\limits_{z\rightarrow\alpha_k}(z-\alpha_k)H(z)=0

注意到:

\lim\limits_{z\rightarrow\alpha_k}(z-\alpha_k)S(z)=\lim\limits_{z\rightarrow\alpha_k}(z-\alpha_k)\dfrac{a_k}{1-\rho_kz}=-a_k\alpha_k

\lim\limits_{z\rightarrow\alpha_k}(z-\alpha_k)R(z)=\lim\limits_{z\rightarrow\alpha_k}P(z)\dfrac{z-\alpha_k}{Q(z)}

然后运用洛必达得到

\lim\limits_{z\rightarrow\alpha_k}(z-\alpha_k)R(z)=\dfrac{P(\alpha_k)}{Q'(\alpha_k)}

两个极限相等我们就得到

a_k=-\dfrac{P(\alpha_k)}{\alpha_kQ'(\alpha_k)}=-\dfrac{\rho_kP(1/\rho_k)}{Q'(1/\rho_k)}

所以 [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 之后,根据初值解一下系数的方程是更好的选择。

posted @   Pbri  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)

Copyright © 2025 Pbri
Powered by .NET 9.0 on Kubernetes
点击右上角即可分享
微信分享提示