斐波那契数列之美

有这样一个数列: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 条评论
登录 后参与评论

相关文章

来自专栏AI研习社

还在费心学编程?微软用深度学习 AI 帮你写代码

在过去的几十年中,无论在硬件组织还是软件架构上,计算机行业已经发生了翻天覆地的变化,各种软硬件产品的性能和用户体验均得到了显著提升。 但对程序员而言,软件编码的...

2766
来自专栏好好学java的技术栈

“365算法每日学计划”:03打卡-贪心算法

自从开始做公众号开始,就一直在思考,怎么把算法的训练做好,因为思海同学在算法这方面的掌握确实还不够。因此,我现在想做一个“365算法每日学计划”。

1712
来自专栏小樱的经验随笔

Codeforces 626D Jerry's Protest(暴力枚举+概率)

D. Jerry's Protest time limit per test:2 seconds memory limit per test:256 megab...

2838
来自专栏州的先生

运用汽车数据进行Python可视化分析

992
来自专栏一个会写诗的程序员的博客

函数式编程与面向对象编程[3]:Scala的OOP-FP混合式编程与抽象代数理论

Scala是纯种的面向对象的语言。从概念上讲,每一个值都是一个对象,每一个操作都是一个方法调用。语言支持通过类和特征的高级组件架构。

742
来自专栏点滴积累

ANSJ中文分词使用方法

一、前言 之前做solr索引的时候就使用了ANSJ进行中文分词,用着挺好,然而当时没有写博客记录的习惯。最近又尝试了好几种JAVA下的中文分词库,个人感觉还是A...

3539
来自专栏FreeBuf

DIY一个自己喜欢的瓦力吧!

随着科学技术的快速发展,AI技术已经越来越接近人们的日常生活,人们对智能车的研究有增无减,智能小车已然成为以后科学技术发展的新思路和新方向。智能小车可以按照预先...

940
来自专栏ml

HDUOJ----2512一卡通大冒险

一卡通大冒险 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Ja...

3239
来自专栏ACM算法日常

各种博弈问题

(一)巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。

683
来自专栏数据科学与人工智能

【陆勤践行】DataSchool 推荐的数据科学资源

Blogs Simply Statistics1: Written by the Biostatistics professors at Johns Hopki...

2189

扫码关注云+社区