利用生成函數求斐波那契數列通項公式
利用生成函數求斐波那契數列通項公式
先吐槽一下,學習這玩意兒的時候真的是深深的明白了自己的弱小,人家的一個"解得"我居然解了兩個小時。。qwq
前置知識
斐波那契數列:
\[f_i = f_{i-1} + f_{i - 2}\]
\[f_0 = f_1 = 1\]
普通生成函數:
簡單來說用多項式\(\sum_{i=0}^{\infty} a_ix^i\)的系數表示序列的元素
同時因為我們不關心\(x\)的取值,因此\(\sum_{i=0}^{\infty}a_ix^i\)又稱作以\(x\)為自由元的形式冪級數
常見的有:
\(\frac{1}{1-x} = 1 + x + x^2 + x^3 + \dots + x^{\infty}\)
證明:
後半部分可以直接由通項公式得到\(S_n = \frac{1-x^{n+1}}{1-x}\),當\(x \in (-1, 1)\),那麽\(\lim_{n\to +\infty} x^{n+1} = 0\)
將\(x\)替換為\(xk\)得
\(\frac{1}{1-kx} = 1 + kx + k^2x^2 + k^3x^3 \dots + k^{\infty}x^{\infty}\)
解法
設\(A = 1 + 1x + 2x^2 + 3x^3 + 5x^4 + 8x^5 \dots\)
根據遞推式,我們可以這樣變化,顯然有
\[ \begin{aligned} A = \ 1 + 1x + &2x^2 + 3x^3 + 5x^4 + 8x^5 \dots \xA = \ \ \qquad x + &1x^2 + 2x^3 + 3x^4 + 5x^5\dots \x^2A =\qquad \qquad &1x^2 + 1x^3 + 2x^4 + 3x^5 \dots \end{aligned} \]
那麽可以得到一個方程\(A - xA - x^2A = 1\)
整理一下\(A =\frac{1}{1-x-x^2}\)
這樣我們就得到了斐波那契數列的生成函數,然而並沒有什麽卵用,因為我們不能直接通過觀察看出每一項的系數。
現在考慮一下,我們接下來可以幹什麽。我們已經知道了\(\frac{1}{1-x}\)和\(\frac{1}{1-kx}\)所表示的序列。接下來要幹的當然是把\(\frac{1}{1-x-x^2}\)往上面的兩個式子轉化。
\(\frac{1}{1-x-x^2}\)這玩意兒下半部分是個一元二次方程,我們可以配方
\[1-x-x^2 = (1-\phi_1x)(1-\phi_2x)\]
\[\phi_1 = \frac{1+\sqrt{5}}{2}, \phi_2 = \frac{1-\sqrt{5}}{2}\]
(解的時候可以直接把後面的式子拆開,把這兩個式子對應項聯立組成方程組, \(\phi_1 \phi_2\)的取值是可以反過來的)
這個時候我們發現已經找到與\(\frac{1}{1-kx}\)的聯系了,我們可以把\(\frac{1}{(1-\phi_1 x)(1-\phi_2 x)}\)拆成求和的形式。可以裂一下項
原式變為\(\frac{a}{1-\phi_1x} + \frac{b}{1-\phi_2 x}\),然後再解一個方程\(a(1-\phi_2 x) + b(1-\phi_1x) = 1\)
解這個方程就沒那麽休閑了,這裏我們選擇把\(x\)當做主元對方程進行變換
\[(a+b - 1) - x(a\phi_2 + b\phi_1) = 0 \]
這樣就好處理了,只要列個二元一次方程組
\[ \begin{cases} a-b-1 = 0\a\phi_2 + b\phi_1 = 0 \end{cases} \]
解一下可以得到\(a = \frac{1}{\sqrt{5}} \phi_1, b = -\frac{1}{\sqrt{5}} \phi_2\)
帶回去
\[A = \frac{\phi_1}{\sqrt{5}} \frac{1}{1-\phi_1x} - \frac{\phi_2}{\sqrt{5}} \frac{1}{1-\phi_2x}\]
那麽第\(n\)項的公式為
\[A_n = \frac{1}{\sqrt{5}} ((\frac{1+\sqrt{5}}{2})^{n+1} - (\frac{1-\sqrt{5}}{2})^{n+1})\]
參考資料
生成函數-羅煜楚(版權原因暫不公開)
特別感謝張一釗老師qwq
利用生成函數求斐波那契數列通項公式