生成函数
普通生成函数(ordinary generating function,OGF)
定义序列 a 的普通生成函数为:
F(x)=∑nanxn
a 既可以是有穷序列,也可以是无穷序列。
例子:
1、序列 a=⟨1,2,3⟩ 的 OGF 为 1+2x+3x2;
2、序列 a=⟨1,1,1,⋯⟩ 的 OGF 为 ∑n=0xn;
封闭形式
在运用生成函数的过程中,我们不会一直使用形式幂级数的形式,而会适时地转化为封闭形式以更好地化简。
例子:
1、序列 a=⟨1,1,1,⋯⟩ 的 OGF 的封闭形式为:
xF(x)+1=F(x)F(x)=11−x
2、序列 a=⟨a,a,a,⋯⟩ 的 OGF 的封闭形式为:
xF(x)+a=F(x)F(x)=a1−x
3、序列 a=⟨1,p,p2,⋯⟩ 的 OGF 的封闭形式为:
pxF(x)+1=F(x)F(x)=11−px
4、序列 a=⟨(m0),(m1),(m2),⋯⟩ 的 OGF 的封闭形式为:
F(x)=m∑n=0(mn)xn=(1+x)m
斐波那契数列的生成函数
斐波那契数列定义为:
a0=0a1=1an=an−1+an−2(n≥2)
斐波那契数列 a=⟨0,1,1,2,⋯⟩ 的 OGF 的封闭形式为:
F(x)=xF(x)+x2F(x)+xF(x)=x1−x−x2
现在需要额外思考的是,如何将 F(x) 从封闭形式再一次转化为形式幂级数的形式,进而求出斐波那契的通项公式。
考虑求解一个待定系数的方程:
A1−ax+B1−bx=x1−x−x2
通分得到:
A−Abx+B−aBx(1−ax)(1−bx)=x1−x−x2
待定项系数相等,我们得到:
⎧⎪
⎪⎨⎪
⎪⎩A+B=0−Ab−aB=1a+b=1ab=−1
解得:
⎧⎪
⎪
⎪
⎪
⎪
⎪
⎪⎨⎪
⎪
⎪
⎪
⎪
⎪
⎪⎩A=1√5B=−1√5a=1+√52b=1−√52
得到斐波那契数列的通项公式:
x1−x−x2=∑n≥0xn1√5((1+√52)n−(1−√52)n)
基本运算
加减
考虑两个序列 a,b 的普通生成函数,分别为 F(x),G(x)。那么有:
F(x)±G(x)=∑n(an±bn)xn
因此 F(x)±G(x) 是序列 ⟨an±bn⟩ 的普通生成函数。
乘法
考虑乘法运算,也就是卷积:
F(x)G(x)=∑nxnn∑i=0aibn−i
因此 F(x)G(x) 是序列 ⟨∑ni=0aibn−i⟩ 的普通生成函数。
若令 G(x)=11−x,那么 F(x)G(x) 所对应的序列为序列 a 的前缀和序列。
其他
xF(x) 对应的序列为序列 a 右移一位后所对应的序列。
F(x)−a0x 对应的序列为序列 a 左移一位后所对应的序列。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧