官术网_书友最值得收藏!

5.1 斐波那契數列

列昂納多·斐波那契(Leonardo Fibonacci,1170—1250),意大利數學家,他在研究兔子繁殖問題時,發現了斐波那契數列。一般而言,兔子在出生兩個月后就有繁殖能力,一對兔子每個月能生出一對小兔子。如果所有兔子都不死,那么一年以后可以繁殖多少對兔子?

我們不妨從一對新出生的小兔子開始分析一下:

第一月,兔子剛出生,只有一對兔子;

第二月,小兔子還沒有繁殖能力,所以還是一對;

第三月,生下一對小兔,共有兩對兔子;

第四月,老兔子又生下一對,因為小兔子還沒有繁殖能力,所以一共是三對。這樣繼續畫下去我們可以得到圖5-1。

圖5-1 兔子繁殖示意圖

我們把月份、成年兔子對數和幼仔對數放入一張表,依此類推可以列出表5-1。

表5-1 兔子繁殖表

幼仔對數=前月成兔對數

成兔對數=前月成兔對數+前月幼仔對數

總體對數=本月成兔對數+本月幼仔對數

可以看出幼仔對數、成兔對數、總體對數都構成了一個數列。這個數列有個十分明顯的特點:前面相鄰兩項之和構成了后一項。這樣我們把兔子對數寫下來構成斐波那契數列:

1,1,2,3,5,8,13,21,34,55,89,144,…

如果設an為該數列的第n項(nN*),那么相鄰項的關系可以寫成如下形式:

an=an-1+an-2

此時,

a1=1,a2=1 an=an-1+an-2?。?i>n≥3,nN*

有了這個公式,我們用程序來產生斐波那契數列的前100項,并把它存在一張表里面,程序如下:

這個程序里面使用了列表這種數據結構,列表是Python中一個重要的數據對象,可以把它看成一個一排編了號的抽屜,抽屜中能存放任何能放得下的東西,可以通過編號訪問,可以排序,可以增加。表5-2列出了常用的操作中列表的方法,表中假設已經定義了一個列表L。

表5-2 常用的列表操作方法

人們發現,當n趨向于無窮大時,前一項與后一項的比值越來越逼近黃金分割0.618,我們可以試著計算一下:

1÷1=1,

1÷2=0.5,

2÷3=0.666…,

3÷5=0.6,

5÷8=0.625,

……

55÷89=0.617 977…,

144÷233=0.618 025…,

……

46 368÷75 025=0.618 033 988 6…,

……

可以看到,從第11個數開始,已經與黃金分割比的前三位小數一致了。仍然用前面的小程序來核算一下:

主站蜘蛛池模板: 合川市| 鄂托克前旗| 崇阳县| 景洪市| 哈尔滨市| 会同县| 若尔盖县| 玉龙| 巴彦淖尔市| 炎陵县| 什邡市| 武隆县| 邛崃市| 驻马店市| 修武县| 鹿邑县| 竹溪县| 太仓市| 磴口县| 绥芬河市| 长宁区| 台中市| 丰宁| 榆社县| 香港| 商丘市| 常宁市| 宝山区| 延川县| 孟津县| 屯门区| 星子县| 南投市| 漳浦县| 特克斯县| 德庆县| 精河县| 夏邑县| 乳源| 绥宁县| 巩义市|