植物中的神秘数字

原创 2004年09月03日 22:23:00
◇◇新语丝(www.xys.org)(xys.dxiong.com)(xys.3322.org)(xys.freedns.us)◇◇

                         植物中的神秘数字

                             ·方舟子·

    扑克牌上的“梅花”并非梅花,甚至不是花,而是三叶草。在西方历史上,
三叶草是一种很有象征意义的植物,据说第一叶代表希望,第二叶代表信心,
第三叶代表爱情,而如果你找到了四叶的三叶草,就会交上好运,找到了幸福。
在野外寻找四叶的三叶草,是西方儿童的一种游戏,不过很难找到,据估计,
每一万株三叶草,才会出现一株四叶的突变型。

    在中国,梅花有着类似的象征意义。民间传说梅花五瓣代表着五福。民国
把梅花定为国花,声称梅花五瓣象征五族共和,具有敦五伦、重五常、敷五教
的意义。但是梅花有五枚花瓣并非独特,事实上,花最常见的花瓣数目就是
五枚,例如与梅同属蔷薇科的其他物种,像桃、李、樱花、杏、苹果、梨等等
就都开五瓣花。常见的花瓣数还有:3枚,鸢尾花、百合花(看上去6枚,实际
上是两套3枚);8枚,飞燕草;13枚,瓜叶菊;向日葵的花瓣有的是21枚,有
的是34枚;雏菊的花瓣有的是34、55或89枚。而其他数目花瓣的花则很少。为
什么花瓣数目不是随机分布的?3, 5, 8, 13, 21, 34, 55, 89,...这些数目
有什么特殊吗?

    有的,它们是斐波纳契数。斐波纳契(1170-1240)是中世纪意大利数学家,
他不是在数花瓣数目,而是在解一道关于兔子繁殖的问题时,得出了这个数列。
假定你有一雄一雌一对刚出生的兔子,它们在长到一个月大小时开始交配,在
第二月结束时,雌兔子产下另一对兔子,过了一个月后它们也开始繁殖,如此
这般持续下去。每只雌兔在开始繁殖时每月都产下一对兔子,假定没有兔子死
亡,在一年后总共会有多少对兔子?

    在一月底,最初的一对兔子交配,但是还只有1对兔子;在二月底,雌兔
产下一对兔子,共有2对兔子;在三月底,最老的雌兔产下第二对兔子,共有
3对兔子;在四月底,最老的雌兔产下第三对兔子,两个月前生的雌兔产下一
对兔子,共有5对兔子;……如此这般计算下去,兔子对数分别是:1, 1, 2, 
3, 5, 8, 13, 21, 34, 55, 89, 144, ...看出规律了吗?从第3个数目开始,
每个数目都是前面两个数目之和。

    植物似乎对斐波纳契数着了迷。不仅花,还有叶、枝条、果实、种子等等
形态特征,都可发现斐波纳契数。叶序是指叶子在茎上的排列方式,最常见的
是互生叶序,即在每个节上只生1叶,交互而生。任意取一个叶子做为起点,
向上用线连接各个叶子的着生点,可以发现这是一条螺旋线,盘旋而上,直到
上方另一片叶子的着生点恰好与起点叶的着生点重合,做为终点。从起点叶到
终点叶之间的螺旋线绕茎周数,称为叶序周。不同种植物的叶序周可能不同,
之间的叶数也可能不同。例如榆,叶序周为1(即绕茎1周),有2叶;桑,叶
序周为1,有3叶;桃,叶序周为2,有5叶;梨,叶序周为3,有8叶;杏,叶序
周为5,有13叶;松,叶序周为8,有21叶……用公式表示(绕茎的周数为分子,
叶数为分母),分别为1/2, 1/3, 2/5, 3/8, 5/13, 8/21, ……这些是最常见
的叶序公式,据估计大约有90%植物属于这类叶序,而它们全都是由斐波纳契
数组成的。

    你如果观察向日葵的花盘,会发现其种子排列组成了两组相嵌在一起
的螺旋线,一组是顺时针方向,一组是逆时针方向。再数数这些螺旋线的数目,
虽然不同品种的向日葵会有所不同,但是这两组螺旋线的数目一般是34和55、
55和89或89和144,其中前一个数字是顺时针线数,后一个数字是逆时针线数,
而每组数字都是斐波纳契数列中相邻的两个数。再看看菠萝、松果上的鳞片排
列,虽然不像向日葵花盘那么复杂,也存在类似的两组螺旋线,其数目通常是
8和13。有时候这种螺旋线不是那么明显,需要仔细观察才会注意到,例如花菜。
如果你拿一颗花菜认真研究一下,会发现花菜上的小花排列也形成了两组螺旋
线,再数数螺旋线的数目,是不是也是相邻的两个斐波纳契数,例如顺时针5条,
逆时针8条?掰下一朵小花下来再仔细观察,它实际上是由更小的小花组成的,
而且也排列成了两条螺旋线,其数目也是相邻的两个斐波纳契数。

    为什么植物如此偏爱斐波纳契数?这和另一个更古老的、早在古希腊就被
人们注意到甚至去崇拜它的另外一个“神秘”数字有关。假定有一个数φ,
它有如下有趣的数学关系:

φ^2 - φ^1 -φ^0 =0

即:

φ^2 -φ -1 =0

解这个方程,有两个解:

(1 + √5) / 2 = 1.6180339887...
(1 - √5) / 2 = - 0.6180339887...

    注意这两个数的小数部分是完全相同的。正数解(1.6180339887...)被称
为黄金数或黄金比率,通常用φ表示。这是一个无理数(小数无限不循环,没法用
分数来表示),而且是最无理的无理数。同样是无理数,圆周率π用22/7,自然
常数e用19/7, √2用7/5就可以很精确地近似表示出来,而φ则不可能用分母为
个位数的分数做精确的有理近似。

    黄金数有一些奇妙的数学性质。它的倒数恰好等于它的小数部分,也即
1/φ = φ-1,有时这个倒数也被称为黄金数、黄金比率。如果把一条直线AB用
C点分割,让AB/AC = AC/CB,那么这个比等于黄金数,C点被称为黄金分割点。
如果一个等腰三角形的顶角是36度,那么它的高与底线的比等于黄金数,这样的
三角形称为黄金三角形。如果一个矩形的长宽比是黄金数,那么从这个矩形切割
掉一个边长为其宽的正方形,剩下的小矩形的长宽比还是黄金数。这样的矩形称
为黄金矩形,它可以用上述的方法无限切割下去,得到一个个越来越小的黄金矩
形,而如果把这些黄金矩形的对角用弧线连接起来,则形成了一个对数曲线。常
见的报纸、杂志、书、纸张、身份证、信用卡用的形状都接近于黄金矩形,据说
这种形状让人看上去很舒服。的确,在我们的生活中,黄金数无处不在,建筑、
艺术品、日常用品在设计上都喜欢用到它,因为它让我们感到美与和谐。

    那么黄金数究竟和斐波纳契数有什么关系呢?根据上面的方程:φ^2 -φ -1 =0,
可得:

φ = 1 + 1/φ 
   = 1 + 1/ (1 + 1/φ) 
   = ... 
   = 1 + 1/( 1 + 1/( 1 + 1/( 1 +...))) 

    根据上面的公式,你可以用计算器如此计算φ:输入1,取倒数,加1,和取
倒数,加1,和取倒数,……,你会发现总和越来越接近φ。让我们用分数和小数
来表示上面的逼近步骤:

φ ≈ 1 
φ ≈ 1 + 1/1 = 2/1 = 2
φ ≈ 1 + 1/(1+1/1) = 3/2 = 1.5
φ ≈ 1 + 1/(1+1/(1+1)) = 5/3 = 1.666667
φ ≈ 1 + 1/(1+1/(1+(1+1))) = 8/5 = 1.6
φ ≈ 1 + 1/(1+1/(1+(1+(1+1)))) = 13/8 = 1.625
φ ≈ 1 + 1/(1+1/(1+(1+(1+(1+1))))) = 21/13 =  1.615385
φ ≈ 1 + 1/(1+1/(1+(1+(1+(1+(1+1)))))) = 34/21 = 1.619048
φ ≈ 1 + 1/(1+1/(1+(1+(1+(1+(1+(1+1))))))) = 55/34 = 1.617647
φ ≈ 1 + 1/(1+1/(1+(1+(1+(1+(1+(1+(1+1)))))))) = 89/55 = 1.618182
...

    发现了没有?以上分数的分子、分母都是相邻的斐波纳契数。原来相邻两个斐
波纳契数的比近似等于φ,数目越大,则越接近,当无穷大时,其比就等于φ。斐
波纳契数与黄金数是密切联系在一起的。植物喜爱斐波纳契数,实际上是喜爱黄金
数。这是为什么呢?莫非冥冥之中有什么安排,是上帝想让世界充满了美与和谐?

    植物的枝条、叶子和花瓣有相同的起源,都是从茎尖的分生组织依次出芽、分
化而来的。新芽生长的方向与前面一个芽的方向不同,旋转了一个固定的角度。如
果要充分地利用生长空间,新芽的生长方向应该与旧芽离得尽可能的远。那么这个
最佳角度是多少呢?我们可以把这个角度写成360°× n,其中0<n <1,由于左右
各有一个角度是一样的(只是旋转的方向不同),例如n=0.4和n=0.6实际上结果相
同,因此我们只需考虑 0.5≤n<1的情况。如果新芽要与前一个旧芽离得尽量远,
应长到其对侧,即n = 0.5 =1/2,但是这样的话第2个新芽与旧芽同方向,第3个
新芽与第1个新芽同方向,……,也就是说,仅绕1周就出现了重叠,而且总共
只有两个生长方向,中间的空间都浪费了。如果0.6 = 3/5 呢?绕3周就出现重叠,
而且总共也只有5个方向。事实上,如果n是个真分数 p/q,则意味着绕p周就出现
重叠,共有q个生长方向。

    显然,如果n是没法用分数表示的无理数,就会“有理”得多。选什么样的无理
数呢?圆周率π、自然常数e和√2都不是很好的选择,因为它们的小数部分分别
与1/7, 5/7和2/5非常接近,也就是分别绕1, 5和2周就出现重叠,分别总共只有7, 
7和5个方向。所以结论是,越是无理的无理数越好,越“有理”。我们在前面已经
提到,最无理的无理数,就是黄金数φ≈1.618。也就是说,n的最佳值≈0.618,即
新芽的最佳旋转角度大约是360°× 0.618 ≈ 222.5°或 137.5°。

    前面已提到,最常见的叶序为1/2, 1/3, 2/5, 3/8, 5/13和8/21,表示的是每
周有多少片叶子,如果我们要把它们换算成n(表示每片叶子绕多少周),只需用1
减去叶序,为1/2, 2/3, 3/5, 5/8, 8/13, 13/21。它们是相邻两个斐波纳契数的
比值,是不同程度地逼近1/φ。在这种情形下,植物的芽可以有最多的生长方向,
占有尽可能多的空间。对叶子来说,意味着尽可能多地获取阳光进行光合作用,或
承接尽可能多的雨水灌溉根部;对花来说,意味着尽可能地展示自己吸引昆虫来传
粉;而对种子来说,则意味着尽可能密集地排列起来。这一切,对植物的生长、繁
殖都是大有好处的。可见,植物之所以偏爱斐波纳契数,乃是在适者生存的自然选
择作用下进化的结果,并不神秘。

2004.8.14.

(载《科学世界》2004年9月刊)

(XYS20040903)

◇◇新语丝(www.xys.org)(xys.dxiong.com)(xys.3322.org)(xys.freedns.us)◇◇

数学小魔术——猜数字

数学小魔术——神奇的二进制 请你任意猜想一个三位数,把这个三位数乘以 91 的乘积的最后三位告诉我,我们很快猜出你心中所想的那个三位数是多少? 我们以对方心中所想的 789 为例,则对方计算出 ...
  • lanchunhui
  • lanchunhui
  • 2016年01月29日 17:56
  • 2736

Android植物大战僵尸附源码

本文介绍cocos2d-android实现的Android植物大战僵尸,最后附源码   =======================================================...
  • codehxy
  • codehxy
  • 2014年05月11日 12:03
  • 3972

Cocos2d-x简单游戏<植物大战僵尸>代码实现|第八部分:子弹类<后续会提供源码下载链接>

这个植物大战僵尸的小游戏Demo 虽然下,但是基本包括了:   1.植物的选取、僵尸的攻击、发射子弹;   2.太阳的生成、碰撞检测等功能;      第一部分:Coco...
  • u011286702
  • u011286702
  • 2014年03月17日 17:45
  • 2261

bzoj 4408: [Fjoi 2016]神秘数 (主席树)

4408: [Fjoi 2016]神秘数 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 538  Solved: 331 [Submit][S...
  • clover_hxy
  • clover_hxy
  • 2017年03月04日 21:35
  • 256

神秘的程序员们1

  • bluewindaa
  • bluewindaa
  • 2014年08月12日 15:03
  • 593

Python图像处理(6):分离土壤与植物

快乐虾http://blog.csdn.net/lights_joy/欢迎转载,但请保留作者信息下面尝试分离图片中的土壤与植物,目标是取得绿色植物图像,将土壤背景变为黑色。测试图像:首先使用2g-r-...
  • lights_joy
  • lights_joy
  • 2015年05月31日 20:13
  • 2139

使用Cocos2d-lua开发植物大战僵尸06-僵尸类的实现

僵尸也是分类的,比如什么普通僵尸啊,铁桶僵尸啊之类的,所以我们要写一个僵尸的基类,叫做ZombiesBase,僵尸基类包含了僵尸都共同拥有的一些属性,僵尸的属性也比较多,有类型zombiesType,...
  • sinat_16095273
  • sinat_16095273
  • 2015年11月09日 16:59
  • 514

OD+CE查找“植物大战僵尸”太阳数目地址

1.用OD+CE附加游戏,开局,太阳的数目为150 2.用CE搜索值为150的地址,搜索到多个 3.在游戏里花太阳种一株植物,让太阳数目变化为50 4.用CE再次搜索值为...
  • u010497228
  • u010497228
  • 2015年03月02日 23:50
  • 1572

c++实现植物大战僵尸修改器

参考C++项目开发实战入门的第四章内容,书里面写的太简略了,自己实现的时候整理了一下。建立对话框建立一个基于对话框的MFC程序MemoryCheatDlg,绘制主界面,主对话框ID:IDD_MEMOR...
  • u013948010
  • u013948010
  • 2017年12月16日 15:23
  • 73

C/C++植物大战僵尸之CE找基址+修改器制作(基础版)

C/C++植物大战僵尸之CE找基址+修改器制作(基础版)
  • qq78442761
  • qq78442761
  • 2017年01月22日 20:58
  • 4389
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:植物中的神秘数字
举报原因:
原因补充:

(最多只允许输入30个字)