斐波那契数列之美

有这样一个数列:1、1、2、3、5、8、13、21、34……前两个元素为1,其他元素均为前两个元素和。在数学上以如下递归的方法定义:

这就是斐波那契数列的数学定义。那数学家是如何发现(或创造)出这个这个数列,它又有什么意义呢?莫着急,我们先从斐波那契的生平说起。

斐波那契是一位数学家,生于公元1170年,籍贯大概是比萨,卒于1240年后。1202年,他撰写了《珠算原理》(Liber Abaci)一书。他是第一个研究了印度和阿拉伯数学理论的欧洲人。斐波那契数列因他解决兔子繁殖的应用题而引入,故又称为“兔子数列”。除此之外,他对欧洲数学的另一大贡献就是引进阿拉伯数字,从而取代了复杂的罗马计数法。

对于程序员而言,或许它是仅次于Hello World,最常见的一道编程题。简单易懂,多数人可以很快的明白它的定义并尝试写出它的编码。但这个数列就是为了考试而生?是数学家编造出来故意玩弄程序员,还是隐藏着某个宇宙的终极奥秘,它生冷的公式下面又蕴藏着哪些数学之美。

先卖一个关子,我们先看它在现实的意义,然后再分析其中的数学原理。上面这张图是一个树干的简化图。确实像一颗树,而且树干也是分层的。推理能力不错,可以去当砍树工了。如果你还能从中看出每一层树干个数(1,2,3,5,8,13)都是斐波那契数列中的元素,只需要早产一千年,斐波那契就只能是个砍树工了。

也许这个例子并不充分,我们在看看大自然中最常见的美——花儿,数一数每一层花瓣的数目,是否也是斐波那契数列中的一个元素。

首先是花瓣数目最少的百合,下面是一张百合的图片。

可以看到百合花分为2层,每层都是3个花瓣,而3确实是该数列的第四个元素。如果你觉得百合的花瓣数太少,数的不尽兴,那我们再来看看菊花的花瓣数目。慢着,菊花是什么(脱口而出:一男一女一菊花)。好吧,居然也是斐波那契的第六个元素:8。

严肃点,人家正在讨论数学问题呢,笑什么笑。看看真正的菊花是多少个花瓣,果然还是斐波那契数列的第八个元素:21。

你开始怀疑,现实世界中也许真的有一种力量,似乎对自然的美赋予了一个看不见的数学公式:斐波那契数列。那美女呢?我只喜歡看美女。好吧,作为男人,我懂i你们的需求,上妹子~

这下大家满意了吧。脑海里面瞬间想起了王力宏那首《美》,查了一下,原来歌词里Mei这个音重复的次数都是1,2,3,5。原来歌声中也能发现斐波那契数列的美。可能你还纳闷,美女甩头跟斐波那契数列有什么关系?其实,在数学上,这称为斐波那契螺旋线,比如向日葵,飓风图,还有宇宙星云图中都会看到类似的轨迹,而这个轨迹中隐藏着这个数列。如下图,脖子不要拉伤。

终于你相信,自然的美,总能找到斐波那契数列的规律了,可这里面的数学原理又是什么呢?”打破砂锅问到底”是一个好的态度。你有没有发现,美女那么多,看多了会审美疲劳,会觉得都是一个模子出来的。而丑的话却各有千秋?这TMD也是数学管的?恩,你可能知道我要说什么了——黄金分割。

早在古希腊,就有人发现了黄金分割,似乎在1.618这个比例是最美的,建筑物的比例,雕塑的比例,然后再到美女的比例,都在这个值的区间内。这也就解释美女为什么看上去都差不多的原因。实际上,黄金分割和斐波那契数列本质上是一种概念的两种外在形式。下图是七位数的斐波那契数列,我们让相邻的两个分别相除,则会发现,数字越大,这个值越接近黄金分割值。

在极限的情况下,我们认为相邻两个元素的商等于黄金分割值,我们假设值为△,则有如下等式:

而该数列又满足X(n) = X(n-1) + X(n-2),我们替换X(n)后,等式转换为:

是不是一切都明了了,我们把X(n-1)/X(n-2)记为△,则X(n-2)/X(n-1)则是它的倒数1/△,这样,该等式就是△(黄金分割值)的一元二次方程1 + 1/△ = △:

套用二次方程公式

,我们可以得到△ =(1 + √5)/2,约等于1.618。终于,我们用数学,证明了这个美的存在和公式下的数学之美。

其实,这不是斐波那契数列的全部,数学家并不甘于到此为止,而是进一步的发现了更本质的规律,只要数列满足X(n) = X(n-1) + X(n-2),无论前两个值是多少,都满足黄金分割的条件,这就是Brady Number。而斐波那契数列是最简单的特例:前两个元素均为1

再后来,数学家还发现了费马大定理和这个数列的关系(费马大定理的证明历时三百五十年),并应用到诸多领域(比如加密)。你会发现,学习数学并不只是为了考试,虽然数学的美是隐蔽的,也是纯粹的,永恒的。

原文发布于微信公众号 - LET(LET0-0)

原文发表时间:2015-11-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏C/C++基础

P问题、NP问题、NPC问题(NP完全问题)、NPH问题和多项式时间复杂度

多项式关系形如O(nk)O(n^k),k为某个常数,n是问题的输入规模。例如,时间复杂度为O(nlog(n))、O(n^3)都是多项式时间复杂度。时间复杂度为O...

1301
来自专栏ACM算法日常

召唤师·卡尔(Polya定理)- HDU 3923

Polya定理是为了解决环状组合计数的问题,比如,对于一个有5颗珠子的环形手链,给你2种颜色对珠子上色,能够得到多少种不同的手链呢?

972
来自专栏专知

【LeetCode】关关的刷题日记23——Leetcode 66. Plus One

关小刷刷题 23——Leetcode 66. Plus One 题目 Given a non-negative integer represented as a...

2833
来自专栏趣学算法

ACM竞赛学习指南(算法工程师成长计划)

4651
来自专栏C语言及其他语言

[每日一题]问题 1454[蓝桥杯][历届试题]蚂蚁感冒

每日一题 题目描述 长100厘米的细长直杆子上有n只蚂蚁。它们的头有的朝左,有的朝右。 每只蚂蚁都只能沿着杆子向前爬,速度是1厘米/秒。 当两只蚂蚁碰...

35911
来自专栏阮一峰的网络日志

布尔代数入门

布尔代数是计算机的基础。没有它,就不会有计算机。 布尔代数发展到今天,已经非常抽象,但是它的核心思想很简单。本文帮助你理解布尔代数,以及为什么它促成了计算机的诞...

3206
来自专栏码匠的流水账

使用stanford nlp进行依存句法分析

本文利用stanford nlp的LexicalizedParser对中文句子进行了简单的依存关系分析,更深入的内容见下面的参考文档。

2351
来自专栏钱塘大数据

风靡全球的15则数学动图,让你秒懂数学概念

首先,把圆解剖为一个三角形。底边是周长。然后根据三角形的面积推出圆的面积,so easy~

983
来自专栏窗户

斐波那契数列的算法分析

看过我其他一些文章的人,可能想象不出我会写一篇关于斐波那契数列的文章。因为可能会感觉1,1,2,3…这样一个数列能讲出什么高深的名堂?嗯,本篇文章的确是关于斐氏...

2542
来自专栏专知

关小刷刷题02——Leetcode 169. Majority Element 方法2和3

题目 169. Majority Element Given an array of size n, find the majority element. Th...

3367

扫码关注云+社区