一句話先回答問(wèn)題:因?yàn)殪巢瞧鯏?shù)列在數(shù)學(xué)和生活以及自然界中都非常有用。 下面我就盡我所能,講述一下斐波那契數(shù)列。 一、起源和定義 斐波那契數(shù)列最早被提出是印度數(shù)學(xué)家Gopala,他在研究箱子包裝物件長(zhǎng)度恰好為1和2時(shí)的方法數(shù)時(shí)首先描述了這個(gè)數(shù)列。也就是這個(gè)問(wèn)題: 有n個(gè)臺(tái)階,你每次只能跨一階或兩階,上樓有幾種方法? 而最早研究這個(gè)數(shù)列的當(dāng)然就是斐波那契(Leonardo Fibonacci)了,他當(dāng)時(shí)是為了描述如下情況的兔子生長(zhǎng)數(shù)目:
這個(gè)數(shù)列出自他赫赫有名的大作《計(jì)算之書》(沒有維基詞條,坑),后來(lái)就被廣泛的應(yīng)用于各種場(chǎng)合了。這個(gè)數(shù)列是這么定義的: The On-Line Encyclopedia of Integer Sequences? (OEIS?)序號(hào)為A000045 - OEIS (注意,并非滿足第三條的都是斐波那契數(shù)列,盧卡斯數(shù)列(A000032 - OEIS)也滿足這一特點(diǎn),但初始項(xiàng)定義不同) 二、求解方法 講完了定義,再來(lái)說(shuō)一說(shuō)如何求對(duì)應(yīng)的項(xiàng)。斐波那契數(shù)列是編程書中講遞歸必提的,因?yàn)樗前凑者f歸定義的。所以我們就從遞歸開始講起。 1.遞歸求解
這是編程最方便的解法,當(dāng)然,也是效率最低的解法,原因是會(huì)出現(xiàn)大量的重復(fù)計(jì)算。為了避免這種情況,可以采用遞推的方式。 2.遞推求解
遞推的方法可以在O(n)的時(shí)間內(nèi)求出Fib(n)的值。但是這實(shí)際還是不夠好,因?yàn)楫?dāng)n很大時(shí)這個(gè)算法還是無(wú)能為力的。接下來(lái)就要來(lái)講一個(gè)有意思的東西:矩陣。 3.矩陣遞推關(guān)系 學(xué)過(guò)代數(shù)的人可以看出,下面這個(gè)式子是成立的: 不停地利用這個(gè)式子迭代右邊的列向量,會(huì)得到下面的式子: 這樣,問(wèn)題就轉(zhuǎn)化為如何計(jì)算這個(gè)矩陣的n次方了,可以采用快速冪的方法。快速冪_百度百科是利用結(jié)合律快速計(jì)算冪次的方法。比如我要計(jì)算
4.通項(xiàng)公式 無(wú)論如何,對(duì)于一個(gè)數(shù)列,我們都是希望可以建立 ![]() (1)構(gòu)造等比數(shù)列 設(shè) ![]() 化簡(jiǎn)得 ![]() 比較系數(shù)得 ![]() 解得 ![]() ![]() 由于 ![]() 故有 ![]() ![]() ![]() ![]() 解得 ![]() ![]() ![]() 到了現(xiàn)在,把上述解出的結(jié)果全部帶入上式,稍作變形,我們就可以寫出斐波那契數(shù)列的通項(xiàng)公式了 ![]() 這個(gè)方法還是比較麻煩的,但是非?;A(chǔ)。事實(shí)上還有其他更簡(jiǎn)單的方法。 (2)線性代數(shù)解法 這個(gè)解法首先用到 公式,如果可以找到矩陣 ![]() ![]() 首先令 ![]() ![]() 兩個(gè)特征向量為 ![]() 而 解出 ![]() 然后可以輕易得到通項(xiàng)公式,上邊已經(jīng)給出,這里不再贅述。 (3)特征方程解法 通過(guò)方法(2),我們可以推導(dǎo)出一般的線性遞推數(shù)列的通項(xiàng)求解方法,也就是特征方程法。我們可以發(fā)現(xiàn),對(duì)于這種數(shù)列,通項(xiàng)總是可以表示為 ![]() ![]() ![]() a.由遞推數(shù)列構(gòu)造特征方程 ![]() ![]() b.帶入 ![]() ![]() ![]() 解得 ![]() (4)母函數(shù)法(此方法涉及組合數(shù)學(xué)知識(shí)) 設(shè)斐波那契數(shù)列的母函數(shù)為 ![]() ![]() ![]() ![]() ![]() 解得 ![]() 再由冪級(jí)數(shù)展開公式 ![]() 合并同類項(xiàng)并與 ![]() 到這里,求解斐波那契數(shù)列通項(xiàng)的方法就說(shuō)的差不多了。無(wú)論是計(jì)算機(jī)求解還是數(shù)學(xué)推導(dǎo),都體現(xiàn)出了非常多的技巧。而斐波那契數(shù)列的許多特性,就更加有意思了。 三、斐波那契數(shù)列的數(shù)學(xué)性質(zhì) 1.與黃金比的關(guān)系 由通項(xiàng)公式,求相鄰兩項(xiàng)的商的極限,結(jié)果是黃金比,所以斐波那契數(shù)列又稱為黃金比數(shù)列。斐波那契數(shù)列和黃金比還和一個(gè)有趣的數(shù)學(xué)概念——連分?jǐn)?shù)有關(guān): 2.一些簡(jiǎn)單的規(guī)律 (1)任意連續(xù)四個(gè)斐波那契數(shù),可以構(gòu)造出一個(gè)畢達(dá)哥拉斯三元組。如取1,1,2,3. 中間兩數(shù)相乘再乘2 ==》 4 外層2數(shù)乘積==》3 中間兩數(shù)平方和==》5 得到3,4,5. 下一組是5,12,13,,有興趣的讀者可以再試著推一推,證明也是容易的。 (2)整除性 每3個(gè)連續(xù)的斐波那契數(shù)有且只有一個(gè)被2整除, 每4個(gè)連續(xù)的斐波那契數(shù)有且只有一個(gè)被3整除, 每5個(gè)連續(xù)的斐波那契數(shù)有且只有一個(gè)被5整除, 每6個(gè)連續(xù)的斐波那契數(shù)有且只有一個(gè)被8整除, 每7個(gè)連續(xù)的斐波那契數(shù)有且只有一個(gè)被13整除, ………… 每n個(gè)連續(xù)的斐波那契數(shù)有且只有一個(gè)被 (3)一些恒等式 3.楊輝三角中的斐波那契數(shù)列 如圖所示,每條斜線上的數(shù)的和就構(gòu)成斐波那契數(shù)列。
4.相關(guān)數(shù)列:盧卡斯(Lucas)數(shù)列 盧卡斯數(shù)列的定義除了第0項(xiàng)為2之外,與斐波那契數(shù)列完全一致。即 其通項(xiàng)公式為: 盧卡斯數(shù)列和斐波那契數(shù)列有這些關(guān)系: ![]() ![]() ![]() ![]() ![]() 5.組合數(shù)學(xué) (1)一些恒等式 (2)同余特性 ![]() ![]() 當(dāng)p為大于5的素?cái)?shù)時(shí),有: ![]() ![]() ![]() 其中 斐波那契數(shù)列還有許許多多的性質(zhì),我就不再一一介紹了。跑題了這么久,終于開始要真正回答問(wèn)題了:斐波那契數(shù)列有什么用? 四、斐波那契數(shù)列的應(yīng)用 1.算法 a.斐波那契堆
b.歐幾里得算法的時(shí)間復(fù)雜度 歐幾里得算法是求解兩個(gè)正整數(shù)最大公約數(shù)的算法,又稱輾轉(zhuǎn)相除法。代碼如下:
在最壞的情況下,我們可以證明,若a較小,需要計(jì)算的次數(shù)為n,則 ![]() 2.物理學(xué):氫原子能級(jí)問(wèn)題
3.自然界:植物的生長(zhǎng) 科學(xué)家發(fā)現(xiàn),一些植物的花瓣、萼片、果實(shí)的數(shù)目以及排列的方式上,都有一個(gè)神奇的規(guī)律,它們都非常符合著名的斐波那契數(shù)列。例如:薊,它們的頭部幾乎呈球狀。在下圖中,你可以看到兩條不同方向的螺旋。我們可以數(shù)一下,順時(shí)針旋轉(zhuǎn)的(和左邊那條旋轉(zhuǎn)方向相同)螺旋一共有13條,而逆時(shí)針旋轉(zhuǎn)的則有21條。此外還有菊花、向日葵、松果、菠蘿等都是按這種方式生長(zhǎng)的。 還有菠蘿、松子等,也都符合這個(gè)特點(diǎn),一般會(huì)出現(xiàn)34,55,89和144這幾個(gè)數(shù)字。 最后上一張“斐波那契樹”的圖片: 是的,這玩意就長(zhǎng)這樣,這種植物是存在的。 4.波浪理論與股市 這個(gè)答主不懂,大家可自行閱讀文章波浪理論斐波那契數(shù)列與黃金分割率。 不過(guò)波浪的形狀確實(shí)符合下邊要說(shuō)的斐波那契螺旋: 5.斐波那契螺旋 斐波那契螺旋又稱黃金螺旋,在自然界中廣泛存在。如圖是一個(gè)邊長(zhǎng)為斐波那契數(shù)列的正方形組成的矩形。 (加一句:看著這個(gè)圖,是不是能發(fā)現(xiàn) 是顯而易見的?) 這樣連起來(lái)就是斐波那契螺旋了 貝殼螺旋輪廓線 向日葵的生長(zhǎng) 神奇的花 6.建筑學(xué) 7.據(jù)說(shuō)一個(gè)小男孩參考斐波那契數(shù)列發(fā)明了太陽(yáng)能電池樹: 一名13歲的男孩根據(jù)斐波那契數(shù)列發(fā)明了太陽(yáng)能電池樹,其產(chǎn)生的電力比太陽(yáng)能光伏電池陣列多20-50%。斐波那契數(shù)列類似從0和1開始,之后的數(shù)是之前兩數(shù)的和,如0,1,1,2,3,5,8,13,21...Aidan Dwye在觀察樹枝分叉時(shí)發(fā)現(xiàn)它的分布模式類似斐波那契數(shù)列,這是大自然演化的一種結(jié)果,可能有助于樹葉進(jìn)行光合作用。 8.斐波那契螺旋形的搖椅 媽媽搖椅是設(shè)計(jì)師Patrick Messier為自己的妻子兼合作伙伴Sophie Fournier設(shè)計(jì)的,當(dāng)時(shí)他們剛有了第一個(gè)寶寶。 五、數(shù)學(xué)上的擴(kuò)展 (1)廣義斐波那契數(shù)列 定義: ![]() ![]() 其通項(xiàng)為: 當(dāng) ![]() (2)反斐波那契數(shù)列 定義: ![]() 反斐波那契數(shù)列相鄰項(xiàng)比值的極限為 ![]() (3)巴都萬(wàn)數(shù)列(A000931 - OEIS) 斐波那契數(shù)列可以刻畫矩形,而巴都萬(wàn)數(shù)列則刻畫的是三角形。其定義如下: (4)未解之謎:角谷猜想 對(duì)一個(gè)正整數(shù),若為奇數(shù)則乘3加1,若為奇數(shù)則除以2,通過(guò)有限次這樣的操作,能否使得該數(shù)變成1? 這個(gè)猜想和斐波那契數(shù)列又很大關(guān)系,具體的可以看角谷猜想的斐波那契數(shù)列現(xiàn)象。 六、總結(jié) 斐波那契數(shù)列是各個(gè)學(xué)科中都出現(xiàn)的小滑頭,它許多漂亮的性質(zhì)讓我們著迷。上文我所描述的這些只是它的冰山一角,權(quán)當(dāng)拋磚引玉。大家讀完了我的答案,還可以再結(jié)合自己的專業(yè)去看一些相關(guān)的資料,更好的去了解這個(gè)有趣的數(shù)列。 七、參考文獻(xiàn) |
|