Fibonacci Sequence's Transformation

Albert Huang MED student | CS enthusiast

這篇筆記主要會整理如何對費波那契數列(Fibonacci Sequence)的遞迴式進行數學運算,並將其轉換為可以項數索引值表示的一般式結構。

What’s Fibonacci Sequence?

首先簡單定義著名的費波那契數列遞迴式:

滿足存在以下關係:

則將此序列稱為費波那契數列(Fibonacci Sequence)。

因此我們可以透過以上的等式列出此數列的前幾項:

History of Fibonacci Sequence

公元 1150 年,印度數學家 Gopala 在研究箱子包裝物件長寬剛好為 1 和 2 的可行方法數目時,首先描述這個數列。而接著在歐洲的義大利數學家費波那契(Fibonacci)則在描述兔群生長問題時,使用了這個數列來描述之,費波那契數列也因此開始受到廣泛的研究。

該問題細部如下:

  1. 第一個月初有一對剛誕生的兔子
  2. 第二個月之後(第三個月初)牠們可以生育
  3. 每月每對可生育的兔子會誕生下一對新兔子
  4. 兔子永不死去

這項問題的每個月存在兔子對數即構成費波那契數列。

費波那契數列的應用十分廣泛,包括黃金比例、植物學的葉形分布、以及許多的數學性質、最佳化理論等,對於這項數列都有著十分神奇的關聯性,事實上數學家廣泛認為這與費波那契數列的黃金比例性質有關。

Thinking

在將費波那契數列轉換為一般式之前,我們先來複習高中所學到的遞迴式轉換為一般式的過程。

Example 1 (一階遞迴)

已知數列的首項,且該數列滿足,求的一般式

Solution:







Example 1運用了累乘法來對遞迴式進行處理,這類對遞迴式進行四則運算的手法經常被運用到解決單純一階遞迴一般式的問題利用遞迴項恆等式的四則運算來消去不必要的項目,獲得最終以表示的一般項。也許你會問,遞迴式化簡真的如此簡單嗎?讓我們看看另一個例子。

Example 2 (二階遞迴)

,求的一般式

Solution:
將原遞迴式利用未知數移項一下,可得

需求適當使得遞迴式左右皆呈單項,列式可得
解方程式得

代回原遞迴式得

代回原遞迴式得

利用以上兩個結果解聯立方程式

可得,代入發現符合一般式規則,即可求得一般式為

上面Example 2提到了一個巧妙的變換手法,我們稱此方法為階差法,但費波那契數列是否能夠用類似的手法來處理呢?

答案是可以的。費波那契數列事實上是二階遞迴的一種,因此可以利用上方舉例的Example 2手法來處理,但因為算式的處理難易度考量,處理的手法可能會有些許的不同。此外,二階遞迴的化簡方法亦不僅一種,以下將會介紹除了階差法在內的三種方式來化簡之,一起來看看~

階差法

Method 1

根據費波那契數列遞迴式利用未知數移項,可得

我們使用階差法的目標在於使兩邊成為單項,因此可得等式

解得

接著分別使用兩個的實根代回原遞迴式並解聯立方程式(可參考上方Example 2),即可得到一般式。

但這個方法太早牽涉到根號的運算,因此解的過程會非常辛苦…😵
讓我們來看看另一種較為簡單的階差法處理方式吧!

Method 2

我們同樣利用未知數來對遞迴式移項,但形式有些不同:

接著代入索引值:

此時考慮式,可得

再代入一次索引值:

此時接著考慮式,可得等式

代回求得

最後一步就是將的值求出!

以遞迴式規則可以輕易求出,將其代回上方的式求解可得等式

解得,代回原式!

求得費波那契數列一般項

現在知道為什麼費氏數列的一般項化簡會這麼麻煩了嗎~:P

矩陣法

上面的階差法運用了類似於等比數列的概念將費波那契數列轉換為一般項,因此若運用類似的方法,推測矩陣應亦能達成此效果。以下為推導過程:

利用觀察法,可以將費氏數列的原遞迴式改寫為矩陣形式

繼續下推可得

故我們只要將求出即可獲得一般式。而因為此法為求矩陣高次方,故直接利用對角化性質求解。

令原矩陣之特徵值(Eigenvalue)為,特徵向量為,矩陣,需求解使得(特徵方程式定義)。經過移項可得是為了簡化計算而乘入,不影響計算結果,根據矩陣與行列式互換性質得,解得,可求出其中兩個特徵向量

以此為基礎對矩陣進行對角化可得

,故

將其代回原式並將矩陣乘開即可求得費波那契數列一般項

P.S.最後一步建議不要用根與係數把次多項式乘開!不然可能會因為消不掉而卡住…乘開成這樣是最好消去的狀態!(除非您是通靈電神,可以在兩個根自由互換 Orz)

我想起了被矩陣對角化支配的”美好”時光…><

生成函數法

西元 1843 年, 法國數學家棣美弗(Jacques-Philippe-Marie Binet)利用一般生成函數求出費氏數列的一般式。這是人類紀錄史上第一次求出費氏數列一般項,也是生成函數應用於數學史的拓展。

但事實上我原本並不知道這個做法,生成函數並不在高中教材中,但就應用層面而言,它的使用廣泛度事實上遠遠超乎我們的想像,舉凡我們常用的排列組合、遞迴關係等,都可以將原來的形式遞迴式轉換為函數的形式。但要完整的介紹生成函數事實上並不容易,我對於生成函數也不算熟悉,因此在此就僅整理生成函數如何轉換費波那契數列的部分。

利用普通生成函數(OGF,ordinary generating function)冪級數對費氏數列做一般數列轉換成生成函數,可將其表為,令其為並展開可得:

對該函數動一點手腳:

再來一點:

接著代入,當時,以式可得

(分項對消)

此時需引入勞倫級數(Laurent series)概念,在此不解說其深入概念,但是利用之,考慮以上部分分數展開式,可得該級數為

代入後與原比較係數可得費波那契數列一般項

註 1:這一步的定義事實上不夠嚴謹與詳細,詳情請見生成函數之生成方法與限制,其中牽涉到映成函數、光滑函數與完全歸納法等的運算。

Conclusion

費氏數列的神奇之處,在於其遞迴式將無理數的運算表示為有理數的遞迴式,這在數學的運算上事實上並不常見。而透過我們所推導出的一般式,我們也可以發現,費波那契數列可以被表為線性的形式,這凸顯了其之線性組合的特性,事實上,這個性質的類似方法也可以做為導出一般項的作法,一起來看看最後一種導出法吧~

Bonus : 線性置換法

這裡所謂的線性,是指在透過利用費氏數列的組合下,求得一般項的方法。首先,我們可以十分簡單地推出以下兩個費氏數列的性質:

1.均為費氏數列,則亦為費氏數列。

,即可推出。

2.承上,亦為費氏數列

,即可推出。

由上兩點可以證明費氏數列經過線性組合仍為費氏數列。

因此我們可以考慮在均為費氏數列(不考慮之條件)的情況下,取 ,令新數列,則新數列為一費氏數列。從上我們可以知道,只要取得適當之數列與代數即可。

但我們如何定義的存在呢?我們首先透過我們熟悉的數列來定義之,因為其是費氏數列之子元素,這樣的取法不影響我們對於費氏數列的定義。首先,若為等差數列,他是沒有辦法滿足費氏數列的性質的。因此,我們考慮等比數列。若屬於等比數列,又其兩者為費氏數列,可令其中一者之一般項為,因此透過費氏數列定義,,設定,則可列出算式,解得

此時帶回原式解,且原數列須滿足費氏數列之性質,由此可列出以下方程式:

解得,將四項條件代回原式即可求得費波那契數列一般項

References

https://en.wikipedia.org/wiki/Fibonacci_number
https://en.wikipedia.org/wiki/Eigenvalues_and_eigenvectors
https://en.wikipedia.org/wiki/Generating_function
https://en.wikipedia.org/wiki/Laurent_series
http://oz.nthu.edu.tw/~u9721201/penguin2/math/article/FibonacciSequence.pdf

  • Title: Fibonacci Sequence's Transformation
  • Author: Albert Huang
  • Created at : 2021-08-25 14:35:31
  • Updated at : 2026-06-26 14:08:16
  • Link: https://blog.albert-web.tw/2021/08/25/fibonacci-sequence-trans/
  • License: This work is licensed under CC BY-NC-SA 4.0.