生成函数

生成函数

普通生成函数(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)=11x

2、序列 a=a,a,a, 的 OGF 的封闭形式为:

xF(x)+a=F(x)F(x)=a1x

3、序列 a=1,p,p2, 的 OGF 的封闭形式为:

pxF(x)+1=F(x)F(x)=11px

4、序列 a=(m0),(m1),(m2), 的 OGF 的封闭形式为:

F(x)=n=0m(mn)xn=(1+x)m

斐波那契数列的生成函数

斐波那契数列定义为:

a0=0a1=1an=an1+an2(n2)

斐波那契数列 a=0,1,1,2, 的 OGF 的封闭形式为:

F(x)=xF(x)+x2F(x)+xF(x)=x1xx2

现在需要额外思考的是,如何将 F(x) 从封闭形式再一次转化为形式幂级数的形式,进而求出斐波那契的通项公式。

考虑求解一个待定系数的方程:

A1ax+B1bx=x1xx2

通分得到:

AAbx+BaBx(1ax)(1bx)=x1xx2

待定项系数相等,我们得到:

{A+B=0AbaB=1a+b=1ab=1

解得:

{A=15B=15a=1+52b=152

得到斐波那契数列的通项公式:

x1xx2=n0xn15((1+52)n(152)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)=nxni=0naibni

因此 F(x)G(x) 是序列 i=0naibni 的普通生成函数。

若令 G(x)=11x,那么 F(x)G(x) 所对应的序列为序列 a 的前缀和序列。

其他

xF(x) 对应的序列为序列 a 右移一位后所对应的序列。

F(x)a0x 对应的序列为序列 a 左移一位后所对应的序列。

posted @   chzhc  阅读(30)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
levels of contents
点击右上角即可分享
微信分享提示