[关闭]
@ljt12138 2017-04-18T12:13:45.000000Z 字数 2138 阅读 1059

二阶齐次线性递推通项公式的寻找


前置技能:斐波那契数列与二阶线性递推

斐波那契数列f(n)是递归定义的:

f(n)=f(n1)+f(n2),n2

其中f(0)=0,f(1)=1。如果使用艾弗森约定处理分段,可以用一个公式统一:

f(n)=f(n1)+f(n2)+[n=1]

一般地,一个二阶线性递推式被递归地定义:

g(n)=αg(n1)+βg(n2),n2

其中g(0)=λ,g(1)=μ。同样地,使用艾弗森约定可以变形为:

g(n)=αg(n1)+βg(n2)+λ[n=0]+(μλα)[n=1]

容易证明这两种表达形式具有等价性。

技术:生成函数

一个数列g(n)的生成函数为G(n)=g(n),被定义为:

G(n)=ng(n)zn

其中z是一个形式变量。其中许多生成函数可以被写成紧凑的封闭形式,《具体数学》中指出,在写成封闭形式时我们一般不必考虑级数的收敛性。我们考虑一种特殊形式生成函数的封闭形式,其中g(n)=kρn,根据定义有:

G(n)=nkρnzn=k+ρzngnzn=k+ρzG(n)

解得:G(n)=k1ρz

反过来,如果我们知道了一个函数的生成函数形如:G(n)=k1ρz,我们就可以断言,这个数列的第n项必然是[zn]G=ρn。这将是我们解决问题的关键。

计算过程

g(n)=αg(n1)+βg(n2)+λ[n=0]+(μλα)[n=1]

由于g(n1)=0,g(0),g(1),,可以发现其生成函数为zG(n)。同样的,g(n2)的生成函数是z2G(n)。对于仅在n=1时有值的项(μλa)[n=1],其生成函数自然是(μλa)z。上式被改写为:

G(n)=αzG(n)+βz2G(n)+λ+(μλa)z

解方程得到:

G(n)=λ+(μλα)z1αzβz2

考虑将这个式子表示成A1pz+B1qz的形式,以便用上面的技术解决问题。通分后得到分母的方程:

(1pz)(1qz)=1αzβz2

也就是:

pq=βp+q=α

解得:

p=α+t2,q=αt2,t=α2+4β

分子的方程则是:

A(1qz)+B(1pz)=λ+(μλα)z

展开并解方程,得到:

A=λtλα+2μ2t,B=λα+λt2μ2t

则我们断言,原方程第n[zn]G=Apn+Bqn。整理后也就是:

λtλα+2μ2t(α+t2)n+λα+λt2μ2t(αt2)n

代入数据发现可以满足斐波那契数列和一些小的情景,我们基本可以确定这个公式的正确性。

其他

运用同样的技术,我们可以方便地处理含有常数项甚至f(n)项的线性递推数列。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注