二階齊次線性遞推通項公式的尋找
前置技能:斐波那契數列與二階線性遞推
斐波那契數列f(n) 是遞歸定義的:
f(n)=f(n−1)+f(n−2),n≥2
其中f(0)=0,f(1)=1 。如果使用艾弗森約定處理分段,可以用一個公式統一:
f(n)=f(n−1)+f(n−2)+[n=1]
一般地,一個二階線性遞推式被遞歸地定義:
g(n)=αg(n−1)+βg(n−2),n≥2
其中g(0)=λ,g(1)=μ 。同樣地,使用艾弗森約定可以變形爲:
g(n)=αg(n−1)+βg(n−2)+λ[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+ρz∑ngnzn=k+ρzG(n)
解得:G(n)=k1−ρz
反過來,如果我們知道了一個函數的生成函數形如:G(n)=k1−ρz ,我們就可以斷言,這個數列的第n 項必然是[zn]G=kρn 。這將是我們解決問題的關鍵。
計算過程
g(n)=αg(n−1)+βg(n−2)+λ[n=0]+(μ−λα)[n=1]
由於g(n−1)=⟨0,g(0),g(1),…⟩ ,可以發現其生成函數爲zG(n) 。同樣的,g(n−2) 的生成函數是z2G(n) 。對於僅在n=1 時有值的項(μ−λa)[n=1] ,其生成函數自然是(μ−λa)z 。上式被改寫爲:
G(n)=αzG(n)+βz2G(n)+λ+(μ−λa)z
解方程得到:
G(n)=λ+(μ−λα)z1−αz−βz2
考慮將這個式子表示成A1−pz+B1−qz 的形式,以便用上面的技術解決問題。通分後得到分母的方程:
(1−pz)(1−qz)=1−αz−βz2
也就是:
pq=−βp+q=α
解得:
p=α+t2,q=α−t2,t=α2+4β−−−−−−√
分子的方程則是:
A(1−qz)+B(1−pz)=λ+(μ−λα)z
展開並解方程,得到:
A=λt−λα+2μ2t,B=λα+λt−2μ2t
則我們斷言,原方程第n 項[zn]G=Apn+Bqn 。整理後也就是:
λt−λα+2μ2t(α+t2)n+λα+λt−2μ2t(α−t2)n
代入數據發現可以滿足斐波那契數列和一些小的情景,我們基本可以確定這個公式的正確性。
其他
運用同樣的技術,我們可以方便地處理含有常數項甚至f(n) 項的線性遞推數列。