生成函数是一种用于解决与序列有关的问题的强力工具。通过生成函数,我们可以将一个序列映射为一个函数,并将对序列的操作映射为对这个函数的操作,从而轻松解出在序列视角下难以解决的问题。
类似傅里叶变换和拉普拉斯变换,生成函数的本质是 从另一个方式看待序列 ,或是 在另一个“同构”的空间中处理序列问题 。
生成函数的定义
对于一个序列
其中,
例如,对于数列
在本文中我们使用
生成函数的性质
前面说到过,我们可以将对序列的操作变为对生成函数的操作。生成函数与原序列有以下性质:
- 序列之和的生成函数是生成函数之和 :对于序列
,有 。 - 序列乘标量的生成函数是生成函数乘标量:对于序列
,有 。 - 序列的卷积的生成函数是生成函数之积 :对于序列
,有 。 - 前缀和性质 :对于序列
,若 ,则 ,其中 是生成函数中的形式变量。 - 差分性质:对于序列
,若 ,则 ,其中 是生成函数中的形式变量。
生成函数的封闭形式
生成函数的真正强大之处在于,它可以借助序列自身的特性写成一个简单的封闭形式。考虑斐波那契数列
因为
我们将
这是一个一次方程,可以解得
由封闭解解出通项
现在的问题是,如何由这个数列得到斐波那契数列的通项?我们首先介绍一下 几何级数 。
几何级数是这样的级数:
通过把这个级数进一步展开,我们就可以得到斐波那契数列的通项公式。但实际上由于用到了二项式定理,这个展开会非常麻烦,因此我们可以在使用几何级数进行展开之前,先使用 部分分式 将原式拆成两个简单的分式:
因此,
除了使用几何级数以外,我们还可以使用 泰勒展开 来进行还原:泰勒公式将函数写成多项式的形式,而这天然就和我们想要的形式一致。考虑
Comments NOTHING