一句话先回答问题:因为斐波那契数列在数学和生活以及自然界中都非常有用。 下面我就尽我所能,讲述一下斐波那契数列。 一、起源和定义 斐波那契数列最早被提出是印度数学家Gopala,他在研究箱子包装物件长度恰好为1和2时的方法数时首先描述了这个数列。也就是这个问题: 有n个台阶,你每次只能跨一阶或两阶,上楼有几种方法? 而最早研究这个数列的当然就是斐波那契(Leonardo Fibonacci)了,他当时是为了描述如下情况的兔子生长数目:
这个数列出自他赫赫有名的大作《计算之书》(没有维基词条,坑),后来就被广泛的应用于各种场合了。这个数列是这么定义的: The On-Line Encyclopedia of Integer Sequences? (OEIS?)序号为A000045 - OEIS (注意,并非满足第三条的都是斐波那契数列,卢卡斯数列(A000032 - OEIS)也满足这一特点,但初始项定义不同) 二、求解方法 讲完了定义,再来说一说如何求对应的项。斐波那契数列是编程书中讲递归必提的,因为它是按照递归定义的。所以我们就从递归开始讲起。 1.递归求解
这是编程最方便的解法,当然,也是效率最低的解法,原因是会出现大量的重复计算。为了避免这种情况,可以采用递推的方式。 2.递推求解
递推的方法可以在O(n)的时间内求出Fib(n)的值。但是这实际还是不够好,因为当n很大时这个算法还是无能为力的。接下来就要来讲一个有意思的东西:矩阵。 3.矩阵递推关系 学过代数的人可以看出,下面这个式子是成立的: 不停地利用这个式子迭代右边的列向量,会得到下面的式子: 这样,问题就转化为如何计算这个矩阵的n次方了,可以采用快速幂的方法。快速幂_百度百科是利用结合律快速计算幂次的方法。比如我要计算
4.通项公式 无论如何,对于一个数列,我们都是希望可以建立 ![]() (1)构造等比数列 设 ![]() 化简得 ![]() 比较系数得 ![]() 解得 ![]() ![]() 由于 ![]() 故有 ![]() ![]() ![]() ![]() 解得 ![]() ![]() ![]() 到了现在,把上述解出的结果全部带入上式,稍作变形,我们就可以写出斐波那契数列的通项公式了 ![]() 这个方法还是比较麻烦的,但是非常基础。事实上还有其他更简单的方法。 (2)线性代数解法 这个解法首先用到 公式,如果可以找到矩阵 ![]() ![]() 首先令 ![]() ![]() 两个特征向量为 ![]() 而 解出 ![]() 然后可以轻易得到通项公式,上边已经给出,这里不再赘述。 (3)特征方程解法 通过方法(2),我们可以推导出一般的线性递推数列的通项求解方法,也就是特征方程法。我们可以发现,对于这种数列,通项总是可以表示为 ![]() ![]() ![]() a.由递推数列构造特征方程 ![]() ![]() b.带入 ![]() ![]() ![]() 解得 ![]() (4)母函数法(此方法涉及组合数学知识) 设斐波那契数列的母函数为 ![]() ![]() ![]() ![]() ![]() 解得 ![]() 再由幂级数展开公式 ![]() 合并同类项并与 ![]() 到这里,求解斐波那契数列通项的方法就说的差不多了。无论是计算机求解还是数学推导,都体现出了非常多的技巧。而斐波那契数列的许多特性,就更加有意思了。 三、斐波那契数列的数学性质 1.与黄金比的关系 由通项公式,求相邻两项的商的极限,结果是黄金比,所以斐波那契数列又称为黄金比数列。斐波那契数列和黄金比还和一个有趣的数学概念——连分数有关: 2.一些简单的规律 (1)任意连续四个斐波那契数,可以构造出一个毕达哥拉斯三元组。如取1,1,2,3. 中间两数相乘再乘2 ==》 4 外层2数乘积==》3 中间两数平方和==》5 得到3,4,5. 下一组是5,12,13,,有兴趣的读者可以再试着推一推,证明也是容易的。 (2)整除性 每3个连续的斐波那契数有且只有一个被2整除, 每4个连续的斐波那契数有且只有一个被3整除, 每5个连续的斐波那契数有且只有一个被5整除, 每6个连续的斐波那契数有且只有一个被8整除, 每7个连续的斐波那契数有且只有一个被13整除, ………… 每n个连续的斐波那契数有且只有一个被 (3)一些恒等式 3.杨辉三角中的斐波那契数列 如图所示,每条斜线上的数的和就构成斐波那契数列。
4.相关数列:卢卡斯(Lucas)数列 卢卡斯数列的定义除了第0项为2之外,与斐波那契数列完全一致。即 其通项公式为: 卢卡斯数列和斐波那契数列有这些关系: ![]() ![]() ![]() ![]() ![]() 5.组合数学 (1)一些恒等式 (2)同余特性 ![]() ![]() 当p为大于5的素数时,有: ![]() ![]() ![]() 其中 斐波那契数列还有许许多多的性质,我就不再一一介绍了。跑题了这么久,终于开始要真正回答问题了:斐波那契数列有什么用? 四、斐波那契数列的应用 1.算法 a.斐波那契堆
b.欧几里得算法的时间复杂度 欧几里得算法是求解两个正整数最大公约数的算法,又称辗转相除法。代码如下:
在最坏的情况下,我们可以证明,若a较小,需要计算的次数为n,则 ![]() 2.物理学:氢原子能级问题
3.自然界:植物的生长 科学家发现,一些植物的花瓣、萼片、果实的数目以及排列的方式上,都有一个神奇的规律,它们都非常符合著名的斐波那契数列。例如:蓟,它们的头部几乎呈球状。在下图中,你可以看到两条不同方向的螺旋。我们可以数一下,顺时针旋转的(和左边那条旋转方向相同)螺旋一共有13条,而逆时针旋转的则有21条。此外还有菊花、向日葵、松果、菠萝等都是按这种方式生长的。 还有菠萝、松子等,也都符合这个特点,一般会出现34,55,89和144这几个数字。 最后上一张“斐波那契树”的图片: 是的,这玩意就长这样,这种植物是存在的。 4.波浪理论与股市 这个答主不懂,大家可自行阅读文章波浪理论斐波那契数列与黄金分割率。 不过波浪的形状确实符合下边要说的斐波那契螺旋: 5.斐波那契螺旋 斐波那契螺旋又称黄金螺旋,在自然界中广泛存在。如图是一个边长为斐波那契数列的正方形组成的矩形。 (加一句:看着这个图,是不是能发现 是显而易见的?) 这样连起来就是斐波那契螺旋了 贝壳螺旋轮廓线 向日葵的生长 神奇的花 6.建筑学 7.据说一个小男孩参考斐波那契数列发明了太阳能电池树: 一名13岁的男孩根据斐波那契数列发明了太阳能电池树,其产生的电力比太阳能光伏电池阵列多20-50%。斐波那契数列类似从0和1开始,之后的数是之前两数的和,如0,1,1,2,3,5,8,13,21...Aidan Dwye在观察树枝分叉时发现它的分布模式类似斐波那契数列,这是大自然演化的一种结果,可能有助于树叶进行光合作用。 8.斐波那契螺旋形的摇椅 妈妈摇椅是设计师Patrick Messier为自己的妻子兼合作伙伴Sophie Fournier设计的,当时他们刚有了第一个宝宝。 五、数学上的扩展 (1)广义斐波那契数列 定义: ![]() ![]() 其通项为: 当 ![]() (2)反斐波那契数列 定义: ![]() 反斐波那契数列相邻项比值的极限为 ![]() (3)巴都万数列(A000931 - OEIS) 斐波那契数列可以刻画矩形,而巴都万数列则刻画的是三角形。其定义如下: (4)未解之谜:角谷猜想 对一个正整数,若为奇数则乘3加1,若为奇数则除以2,通过有限次这样的操作,能否使得该数变成1? 这个猜想和斐波那契数列又很大关系,具体的可以看角谷猜想的斐波那契数列现象。 六、总结 斐波那契数列是各个学科中都出现的小滑头,它许多漂亮的性质让我们着迷。上文我所描述的这些只是它的冰山一角,权当抛砖引玉。大家读完了我的答案,还可以再结合自己的专业去看一些相关的资料,更好的去了解这个有趣的数列。 七、参考文献 |
|