可以看《具体数学》
假设我们已知递归关系:gn=l∑k=1ckgn−k ,现在我们想给出 gn 关于 n 的封闭形式。那么生成函数提供了一套机械式的计算方式。
分四步
一个更加强大的工具应当具备解决简单问题的能力,这里我们以斐波那契数列为例
第一步,通常意义下我们对斐波那契数列的定义考虑到初值会分三条,但在上述假设下我们可以给出一条式子来定义,即:
第二步,累加得到:
第三步,移项即可得到 F(z)=z1−z−z2
第四步,我们考虑更一般的情况,如果有理函数 R(z)=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 个根分别为 α1...αl ,那么有 ρk=1αk 。或者我们考虑 Q(z)=q0(1−α1z)...(1−αkz) 的反射多项式 QR(z)=q0(z−ρ1)...(z−ρl) ,其反射多项式的根就是我们需要的 ρ
接下来,我们考虑如果这 l 个根互不相同的做法。
很明显,这时 ∀k=1,2...l,mk=0 。此时,我们需要构造合适的 ak ,使得 H(z)=R(z)−S(z)≡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 之后,根据初值解一下系数的方程是更好的选择。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了