數學實驗:2-斐波那契數列_第1頁
數學實驗:2-斐波那契數列_第2頁
數學實驗:2-斐波那契數列_第3頁
數學實驗:2-斐波那契數列_第4頁
數學實驗:2-斐波那契數列_第5頁
已閱讀5頁,還剩6頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、實驗一 斐波那契數列一、 實驗目的與要求1 認識Fibonacci數列,體驗發現其通項公式的過程;2 了解matlab軟件中進行數據顯示與數據擬合的方式;3 掌握matlab軟件中plot, polyfit等函數的基本用法;4 提高對數據進行分析與處理的能力。二、 問題描述某人養了一對兔(公母各一只),一個月后這對兔子生育了一對小兔。假設小兔一個月后就可以長大成熟,而每對成熟的兔每月都將生育一對小兔,且兔子不會死亡。問:一年后共有多少對兔子?三、 問題分析這個問題,最早由意大利數學家斐波那契(Fibonacci,1170-1240)于1202年在其著作珠算原理中提出。根據問題的假設,兔子的總數

2、目是如下數列:1,1,2,3,5,8,13,21,34,55,89,144,233,問題的答案就是此數列的第12項,即一年后共有144對兔子。這個數列通常被稱為斐波那契(Fibonacci)數列,研究這個問題就是研究Fibonacci數列。把這個問題作更深入的研究,我們會問:第n個月后,總共有多少對兔子?即Fibonacci數列的第n項是多少?這就需要我們探素Fibonacci數列的通項公式。根據問題的描述,我們知道第n+2個月后兔子的對數,等于第n+1個月后兔子的對數(表示原來就有的老兔子對數),加上第n個月后兔子的對數(表示生育出來的新兔子對數)。這樣就得到關于Fibonacci數列的一個

3、遞推公式:利用matlab軟件的數據可視化功能將這些數據顯示成平面曲線的形式后,我們可以觀察到Fibonacci數列的變化規律;通過matlab軟件的數據擬合功能,我們可以大概知道Fibonacci數列的函數關系式,結合上面的遞推公式,就可以推導出來Fibonacci數列的通項公式。四、 背景知識介紹1 數據的可視化將離散的數據:,看成平面坐標系里的點:,利用matlab軟件的plot函數在平面坐標系里劃出一個點列,就可以實現離散數據的可視化。plot函數的基本使用格式為:plot(y),其中參數y表示豎坐標,即需要顯示的數據。例1 y=1:20;y=y.3;plot(y)2 數據的擬合數據擬

4、合就是尋找一個目標函數,作為被擬合數據的近似函數關系。目標函數的類型,可以是多項式、指數函數等。作數據擬合,首先需要估計目標函數的類型,這一點可以通過數據可視化來觀察得到,而一階多項式是最常見的目標函數,此時稱為線性回歸。確定擬合系數的原則是最小二乘法,即所有誤差的平方和取最小值。在matlab軟件中以多項式為目標函數作數據擬合的函數是polyfit,它的基本使用格式為:polyfit (x,y,n)。其中(x,y)是被擬合的數據,即平面上的一個點列,而n是事先確定的多項式的階數。例2 x=1,3,4,5,6,7,8,9,10;y=10,5,4,2,1,1,2,3,4; p=polyfit (

5、x,y,2)結果:調用f = polyval(p,x),可以查看擬合多項式的對應于x的離散數值。3 數列的通項公式尋找一個整標函數,使得它在n處的函數值,等于數列的第n項的值,這個函數就是數列的通項公式。4 黃金分割把一條線段分割為兩部分,使其中一部分與全長之比等于另一部分與這部分之比(如下圖)。其比值是一個無理數,取其前三位數字的近似值是0.618。由于按此比例設計的造型十分協調美觀,因此稱之為黃金分割。五、 實驗過程本試驗將Fibonacci數列的有限項,看成是待處理的數據。首先利用matlab軟件的可視化功能,將這些數據顯示在平面坐標系中,觀察其圖形類似什么曲線,結論是:指數函數的曲線。

6、進一步,利用指數函數與對數函數的互逆關系,將原有數據取對數,再觀察其曲線形狀是否類似直線,以驗證原來的觀察是否正確。通過觀察到的目標函數,然后利用matlab軟件的數據擬合功能,得到Fibonacci數列通項公式的近似關系。最后,從近似關系出發,推導出來Fibonacci數列的通項公式。1 觀察數據的大概函數關系為了研究Fibonacci數列的變化規律,我們取此數列的前30項來觀察。利用Matlab軟件的數據可視化功能,將這些數據顯示在平面坐標系中,觀察其中蘊涵的函數關系。具體的實現流程為:(1)定義數組fn;(2)顯示數組fn。具體的代碼如下:function plotfibo(n) %定義

7、函數顯示Fibonacci數列前n項fn=1,1; %將數列的前兩項放到數組fn中for i=3:n %fn的第3項到第n項 fn=fn,fn(i-2)+fn(i-1); %將第i項添加到數組fn中end %循環結束plot(fn) %將裝有數列前n項的數組顯示出來這個函數的調用方式是:plotfibo(30),顯示出來的圖像為圖1,經觀察,覺得曲線的形狀象指數函數的曲線,其數據無限增大。可以改變參數n的值,反復觀察。 圖1 n=30 圖2 n=50 圖3 n=500 圖4 n=10002 進一步驗證上一步得到的結論經過上一步的觀察,覺得這些數據應該是指數函數的形式。為了進一步驗證這個結論是否

8、正確,可以利用指數函數與對數函數的互逆關系。如果這些數據確實是指數函數的形式,則經過取對數后應該是一個線性關系,即一階多項式,從圖形上看應該象一條直線。因此,再利用Matlab軟件的數據可視化功能,將這些數據取對數后顯示在平面坐標系中,觀察它是否象一條直線。具體的實現流程為:(1)定義數組fn;(2)數組fn取對數;(3)顯示數組fn。具體的代碼如下:function plotlnfibo(n) %顯示取對數后的前n項fn=1,1; %將數列的前兩項放到數組fn中for i=3:n %fn的第3項到第n項 fn=fn,fn(i-2)+fn(i-1); %將第i項添加到數組fn中end %循環結

9、束fn=log(fn); %將原來的數據取對數plot(fn) %將裝有數列前n項的數組顯示出來這個函數的調用方式是:plotlnfibo(30),顯示出來的圖像為圖5,經觀察,覺得它確實象一條直線。可以改變參數n的值,反復觀察。 圖5 n=30 圖6 n=50 圖7 n=500 圖8 n=10003 獲得數據的近似關系式經過以上第一步的觀察,確定Fibonacci數列的數據是指數函數的關系,第二步驗證了第一步得到的結論,因此我們認為Fibonacci數列的數據關系就是指數函數,取對數后就是線性函數,即一階多項式。利用Matlab軟件的數據擬合功能,通過取對數后的數據,用一階多項式擬合出它的函

10、數關系式,可以得到Fibonacci數列通項公式的一個近似表達式。具體的實現流程為:(1)定義數組fn;(2)數組fn取對數;(3)用一階多項式擬合數組fn。具體的代碼如下:function fitlnfibo(n) %根據取對數后的數據,擬合出線性表達式fn=1,1; %將數列的前兩項放到數組fn中for i=3:n %fn的第3項到第n項 fn=fn,fn(i-2)+fn(i-1); %將第i項添加到數組fn中end %循環結束xn=1:n; %定義橫坐標fn=log(fn); %將原來的數據取對數polyfit(xn,fn,1) %擬合裝有數列前n項的數組這個函數的調用方式是:fitln

11、fibo(30),運行后返回結果是:0.4799, -0.7768。這兩個數據就是一階多項式的系數,即:為了提高精度,可以加大n的值。取n1000時得到:從上面的表達式,可以得到數列通項公式的近似:4 觀察擬合數據與原始數據的吻合程度經過第三步的擬合,得到了Fibonacci數列近似的通項公式,為了觀察其吻合程度,我們將Fibonacci數列的擬合數據與原始數據的圖形顯示出來,進行對比觀察。具體的實現流程為:(1)定義數組fn1,fn2;(2)顯示數組fn1,fn2。具體的代碼如下:function plotfibo2(n) %顯示擬合數據與原始數據的前n項fn1=; %裝擬合數據的數組for

12、 i=1:n %fn1的第1項到第n項 fn1=fn1,0.4476*1.618i; %將第i項添加到數組fn1中end fn2=1,1; %裝原始數據的數組,前兩項放到數組fn2中for i=3:n %fn2的第3項到第n項 fn2=fn2,fn2(i-2)+fn2(i-1); %將第i項添加到數組fn2中end x=1:n;plot(x,fn1,x,fn2,'r*') %顯示, fn1蘭線,fn2紅星這個函數的調用方式是:fitlnfibo2(20),顯示出來的圖像為圖9,或fitlnfibo2(50),顯示出來的圖像為圖10。 圖9 n=20 圖10 n=505 猜測Fi

13、bonacci數列的通項公式通過以上的觀察和分析,我們知道Fibonacci數列的數據大概是指數函數的關系。因此,我們猜測它的通項公式具有形式:。將這個表達式代入遞推公式中,得到:。經過簡化得到:這是一個一元二次的代數方程,其兩個根形式如下:考慮到Fibonacci數列的數據無限增大,我們取,于是得到通項公式如下:上面的公式對嗎?我們可以來驗證。取n=1和n=2代入上面的公式中計算,顯然得不到,因此它不是Fibonacci數列的通項公式。但這個公式并非一無是處,我們可以來考慮這個公式與Fibonacci數列到底相差多少。因此,我們引入以下一個數列:可以驗證,這個新的數列也滿足同樣的遞推公式:,

14、因此我們猜測它同樣是指數函數的形式,可以假設其表達式為:,代入遞推公式后,同樣可以得到:。這里的r顯然不同于上面的r,故這個r取值為:,從而得到:。故有:由條件確定其中的常數,得到:可以驗證,它確實就是Fibonacci數列的通項公式。這個公式是法國數學家比內(Binet)在1843年發現的,稱為比內公式。6 推導Fibonacci數列的通項公式Fibonacci數列具有如下遞推關系:這個等式實際上是一個二階常系數線性齊次差分方程,可以仿照二階常系數線性齊次微分方程來求解。首先由遞推等式得到如下特征方程:這是一個一元二次的代數方程,其兩個根形式如下:因此,我們得到差分方程的通解如下:取n=1和

15、n=2代入上面的公式中,解得:從而得到:六、 結論與應用1 Fibonacci數列的階通過以上實驗過程,我們得到了Fibonacci數列的通項公式,它類似一個指數函數,當n無限增大時,其數據也無限增大,變化的階是:在Fibonacci數列的通項公式中,出現了和等無理數,而它們運算以后的結果確是正整數,多么奇妙啊!2 Fibonacci數列與黃金分割數的關系上面的兩個無理數之間,存在著這樣的關系:而就是著名的黃金分割數。因此,Fibonacci數列的通項公式又可以寫成如下形式:可以驗證,Fibonacci數列與黃金分割數之間還有如下的關系:(怎么證明上式?)3 Fibonacci數列通項公式的其

16、它形式Fibonacci數列的通項公式還有其它形式,比如:4 自然界中的Fibonacci數列Fibonacci數列與自然界中的許多現象有著緊密的聯系。例如,樹木的生長,由于新生的枝條,往往需要一段“休息”時間,供自身生長,而后才能萌發新枝。所以,一株樹苗在一段間隔,例如一年,以后長出一條新枝;第二年新枝“休息”,老枝依舊萌發;此后,老枝與“休息”過一年的枝同時萌發,當年生的新枝則次年“休息”。這樣,一株樹木各個年份的枝椏數,便構成斐波那契數列。這個規律,就是生物學上著名的“魯德維格定律”。 又如植物的分枝生長、向日葵種子的排列、花瓣的數量、晶體的結構等都是Fibonacci數列。花瓣的數量,一般都是Fibonacci數以斐波那契螺旋方式的排列如果順時針與逆時針螺旋的數目,是斐波那契數列中相鄰的2項,可稱其為斐波那契螺旋,也被稱作黃金螺旋。這樣的布局能使植物的生長疏密得當、最充分地利用陽光和空氣。5 應用Fibonacci數列在純粹數學、運籌優化、計算機科學等領域具有重大的應用價值,在現代物理、準晶體結構、化學等領域有直接的應用。本實驗研究的是Fibonacci數列的變化規律,而數列本質上就是一些數據。因此,對于一般的數據(比如:從調查中獲得的數據、從試驗中獲得的數據),

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論