为什么简单的函数能产生如此美丽复杂的图案
这幅“甲虫”一样的图案被称为芒德布罗集。乍看之下它似乎没有什么特别之处,不过千万别小看它,如果仔细研究,就会发现这个“甲虫”可不一般,它的周身都蕴含着奇妙无比、变化无穷、美丽复杂的图案。
“甲虫”身上长有许多触角和绒毛,仔细寻找可以发现,这些触角和绒毛中隐藏着无数迷你芒德布罗集,把图中绿色和红色箭头所指处放大,会看到这里隐藏的迷你芒德布罗集。在芒德布罗集的边界上,还可以发现复杂而有序的美丽图案,它们有的像蝎子,有的像海马,有的像大象,神秘变幻,精美之至。如果我们继续用“放大镜”观察,还可以发现更多的秘密。将芒德布罗集边界上的红色框放大,是一朵像葵花花盘的美丽图案;而将其绿色框放大,则是一条结构优美的螺线。继续放大图案中细节,在一幅幅精致的图案里,居然隐藏着一个被美丽的花环围绕的迷你芒德布罗集。这个迷你芒德布罗集有多大呢?如果我们假设最初那个芒德布罗集有足球场那么大,那么这个迷你芒德布罗集比芝麻还要小。而且这样的迷你芒德布罗集布满了原来芒德布罗集的边界,是不是很神奇呢?
这样复杂而美丽的图案是怎么绘制出来的呢?其实一点也不难,只要你懂得一点数学和计算机编程,就有可能画出这样美丽的图案。它是由一个非常简单的二次函数pc(z)=z2+c迭代所生成的,不过这里的变量z和参数c都是复数。取定z=0,令c1=c,c2=c21+c,…,cn=c2n−1+c,…,就得到一个复数列{cn},称为c的迭代序列。对有些复数c,c的迭代数列会随着n的增大而趋向无穷大,而对另外一些复数c,其迭代数列却永远是有界的。那些使迭代数列永远有界的复数c组成的集合就是芒德布罗集。每个复数代表平面上的一个点,给芒德布罗集中的点着上黑色,而不在芒德布罗集中的点按其迭代数列趋向无穷大速度的不同分别着上不同的颜色,就绘制出前面看到的美丽复杂的图案。处理迭代是计算机最拿手的事,可以毫不费力地在计算机上绘制出这些美丽图案。
![]() |
芒德布罗集 |
![]() | ![]() |
绿色箭头处放大的芒德布罗集 | 红色箭头处放大的芒德布罗集 |
![]() | ![]() | ![]() | ![]() |
芒德布罗集边界之一(蝎子) | 芒德布罗集边界之二(海马) | 芒德布罗集边界之三(大象) | 葵花花盘图案 |
![]() |
那么,为什么一个简单的二次函数经过迭代就会产生这么复杂的图案呢?这是因为虽然二次函数看起来简单,却是一个非线性函数,而非线性函数的迭代一般说来都是极为复杂的。
像f(z)=z+c,g(z)=az这样只含有变量z的一次方的函数称为线性函数,取定一个复数z,f(z)的迭代序列为
z1=z+c,z2=z1+c=z+2c,…,zn=z+nc,…,
而g(z)的迭代序列为
z_1 = az,z_2 = a^2z,…,z_n = a^nz,…_.
我们看到,z_n作为z的函数仍然为线性函数,还是很简单的。前者形成一个等差数列,后者形成一个等比数列。我们也很容易弄清楚它什么时候趋于无穷大,什么时候有界。
再来看看二次函数p_c(z)=z^2+c的迭代序列,即使取z=0这个特殊值,也可以得到
c_1=c,
c_2=c^2+c,
c_3=(c^2+c)^2+c=c^4+2c^3+c^2+c,
c_4=(c^4+2c^3+c^2+c)^2+c=c^8+4c^7+6c^6+6c^5+5c^4+ \\ \qquad 2c^3+c^2+c,
…
c_n=(…(((c^2+c)^2+c)^2+c)^2+…+c)^2+c,
…
随着n的增加,c_n的表达式越来越复杂,根本无法写出其通项公式。我们也难以确定它什么时候趋于无穷大,什么时候有界,从而使迭代序列有界的集合——在这里就是芒德布罗集——也变得复杂无比。但尽管迭代序列十分复杂,还是有一定规律的,使得芒德布罗集的图案虽然复杂也还是有一定规律的。正是其复杂性加上一定的规律性才使它变得如此美丽,如此充满魅力。由此可以看到,数学中不只有枯燥的数字,同时也蕴含着一个丰富多彩的世界。
![]() |
一个更小的迷你芒德布罗集 |
![]() |
夜空中的礼花 |