| 即斐波那契数列,“斐波那契数列”的发明者,是意大利数学家列昂纳多·斐波那契(LeonardoFibonacci,生于公元1170年,卒于1240年。籍贯大概是比萨)。他被人称作“比萨的列昂纳多”。1202年,他撰写了《珠算原理》(LiberAbaci)一书。他是第一个研究了印度和阿拉伯数学理论的欧洲人。他的父亲被比萨的一家商业团体聘任为外交领事,派驻地点相当于今日的阿尔及利亚地区,列昂纳多因此得以在一个阿拉伯老师的指导下研究数学。他还曾在埃及、叙利亚、希腊、西西里和普罗旺斯研究数学。 斐波那契数列指的是这样一个数列: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*X2
 C1*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=1
 n≥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()
 {
 longfib[40]={1,1};
 inti;
 for(i=2;i<40;i++)
 {
 fib[i]=fib[i-1]+fib[i-2];
 }
 for(i=0;i<40;i++)
 {
 printf("F%d==%d\n",i,fib);
 }
 return0;
 }
 
 【Pascal语言程序】
 var
 fib:array[0..40]oflongint;
 i:integer;
 begin
 fib[0]:=1;
 fib[1]:=1;
 fori:=2to39do
 fib[i]:=fib[i-1]+fib[i-2];
 fori:=0to39do
 write('F',i,'=',fib[i]);
 end.
 【数列与矩阵】
 对于斐波那契数列1,1,2,3,5,8,13…….有如下定义
 F(n)=f(n-1)+f(n-2)
 F(1)=1
 F(2)=1
 对于以下矩阵乘法
 F(n+1)=11*F(n)
 F(n)10F(n-1)
 它的运算就是
 F(n+1)=F(n)+F(n-1)
 F(n)=F(n)
 可见该矩阵的乘法完全符合斐波那契数列的定义
 设1为B,11为C
 110
 可以用迭代得到:
 斐波那契数列的某一项F(n)=(BC^(n-2))1
 这就是斐波那契数列的矩阵乘法定义.
 另矩阵乘法的一个运算法则A¬^n(n为偶数)=A^(n/2)*A^(n/2).
 因此可以用递归的方法求得答案.
 时间效率:O(logn),比模拟法O(n)远远高效。
 代码(PASCAL)
 {变量matrix是二阶方阵,matrix是矩阵的英文}
 programfibonacci;
 type
 matrix=array[1..2,1..2]ofqword;
 var
 c,cc:matrix;
 n:integer;
 functionmultiply(x,y:matrix):matrix;
 var
 temp:matrix;
 begin
 temp[1,1]:=x[1,1]*y[1,1]+x[1,2]*y[2,1];
 temp[1,2]:=x[1,1]*y[1,2]+x[1,2]*y[2,2];
 temp[2,1]:=x[2,1]*y[1,1]+x[2,2]*y[2,1];
 temp[2,2]:=x[2,1]*y[1,2]+x[2,2]*y[2,2];
 exit(temp);
 end;
 functiongetcc(n:integer):matrix;
 var
 temp:matrix;
 t:integer;
 begin
 ifn=1thenexit(c);
 t:=ndiv2;
 temp:=getcc(t);
 temp:=multiply(temp,temp);
 ifodd(n)thenexit(multiply(temp,c))
 elseexit(temp);
 end;
 procedureinit;
 begin
 readln(n);
 c[1,1]:=1;
 c[1,2]:=1;
 c[2,1]:=1;
 c[2,2]:=0;
 ifn=1then
 begin
 writeln(1);
 halt;
 end;
 ifn=2then
 begin
 writeln(1);
 halt;
 end;
 cc:=getcc(n-2);
 end;
 procedurework;
 begin
 writeln(cc[1,1]+cc[1,2]);
 end;
 begin
 init;
 work;
 end.
 【数列值的另一种求法】
 F(n)=[((sqrt(5)+1)/2)^n]
 其中[x]表示取距离x最近的整数。
 
 【数列的前若干项】
 11
 22
 33
 45
 58
 613
 721
 834
 955
 1089
 11144
 12233
 13377
 14610
 15987
 161597
 172584
 184181
 196765
 2010946
 |