词条 | 斐波那契数列 |
释义 | § 定义 “斐波那契数列”的发明者,是意大利数学家列昂纳多·斐波那契(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) 有趣的是:这样一个完全是自然数的数列,通项公式居然是用无理数来表达的。 在数学上,斐波那契数列是以递归的方法来定义: · F0 = 0 · F1 = 1 · Fn = Fn - 1 + Fn - 2 用文字来说,就是:斐波那契数列由0和1开始,之后的斐波那契数就由之前的两数相加。前边几个斐波那契数是: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946 § 数列的来源 斐波那契数列 根据高德纳的《计算机程序设计艺术》,1150年印度数学家Gopala和Hemachandra在研究箱子包装物件长宽刚好为1和2的可行方法数目时,首先描述这个数列。在西方,最先研究这个数列的人是比萨的列奥纳多·斐波那契。 斐波那契这个数列来自他的《算盘书》中一道并不出名的问题.他当时写这道题只是考虑作为一个智力练习.然后,到了19世纪,法国数学家E·卢卡斯出版了一部四卷本的有关娱乐数学方面的著作,把斐波那契的名字,加到该问题的解答和所出现的数列上去。 《算盘书》中引致斐波那契数列的问题是: 1)假定一个月大小的一对兔子(雄和雌的),对于繁殖还太年轻,但两个月大小的兔子便足够成熟.又假定从第二个月开始,每一个月它们都繁殖一对新的兔子(雄和雌的)。 2)如果每一对兔子的繁殖都按上面说的同样的方式,并假定中途没有兔子死去。试问:从开始起,每个月有多少对兔子呢?斐波那契数列 兔子的对数:斐波那契数列斐波那契数列 很显然,斐波那契数列的每一项,都等于它前两项的和。即Fn = Fn - 1 + Fn - 2 § 数列与黄金分割 开普勒发现,两个相邻斐波那契数的比会无限趋近黄金分割: § 奇妙的属性 随着数列项数的增加,前一项与后一项之比越来越逼近黄金分割的数值0.6180339887…… 从第二项开始,每个奇数项的平方都比前后两项之积多1,每个偶数项的平方都比前后两项之积少1。 如果你看到有这样一个题目:某人把一个8*8的方格切成四块,拼成一个5*13的长方形,故作惊讶地问你:为什么64=65?其实就是利用了斐波那契数列的这个性质:5、8、13正是数列中相邻的三项,事实上前后两块的面积确实差1,只不过后面那个图中有一条细长的狭缝,一般人不容易注意到。 斐波那契数列的第n项同时也代表了集合{1,2,...,n}中所有不包含相邻正整数的子集个数。 斐波那契数列(f(n),f(0)=0,f(1)=1,f(2)=1,f(3)=2……)的其他性质: 1.f(0)+f(1)+f(2)+…+f(n)=f(n+2)-1 2.f(1)+f(3)+f(5)+…+f(2n-1)=f(2n)-1 3.f(0)+f(2)+f(4)+…+f(2n)=f(2n+1)-1 4.[f(0)]^2+[f(1)]^2+…+[f(n)]^2=f(n)·f(n+1) 5.f(0)-f(1)+f(2)-…+(-1)^n·f(n)=(-1)^n·[f(n+1)-f(n)]+1 6.f(m+n)=f(m-1)·f(n-1)+f(m)·f(n) 7.[f(n)]^2=(-1)^(n-1)+f(n-1)·f(n+1) 8.f(2n-1)=[f(n)]^2-[f(n-2)]^2 9.3f(n)=f(n+2)+f(n-2) 10.f(2n-2m-2)[f(2n)+f(2n+2)]=f(2m+2)+f(4n-2m) [ n〉m≥-1,且n≥1] 在杨辉三角中隐藏着斐波那契数列 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 …… 过第一行的“1”向左下方做45度斜线,之后做直线的平行线,将每条直线所过的数加起来,即得一数列1、1、2、3、5、8、…… 斐波那契数与植物花瓣 3………………………百合和蝴蝶花 5………………………蓝花耧斗菜、金凤花、飞燕草 8………………………翠雀花 13………………………金盏草 21………………………紫宛 34、55、89……………雏菊 斐波那契数还可以在植物的叶、枝、茎等排列中发现。例如,在树木的枝干上选一片叶子,记其为数0,然后依序点数叶子(假定没有折损),直到到达与那息叶子正对的位置,则其间的叶子数多半是斐波那契数。叶子从一个位置到达下一个正对的位置称为一个循回。叶子在一个循回中旋转的圈数也是斐波那契数。在一个循回中叶子数与叶子旋转圈数的比称为叶序(源自希腊词,意即叶子的排列)比。多数的叶序比呈现为斐波那契数的比。 斐波那契数列 标签: 数列 黄金分割 数学 比萨 公式 “斐波那契数列”的发明者,是意大利数学家列昂纳多•斐波那契(Leonardo Fibonacci,生于公元1170年,籍贯大概是比萨,卒于1240年后)。他还被人称作“比萨的列昂纳多”。1202年,他撰写了《珠算原理》(Liber Abaci)一书。他是第一个研究了印度和阿拉伯数学理论的欧洲人。他的父亲被比萨的一家商业团体聘任为外交领事,派驻地点相当于今日的阿尔及利亚地区,列昂纳多因此得以在一个阿拉伯老师的指导下研究数学。他还曾在埃及、叙利亚、希腊、西西里和普罗旺斯研究数学。 《达•芬奇密码》中还提到过这个斐波那契数列.. 菲波那契数列指的是这样一个数列: 1,1,2,3,5,8,13,21…… 这个数列从第三项开始,每一项都等于前两项之和 它的通项公式为:[(1+√5)/2]^n /√5 - [(1-√5)/2]^n /√5 【√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……等,你将发现随着数列的发展,前后两项之比也越来越逼近黄金分割,且某一项的平方与前后两项之积的差值也交替相差某个值 1202年,他在所著的《算盘节》中,提出了一个著名而有趣的兔子问题. 假定一对小兔子经过一个月后能够长成一对大兔子,而一对大兔子经过一个月后能够生了一对小兔子.现在我们从一对小兔子开始,用 表示第 个月兔子的总对数,显然, (第1个月只有一对小兔子,第2个月只有一对大兔子), (第3个月一对大兔子生出一对小兔子,总共两对兔子),……我们用下面表示兔子的繁殖规律,图中△表示一对小兔子,○表示一对大兔子,实箭头表示一对小兔子长大成为一对大兔子或表示一对大兔子照样生长,虚箭头表示于对大兔子生出一对小兔子. 于是我们得到一个数列:1,1,2,3,5,8,13,… 仔细观察这个数列,从第3项起每一项都是它前相邻两项的和,它的递推公式是: 根据这个递推公式我们不难计算了, 这就是著名的斐波那契数列. 斐波那契数列有一系列奇妙的性质,现简列以下几条,供读者欣赏. 1.从首项开始,我们依次计算每一项与它的后一项的比值,并精确到小数是第四位: 如果将这一工作不断地继续下去,这个比值将无限趋近于某一个常数,这个常数位于1.618 0与1.618 1之间,它还能准确地用黄金数 表示出来. 2.我们在初中曾经遇到过杨辉三角形,如下图所示,杨辉三角形中草药一虚线上的数的和恰好组成斐波那契数列: 3.在斐波那契数列中,请你验证下列简单的性质: 前 项和 4.在植物王国中,也可以找到斐波那契数列的踪迹.我们来看看下文中提到的叶序现象,它刻画了植物的叶子在枝干上的排列. 图是一根樱树的枝条,假如用一根细线,从它的一片叶子连到下一片,然后沿枝条的方向环绕着再连到了相对原先的初始位置,接着进入第二个轮回. 叶子的排列,能够用以下的叶序分数来表示: 从图可以看出,樱树的叶序分数为 ,观察一些其他植物可以发现:榆树的叶序分数为 ,郁金香的叶序分数为 ,梨树的叶序分数为 ,柳树的叶序分数为 .叶序分数为 这样的比,在许多玫瑰类植物及松果鳞片的排列中都可以看到. 极为有趣的是,所有的叶序分数都是斐波那契数列中交错的两项组成,除非损坏或异常的扭曲而改变了那里的整个排列,不然的活,绝对找不出一种植物,其叶序分数,会与这一规律相违背,这种大自然的鬼斧神工,真是令人惊叹不已! § 相关的数学问题 1.排列组合 有一段楼梯有10级台阶,规定每一步只能跨一级或两级,要登上第10级台阶有几种不同的走法? 这就是一个斐波那契数列:登上第一级台阶有一种登法;登上两级台阶,有两种登法;登上三级台阶,有三种登法;登上四级台阶,有五种登法…… 1,2,3,5,8,13……所以,登上十级,有89种走法。 2.数列中相邻两项的前项比后项的极限 当n趋于无穷大时,F(n)/F(n+1)的极限是多少? 这个可由它的通项公式直接得到,极限是(-1+√5)/2,这个就是黄金分割的数值,也是代表大自然的和谐的一个数字。 3.求递推数列a(1)=1,a(n+1)=1+1/a(n)的通项公式 由数学归纳法可以得到:a(n)=F(n+1)/F(n),将斐波那契数列的通项式代入,化简就得结果。 黄金椭圆图 如果椭圆与圆面积相等,这样的椭圆叫黄金椭圆 参见右图。 设C为椭圆x²/a²+y²/b²=1的焦半径c²=a²-b²,若以c为半径的圆(称为该椭圆的伴随焦点圆),面积与该椭圆面积相等,则b/a=ω,且称此种椭圆为黄金圆。由椭圆面积:S(椭圆)=πab,又圆面积S(圆):πc²,若S(椭圆)=S(圆),则有πc²=-πab,即c=ab,注意:c²=a-²b²,故a²-b²=ab,或者a²-ab-b²=0,由上可解b=(-a±√5a)/2,舍弃负值故有b=(-a+√5a)/2,b/a=(√5-1)/2=ω. 黄金椭圆有如下性质.。 1,黄金椭圆面积S=πωa?,因为b==ωa,。 2,黄金椭圆与其焦点圆在第一象限的焦点为Q(b,√ab)。这只需解下面的方程组即可: x?/a?+y?/b?=1, x?+y?=a?-b?。 3,过原点和Q点(椭圆与其焦点圆在第一象限焦点)的直线l与x轴的正向夹角为Q,则: tgθ=cosθ=√ω,sinθ=ω。 § 斐波那契数列别名 斐波那契数列又因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为“兔子数列”。 一般而言,兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来。如果所有兔都不死,那么一年以后可以繁殖多少对兔子? 我们不妨拿新出生的一对小兔子分析一下: 第一个月小兔子没有繁殖能力,所以还是一对; 两个月后,生下一对小兔民数共有两对; 三个月以后,老兔子又生下一对,因为小兔子还没有繁殖能力,所以一共是三对; ------ 依次类推可以列出下表: 经过月数:---1---2---3---4---5---6---7---8---9---10---11---12 兔子对数:---1---1---2---3---5---8--13--21--34--55--89--144 表中数字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(0) = 0,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)=(√5)*{[(1+√5)/2]^n - [(1-√5)/2]^n} § C语言程序 //利用循环输出前40项 #include int main() { long fib[41] = {0,1}; int i; for(i=2;i<41;i++)fib[i] = fib[i-1]+fib[i-2]; for(i=1;i<41;i++)printf("F%d==%d\",i,fib[i]); getch(); return 0; } //利用递归实现指定项输出 #include int fib(int x); int main() { int x; scanf("%d",&x); printf("%d\",fib(x)); getch(); return 0; } int fib(int x) { if(x == 1 || x == 2) return 1; else return fib(x-1)+fib(x-2); } § C#语言程序 public class Fibonacci { //NormRen static void Main(string[] args) { int x = 0, y = 1; for (int j = 1; j < 10; j++, y = x + y, x = y - x) Console.Write(y + " "); } } § Java语言程序 public class Fibonacci { public static void main(String[] args) { int x=1,y=1; System.out.println(x+" "); for(int i=1;i<=20;i++) { System.out.println(y+" "); y=x+y;x=y-x; } } } § Pascal语言程序 递推: var fib: array[0..40]of longint; i: integer; begin fib[0] := 1; fib[1] := 1; for i:=2 to 39 do fib[i ] := fib[i-1] + fib[i-2]; for i:=0 to 39 do write('F', i, '=', fib[i ]); end. 递归: function fib(n:integer):longint; begin if (n=1) then exit(0); if (n=2) then exit(1); fib:=fib(n-2)+fib(n-1); end; § PL/SQL程序 declare i number :=0; j number :=1; x number :=1; begin while x<1000 loop dbms_output.put_line(x); x:=i+j; i:=j; j:=x; end loop; 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) = 1 1 * F(n) F(n) 1 0 F(n-1) 它的运算就是 F(n+1)=F(n)+F(n-1) F(n)=F(n) 可见该矩阵的乘法完全符合斐波那契数列的定义 设1 为B,1 1为C 1 1 0 可以用迭代得到: 斐波那契数列的某一项F(n)=(BC^(n-2))1 这就是斐波那契数列的矩阵乘法定义。 另矩阵乘法的一个运算法则A¬^n(n为偶数)=A^(n/2)* A^(n/2). 因此可以用递归的方法求得答案。 时间效率:O(logn),比模拟法O(n)远远高效。 代码(PASCAL) {变量matrix是二阶方阵,matrix是矩阵的英文} program fibonacci; type matrix=array[1..2,1..2] of qword; var c,cc:matrix; n:integer; function multiply(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; function getcc(n:integer):matrix; var temp:matrix; t:integer; begin if n=1 then exit(c); t:=n div 2; temp:=getcc(t); temp:=multiply(temp,temp); if odd(n) then exit(multiply(temp,c)) else exit(temp); end; procedure init; begin readln(n); c[1,1]:=1; c[1,2]:=1; c[2,1]:=1; c[2,2]:=0; if n=1 then begin writeln(1); halt; end; if n=2 then begin writeln(1); halt; end; cc:=getcc(n-2); end; procedure work; begin writeln(cc[1,1]+cc[1,2]); end; begin init; work; end. 数列值的另一种求法 F(n) = [ (( sqrt ( 5 ) + 1 ) / 2) ^ n ] 其中[ x ]表示取距离 x 最近的整数。 数列的前若干项 1、 1 2 、1 3 、2 4 、3 5 、5 6 、8 7 、13 8 、21 9 、34 10、 55 11 、89 12 、144 13 、233 14 、377 15 、610 16 、987 17 、1597 18 、2584 19 、4181 20 、6765 ...... § 斐波那契弧线 斐波那契弧线,第一,此趋势线以二个端点为准而画出,例如,最低点反向到最高点线上的两个点。三条弧线均以第二个点为中心画出,并在趋势线的斐波纳契水平:38.2%, 50%和61.8%交叉。 斐波纳契弧线,是潜在的支持点和阻力点水平价格。斐波纳契弧线和斐波纳契扇形线常常在图表里同时绘画出。支持点和阻力点就是由这些线的交汇点得出。 要注意的是弧线的交叉点和价格曲线会根据图表数值范围而改变因为弧线是圆周的一部分,它的形成总是一样的。 斐波那契扇形线 斐波那契扇形线,例如,以最低点反向到最高点线上的两个端点画出的趋势线。然后通过第二点画出一条“无形的(看不见的)”垂直线。然后,从第一个点画出第三条趋势线:38.2%, 50%和61.8%的无形垂直线交叉。 这些线代表了支撑点和阻力点的价格水平。为了能得到一个更为精确的预报,建议和其他斐波纳契工具一起使用。 § 斐波那契数列的应用 数学游戏 一位魔术师拿着一块边长为8英尺的正方形地毯,对他的地毯匠朋友说:“请您把这块地毯分成四小块,再把它们缝成一块长13英尺,宽5英尺的长方形地毯。”这位匠师对魔术师算术之差深感惊异,因为两者之间面积相差达一平方英尺呢!可是魔术师竟让匠师用图2和图3的办法达到了他的目的! 斐波那契数列应用 这真是不可思议的事!你猜得到那神奇的一平方英尺究竟跑到哪儿去呢? 实际上后来缝成的地毯有条细缝,面积刚好就是一平方英尺。 斐波那契数列在自然科学的其他分支,也有许多应用。例如,树木的生长,由于新生的枝条,往往需要一段“休息”时间,供自身生长,而后才能萌发新枝。所以,一株树苗在一段间隔,例如一年,以后长出一条新枝;第二年新枝“休息”,老枝依旧萌发;此后,老枝与“休息”过一年的枝同时萌发,当年生的新枝则次年“休息”。这样,一株树木各个年份的枝桠数,便构成斐波那契数列。这个规律,就是生物学上著名的“鲁德维格定律”。 另外,观察延龄草、野玫瑰、南美血根草、大波斯菊、金凤花、耧斗菜、百合花、蝴蝶花的花瓣,可以发现它们花瓣数目具有斐波那契数:3、5、8、13、21、…… § 斐波那契螺旋 具有13条顺时针旋转和21条逆时针旋转的螺旋的蓟的头部 这些植物懂得斐波那契数列吗?应该并非如此,它们只是按照自然的规律才进化成这样。这似乎是植物排列种子的“优化方式”,它能使所有种子具有差不多的大小却又疏密得当,不至于在圆心处挤了太多的种子而在圆周处却又稀稀拉拉。叶子的生长方式也是如此,对于许多植物来说,每片叶子从中轴附近生长出来,为了在生长的过程中一直都能最佳地利用空间(要考虑到叶子是一片一片逐渐地生长出来,而不是一下子同时出现的),每片叶子和前一片叶子之间的角度应该是222.5度,这个角度称为“黄金角度”,因为它和整个圆周360度之比是黄金分割数0.618033989……的倒数,而这种生长方式就决定了斐波那契螺旋的产生。向日葵的种子排列形成的斐波那契螺旋有时能达到89,甚至144条。 三角形的三边关系定理和斐波那契数列的一个联系 现有长为144cm的铁丝,要截成n小段(n>2),每段的长度不小于1cm,如果其中任意三小段都不能拼成三角形,则n的最大值为多少? 分析:由于形成三角形的充要条件是任何两边之和大于第三边,因此不构成三角形的条件就是任意两边之和不超过最大边。截成的铁丝最小为1,因此可以放2个1,第三条线段就是2(为了使得n最大,因此要使剩下来的铁丝尽可能长,因此每一条线段总是前面的相邻2段之和),依次为:1、1、2、3、5、8、13、21、34、55,以上各数之和为143,与144相差1,因此可以取最后一段为56,这时n达到最大为10。 我们看到,“每段的长度不小于1”这个条件起了控制全局的作用,正是这个最小数1产生了斐波那契数列,如果把1换成其他数,递推关系保留了,但这个数列消失了。这里,三角形的三边关系定理和斐波那契数列发生了一个联系。 在这个问题中,144>143,这个143是斐波那契数列的前n项和,我们是把144超出143的部分加到最后的一个数上去,如果加到其他数上,就有3条线段可以构成三角形了。 |
随便看 |
|
百科全书收录594082条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。