斐波那契数列之美

有这样一个数列: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...

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

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

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

36511
来自专栏苦逼的码农

动态规划进阶篇1---背包问题

给定n种物品和一背包。物品i的重量是wi,其价值为vi,背包的容量为C。问应如何选择装入背包的物品,使得装 入背包中物品的总价值最大?

1.8K3
来自专栏专知

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

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

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

ACM训练计划

看完人家的博客,发现任重道远。。。 一位高手对我的建议: 一般要做到50行以内的程序不用调试、100行以内的二分钟内调试成功.acm主要是考算法的,主要时间...

50910
来自专栏趣学算法

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

7591
来自专栏钱塘大数据

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

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

1103
来自专栏take time, save time

编程一样可以很带感--1+1不一定等于“2”

刚玩了两把flash小游戏,我也不知道为什么我从小就喜欢玩这个东西,想当初我上大学选软件的目的就是为了学会做flash,那时目的单纯吧?哈哈,初中的时候看的...

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

布尔代数入门

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

3236
来自专栏码匠的流水账

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

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

3621

扫码关注云+社区

领取腾讯云代金券