计算器混沌
土卫七为什么 恰恰 那样运行?我们还没有能力回答,但我可以举一个较易领会的混沌的例子,你可以亲自验算。你需要的全部东西只是一个袖珍计算器。如果你拥有一台家庭计算机,你不难编程序,让它做同样的事情,使你省掉许多事。
支配土卫七运动的方程是微分方程。实际上它告诉你的事是这样的。假设在给定的时刻,你知道土卫七的位置和速度。于是有一个固定的规则,你把它用于这些数,就得出下一时刻的位置和速度。然后你再用这规则,不断计算下去,直到你达到所想要的时刻为止。
你可能会反诘,时间是无限可分的,因而无所谓某一时刻,更不必说下一时刻了。你也许是对的,虽然芝诺〔埃利亚的〕(Zeno of Elea)
和一些现代物理学家会不赞成;无疑你抱有传统的看法。然而,在用几种不同方式可使之精确的意义上,上述说法在道义上是正确的。特别地,计算机解微分方程的方式正是如此,这里的“时刻”我们现在指“计算中所用的时间步”。这方法是可行的,因为这些非常短的时间步与连续流逝的时间良好地近似。
土卫七的方程包含许多变量——位置、速度、角位移等。你 可以 把它们都输入计算器,但是人生有涯,倒不如选取一个简单得多的方程。请注意,它与土卫七的运动毫无关系;但它的确说明了混沌现象。
我的计算器有一个x 2 键,假定你的也有。如果没有,×后再按=就能得到同样的效果。取一个介于0与1之间的数,比如0.54321,按x 2 键。再按它,反复按下去,并观察读数。结果如何?
它们骤减。我在计算器上第9次按键时得到零,因为0 2 =0,此后不再发生十分有趣的事一点也不奇怪。
这样的做法叫作 迭代 ,即反复做同样的事。请在你的计算器上迭代其他一些键。以下我总从0.54321开始,但你可以用你想用的别的初始值。不过要避开0。我的计算器是“弧度”式的,按cos键约40次后,我得出神秘数0.739085133,它就显示在那里。你能猜出这个数有什么特殊性质吗?无论如何,迭代的结果总是稳定到单个数值:它向一个定态 收敛 。
tan键似乎也做同样一类事。外表是靠不住的。我用计算机迭代了300000次,它从不收敛,也不呈周期性。然而它“粘”在那里,缓缓地增大——例如每迭代一次增加0.0000001。这一效应称作 间歇 ,它解释了为什么乍一看这些数似乎在收敛。
还有无穷多个初始值,对它们来说,tan序列不断重复同一个数,但0是你很可能偶然碰到的唯一的数。这种“典型”性态就是间歇。
用e
x
键时,数字大到268点几就会溢出,接着就给出出错提示,因为它太大了:它正好落入无穷大。
键则收敛到1。
1/ x 键更加有趣:数轮流地从0.54321变为1.840908673,再变回去。这种迭代是 周期性的 ,周期是2;也就是说,如果你按键2次,就回复到起点。你大概会弄明白这是为什么。
把计算器上的所有键统统试一遍:你将发现以上所述似乎穷尽了可能的性态类型。
但那或许是因为计算器上的键是被设计好去做微妙的事的。为了避免这结果,你可以发明新的键。 x 2 -1键怎么样?要模拟它,按 x 2 键后再按-1=即得。照此做下去。很快你会发现,你在0和-1之间不断循环(图6)。道理是:
0 2 -1= -1,
(-1) 2 -1=0。
但循环也不是什么新东西。
图6 x 2 -1的迭代产生规则振荡。竖直方向是 x 值,水平方向是迭代次数
最后一试:2 x 2 -1键。从0和1之间的某值(不包括0和1)开始。看上去没什么特别的,看不出怎么会发生什么特别现象。嗯……跳来跳去跳个不停。等它稳定下来……。太费时间了,不是吗?什么规律也看不出来……。在我看来是乱七八糟的(图7)。
啊哈!
简单的方程:迭代2 x 2 -1。结果看上去却不那么简单——实际上 它们看上去是无规则的 。
再试一次2 x 2 -1键,现在从0.54322而不是0.54321开始。它看上去还是无规则的,而且在迭代50次左右之后它看上去依旧完全不同。
图7 2 x 2 -1的迭代产生混沌
你所见到的,是土卫七的一个缩影。确定性的方程:混乱的输出。略微改动初始值:完全丧失了它行动的轨道。造成所有这些奇事的根源在于2 x 2 -1太古怪,而表面上类似的 x 2 -1键的性态却很好。
我建议你不必再在计算器上试下去了,除非你喜欢冗长的计算;但如果你有家庭计算机,这里给你一个可以运行的程序。你愿意的话,可把它修改得更妙。以后我不再给出程序,但是计算机爱好者们会发现,编出他们自己的程序去对混沌的其他方面进行实验,是有益的。
10 INPUT k
20 x =0.54321
30 FOR n =1TO50
40 x = k * x * x -1
50 NEXT n
60 FOR n =1TO100
70 x = k * x * x -1
80 PRINT x
90 NEXT n
100 STOP
这回对任意 k 值,迭代 k x 2 -1键。30~50句给予迭代序列以稳定到“长期”性态的时间,这时数字没有打印出来。例如,若你取k=1.4,则将得到一个1.4 x 2 -1键。那竟是一个经过 16个 不同值的相当复杂的循环!混沌在 k =-1.5左右时到来。此后k取得愈大,就愈混沌。
似乎就那么回事,但并不那么简单。
k =1.74时,你看到十分发达的混沌。 k =1.75时,起初看起来也是如此。只是约50次迭代之后,它稳定到一个围绕着数
0.744 -0.030 -0.998
的周期为 3 的循环。模式从混沌中涌现。两者关系错综复杂。
我希望你发现这一秘密,并且激动不已。
如果真是这样,我鼓励你探索在 k <1或 k >1.40155范围内的性态。你可能在30或60句需要用更长的循环才能看到整个模式——当有一个模式时。
关于计算机和混沌,再说一句。我们都有把计算机计算视为精度最高的倾向。实际上不是这么回事。有限的存储量意味着存在计算机中的数只能达到很有限的精度,比如说小数点后8位或10位。而且,计算机用来表示它的数字的“专用”内部码和荧光屏上显示的“公用”码是不同的。这便引入了两种误差源:内部计算中的舍入误差和从专用码到公用码的翻译误差。通常这些误差对混沌没有多大影响,但混沌特有的特性之一,是小误差能够繁殖和生长。
假使所有的计算机都采用相同的代码,人生至少会是简单明了的。但是事实当然不是如此。这意味着, 相同的程序在不同厂家的两台计算机上运行 , 会产生不同的结果 。“同一”软件的不同版本在同一计算机上运行时亦然。我将间或告诉你一些在我的计算机上得到的数值结果。请注意,你的计算机不会精确地给出相同的数!但如果你研究的数接近我正使用的那些,你应该能发现和我所发现的相同的那种性态。
我们发现了什么?
奇迹。紧密纠缠在一起的秩序和混沌,从像 kx 2 -1那样简单的公式中涌现出来。有的 k 值产生的迭代是有秩序的,有的——并无显著差异的——k值则产生混沌。哪些导致秩序,哪些导致混沌呢?哈哈,现在你正在谈论数学研究。
一开始我们不理解土卫七,如今我们连2 x 2 -1都不理解。在数学上却是进步斐然的。
之所以说进步,是因为我们正开始琢磨 问题究竟在哪儿 。在摆弄计算器之前,我们假定土卫七相当复杂,是可以原谅的。现在我们知道它不是这样。这种复杂情况与土卫七关系并不大。进行着的事情是很微妙,很基本,而且极度迷人的。
所有这些使我对宇宙学家很不满意,因为他们告诉我们,他们已经弄清楚神秘莫测的宇宙的起源,只有大爆炸的第一毫秒左右除外。还有政客们,他们不仅向我们保证,一剂坚挺的货币主义将对我们有益,而且他们还信誓旦旦地宣称几百万失业者不过是小小的呃逆而已。数学生态学家梅(Robert May)早在1976年就表达了类似的看法:“不仅在学术界,而且在日常的政治学界和经济学界里,要是更多的人认识到简单的系统不一定具有简单的动力学性质,我们的境况将会更好些。”


