高中不會學不過競賽課程有的斐波那契數列,“斐波那契數列”的發明者,是義大利數學家列昂納多•斐波那契(Leonardo Fibonacci,生於公元1170年,卒於1240年。籍貫大概是比薩)。他被人稱作“比薩的列昂納多”。1202年,他撰寫了《珠算原理》(Liber Abaci)一書。他是第一個研究了印度和阿拉伯數學理論的歐洲人。他的父親被比薩的一家商業團體聘任為外交領事,派駐地點相當於今日的阿爾及利亞地區,列昂納多因此得以在一個阿拉伯老師的指導下研究數學。他還曾在埃及、敘利亞、希臘、西西里和普羅旺斯研究數學。斐波那契數列指的是這樣一個數列:1,1,2,3,5,8,13,21…… 這個數列從第三項開始,每一項都等於前兩項之和。它的通項公式為:(1/√5)*{[(1+√5)/2]^n - [(1-√5)/2]^n}【√5表示根號5】 很有趣的是:這樣一個完全是自然數的數列,通項公式居然是用無理數來表達的。 【該數列有很多奇妙的屬性】比如:隨著數列項數的增加,前一項與後一項之比越逼近黃金分割0.6180339887…… 還有一項性質,從第二項開始,每個奇數項的平方都比前後兩項之積多1,每個偶數項的平方都比前後兩項之積少1。如果你看到有這樣一個題目:某人把一個8*8的方格切成四塊,拼成一個5*13的長方形,故作驚訝地問你:為什麼64=65?其實就是利用了斐波那契數列的這個性質:5、8、13正是數列中相鄰的三項,事實上前後兩塊的面積確實差1,只不過後面那個圖中有一條細長的狹縫,一般人不容易注意到。如果任意挑兩個數為起始,比如5、-2.4,然後兩項兩項地相加下去,形成5、-2.4、2.6、0.2、2.8、3、5.8、8.8、14.6……等,你將發現隨著數列的發展,前後兩項之比也越來越逼近黃金分割,且某一項的平方與前後兩項之積的差值也交替相差某個值。斐波那契數列的第n項同時也代表了集合{1,2,...,n}中所有不包含相鄰正整數的子集個數。【斐波那契數列別名】斐波那契數列又因數學家列昂納多•斐波那契以兔子繁殖為例子而引入,故又稱為“兔子數列”。斐波那契數列一般而言,兔子在出生兩個月後,就有繁殖能力,一對兔子每個月能生出一對小兔子來。如果所有兔都不死,那麼一年以後可以繁殖多少對兔子? 我們不妨拿新出生的一對小兔子分析一下: 第一個月小兔子沒有繁殖能力,所以還是一對; 兩個月後,生下一對小兔民數共有兩對; 三個月以後,老兔子又生下一對,因為小兔子還沒有繁殖能力,所以一共是三對; ------ 依次類推可以列出下表: 經過月數:0123456789101112 兔子對數:1123581321345589144233 表中數字1,1,2,3,5,8---構成了一個數列。這個數列有關十分明顯的特點,那是:前面相鄰兩項之和,構成了後一項。 這個數列是義大利中世紀數學家斐波那契在<算盤全書>中提出的,這個級數的通項公式,除了具有a(n+2)=an+a(n+1)/的性質外,還可以證明通項公式為:an=1/√[(1+√5/2) n-(1-√5/2) n](n=1,2,3.....)【斐波那挈數列通項公式的推導】斐波那契數列:1,1,2,3,5,8,13,21…… 如果設F(n)為該數列的第n項(n∈N+)。那麼這句話可以寫成如下形式:F(1)=F(2)=1,F(n)=F(n-1)+F(n-2) (n≥3)顯然這是一個線性遞推數列。通項公式的推導方法一:利用特徵方程線性遞推數列的特徵方程為:X^2=X+1解得X1=(1+√5)/2, X2=(1-√5)/2.則F(n)=C1*X1^n + C2*X2^n∵F(1)=F(2)=1∴C1*X1 + C2*X2C1*X1^2 + C2*X2^2解得C1=1/√5,C2=-1/√5∴F(n)=(1/√5)*{[(1+√5)/2]^n - [(1-√5)/2]^n}【√5表示根號5】通項公式的推導方法二:普通方法設常數r,s使得F(n)-r*F(n-1)=s*[F(n-1)-r*F(n-2)]則r+s=1, -rs=1n≥3時,有F(n)-r*F(n-1)=s*[F(n-1)-r*F(n-2)]F(n-1)-r*F(n-2)=s*[F(n-2)-r*F(n-3)]F(n-2)-r*F(n-3)=s*[F(n-3)-r*F(n-4)]……F(3)-r*F(2)=s*[F(2)-r*F(1)]將以上n-2個式子相乘,得:F(n)-r*F(n-1)=[s^(n-2)]*[F(2)-r*F(1)]∵s=1-r,F(1)=F(2)=1上式可化簡得:F(n)=s^(n-1)+r*F(n-1) 那麼:F(n)=s^(n-1)+r*F(n-1)= s^(n-1) + r*s^(n-2) + r^2*F(n-2)= s^(n-1) + r*s^(n-2) + r^2*s^(n-3) + r^3*F(n-3)……= s^(n-1) + r*s^(n-2) + r^2*s^(n-3) +……+ r^(n-2)*s + r^(n-1)*F(1)= s^(n-1) + r*s^(n-2) + r^2*s^(n-3) +……+ r^(n-2)*s + r^(n-1)(這是一個以s^(n-1)為首項、以r^(n-1)為末項、r/s為公差的等比數列的各項的和)=[s^(n-1)-r^(n-1)*r/s]/(1-r/s)=(s^n - r^n)/(s-r)r+s=1, -rs=1的一解為 s=(1+√5)/2, r=(1-√5)/2則F(n)=(1/√5)*{[(1+√5)/2]^n - [(1-√5)/2]^n}【C語言程式】main() { long fib[40] = {1,1}; int i; for(i=2;i
高中不會學不過競賽課程有的斐波那契數列,“斐波那契數列”的發明者,是義大利數學家列昂納多•斐波那契(Leonardo Fibonacci,生於公元1170年,卒於1240年。籍貫大概是比薩)。他被人稱作“比薩的列昂納多”。1202年,他撰寫了《珠算原理》(Liber Abaci)一書。他是第一個研究了印度和阿拉伯數學理論的歐洲人。他的父親被比薩的一家商業團體聘任為外交領事,派駐地點相當於今日的阿爾及利亞地區,列昂納多因此得以在一個阿拉伯老師的指導下研究數學。他還曾在埃及、敘利亞、希臘、西西里和普羅旺斯研究數學。斐波那契數列指的是這樣一個數列:1,1,2,3,5,8,13,21…… 這個數列從第三項開始,每一項都等於前兩項之和。它的通項公式為:(1/√5)*{[(1+√5)/2]^n - [(1-√5)/2]^n}【√5表示根號5】 很有趣的是:這樣一個完全是自然數的數列,通項公式居然是用無理數來表達的。 【該數列有很多奇妙的屬性】比如:隨著數列項數的增加,前一項與後一項之比越逼近黃金分割0.6180339887…… 還有一項性質,從第二項開始,每個奇數項的平方都比前後兩項之積多1,每個偶數項的平方都比前後兩項之積少1。如果你看到有這樣一個題目:某人把一個8*8的方格切成四塊,拼成一個5*13的長方形,故作驚訝地問你:為什麼64=65?其實就是利用了斐波那契數列的這個性質:5、8、13正是數列中相鄰的三項,事實上前後兩塊的面積確實差1,只不過後面那個圖中有一條細長的狹縫,一般人不容易注意到。如果任意挑兩個數為起始,比如5、-2.4,然後兩項兩項地相加下去,形成5、-2.4、2.6、0.2、2.8、3、5.8、8.8、14.6……等,你將發現隨著數列的發展,前後兩項之比也越來越逼近黃金分割,且某一項的平方與前後兩項之積的差值也交替相差某個值。斐波那契數列的第n項同時也代表了集合{1,2,...,n}中所有不包含相鄰正整數的子集個數。【斐波那契數列別名】斐波那契數列又因數學家列昂納多•斐波那契以兔子繁殖為例子而引入,故又稱為“兔子數列”。斐波那契數列一般而言,兔子在出生兩個月後,就有繁殖能力,一對兔子每個月能生出一對小兔子來。如果所有兔都不死,那麼一年以後可以繁殖多少對兔子? 我們不妨拿新出生的一對小兔子分析一下: 第一個月小兔子沒有繁殖能力,所以還是一對; 兩個月後,生下一對小兔民數共有兩對; 三個月以後,老兔子又生下一對,因為小兔子還沒有繁殖能力,所以一共是三對; ------ 依次類推可以列出下表: 經過月數:0123456789101112 兔子對數:1123581321345589144233 表中數字1,1,2,3,5,8---構成了一個數列。這個數列有關十分明顯的特點,那是:前面相鄰兩項之和,構成了後一項。 這個數列是義大利中世紀數學家斐波那契在<算盤全書>中提出的,這個級數的通項公式,除了具有a(n+2)=an+a(n+1)/的性質外,還可以證明通項公式為:an=1/√[(1+√5/2) n-(1-√5/2) n](n=1,2,3.....)【斐波那挈數列通項公式的推導】斐波那契數列:1,1,2,3,5,8,13,21…… 如果設F(n)為該數列的第n項(n∈N+)。那麼這句話可以寫成如下形式:F(1)=F(2)=1,F(n)=F(n-1)+F(n-2) (n≥3)顯然這是一個線性遞推數列。通項公式的推導方法一:利用特徵方程線性遞推數列的特徵方程為:X^2=X+1解得X1=(1+√5)/2, X2=(1-√5)/2.則F(n)=C1*X1^n + C2*X2^n∵F(1)=F(2)=1∴C1*X1 + C2*X2C1*X1^2 + C2*X2^2解得C1=1/√5,C2=-1/√5∴F(n)=(1/√5)*{[(1+√5)/2]^n - [(1-√5)/2]^n}【√5表示根號5】通項公式的推導方法二:普通方法設常數r,s使得F(n)-r*F(n-1)=s*[F(n-1)-r*F(n-2)]則r+s=1, -rs=1n≥3時,有F(n)-r*F(n-1)=s*[F(n-1)-r*F(n-2)]F(n-1)-r*F(n-2)=s*[F(n-2)-r*F(n-3)]F(n-2)-r*F(n-3)=s*[F(n-3)-r*F(n-4)]……F(3)-r*F(2)=s*[F(2)-r*F(1)]將以上n-2個式子相乘,得:F(n)-r*F(n-1)=[s^(n-2)]*[F(2)-r*F(1)]∵s=1-r,F(1)=F(2)=1上式可化簡得:F(n)=s^(n-1)+r*F(n-1) 那麼:F(n)=s^(n-1)+r*F(n-1)= s^(n-1) + r*s^(n-2) + r^2*F(n-2)= s^(n-1) + r*s^(n-2) + r^2*s^(n-3) + r^3*F(n-3)……= s^(n-1) + r*s^(n-2) + r^2*s^(n-3) +……+ r^(n-2)*s + r^(n-1)*F(1)= s^(n-1) + r*s^(n-2) + r^2*s^(n-3) +……+ r^(n-2)*s + r^(n-1)(這是一個以s^(n-1)為首項、以r^(n-1)為末項、r/s為公差的等比數列的各項的和)=[s^(n-1)-r^(n-1)*r/s]/(1-r/s)=(s^n - r^n)/(s-r)r+s=1, -rs=1的一解為 s=(1+√5)/2, r=(1-√5)/2則F(n)=(1/√5)*{[(1+√5)/2]^n - [(1-√5)/2]^n}【C語言程式】main() { long fib[40] = {1,1}; int i; for(i=2;i