神奇的分形艺术(一):无限长的曲线可能围住一块有限的面积

    很多东西都是吹神了的,其中麦田圈之谜相当引人注目。上个世纪里人们时不时能听见某个农民早晨醒了到麦田地一看立马吓得屁滚尿流的故事。上面这幅图就是97年在英国Silbury山上发现的麦田圈,看上去大致上是一个雪花形状。你或许会觉得这个图形很好看。看了下面的文字后,你会发现这个图形远远不是“好看”可以概括的,它的背后还有很多东西。

    在说明什么是分形艺术前,我们先按照下面的方法构造一个图形。看下图,首先画一个线段,然后把它平分成三段,去掉中间那一段并用两条等长的线段代替。这样,原来的一条线段就变成了四条小的线段。用相同的方法把每一条小的线段的中间三分之一替换为等边三角形的两边,得到了16条更小的线段。然后继续对16条线段进行相同的操作,并无限地迭代下去。下图是这个图形前五次迭代的过程,可以看到这样的分辨率下已经不能显示出第五次迭代后图形的所有细节了。这样的图形可以用Logo语言很轻松地画出来。

    你可能注意到一个有趣的事实:整个线条的长度每一次都变成了原来的4/3。如果最初的线段长为一个单位,那么第一次操作后总长度变成了4/3,第二次操作后总长增加到16/9,第n次操作后长度为(4/3)^n。毫无疑问,操作无限进行下去,这条曲线将达到无限长。难以置信的是这条无限长的曲线却“始终只有那么大”。

        
    当把三条这样的曲线头尾相接组成一个封闭图形时,有趣的事情发生了。这个雪花一样的图形有着无限长的边界,但是它的总面积却是有限的。换句话说,无限长的曲线围住了一块有限的面积。有人可能会问为什么面积是有限的。虽然从上面的图上看结论很显然,但这里我们还是要给出一个简单的证明。三条曲线中每一条的第n次迭代前有4^(n-1)个长为(1/3)^(n-1)的线段,迭代后多出的面积为4^(n-1)个边长为(1/3)^n的等边三角形。把4^(n-1)扩大到4^n,再把所有边长为(1/3)^n的等边三角形扩大为同样边长的正方形,总面积仍是有限的,因为无穷级数Σ4^n/9^n显然收敛。这个神奇的雪花图形叫做Koch雪花,其中那条无限长的曲线就叫做Koch曲线。他是由瑞典数学家Helge von Koch最先提出来的。本文最开头提到的麦田圈图形显然是想描绘Koch雪花。

    分形这一课题提出的时间比较晚。Koch曲线于1904年提出,是最早提出的分形图形之一。我们仔细观察一下这条特别的曲线。它有一个很强的特点:你可以把它分成若干部分,每一个部分都和原来一样(只是大小不同)。这样的图形叫做“自相似”图形(self-similar),它是分形图形(fractal)最主要的特征。自相似往往都和递归、无穷之类的东西联系在一起。比如,自相似图形往往是用递归法构造出来的,可以无限地分解下去。一条Koch曲线中包含有无数大小不同的Koch曲线。你可以对这条曲线的尖端部分不断放大,但你所看到的始终和最开始一样。它的复杂性不随尺度减小而消失。另外值得一提的是,这条曲线是一条连续的,但处处不光滑(不可微)的曲线。曲线上的任何一个点都是尖点。

    分形图形有一种特殊的计算维度的方法。我们可以看到,在有限空间内就可以达到无限长的分形曲线似乎已经超越了一维的境界,但说它是二维图形又还不够。Hausdorff维度就是专门用来对付这种分形图形的。简单地说,Hausdorff维度描述分形图形中整个图形的大小与一维大小的关系。比如,正方形是一个分形图形,因为它可以分成四个一模一样的小正方形,每一个小正方形的边长都是原来的1/2。当然,你也可以把正方形分成9个边长为1/3的小正方形。事实上,一个正方形可以分割为a^2个边长为1/a的小正方形。那个指数2就是正方形的维度。矩形、三角形都是一样,给你a^2个同样的形状才能拼成一个边长为a倍的相似形,因此它们都是二维的。我们把这里的“边长”理解为一维上的长度,那个1/a则是两个相似形的相似比。如果一个自相似形包含自身N份,每一份的一维大小都是原来的1/s,则这个相似形的Hausdorff维度为log(N)/log(s)。一个立方体可以分成8份,每一份的一维长度都是原来的一半,因此立方体的维度为log(8)/log(2)=3。同样地,一个Koch曲线包含四个小Koch曲线,大小两个Koch曲线的相似比为1/3,因此Koch曲线的Hausdorff维度为log(4)/log(3)。它约等于1.26,是一个介于1和2之间的实数。

    我们常说分形图形是一门艺术。把不同大小的Koch雪花拼接起来可以得到很多美丽的图形。如果有MM看了前面的文字一句也不懂,下面这些图片或许会让你眼前一亮。

放图前留下一句话:
Matrix67原创
转贴请注明出处

又一个比较诡异的悖论

    不知道大家见过没有,我今天偶然看到,在这里写一下。
    箱子里有两个信封:“一个信封里有1元钱,另一个有10元”有1/2的概率;“一个信封里有10元钱,另一个有100元”有1/4的概率;“一个信封里有100元钱,另一个有1000元”有1/8的概率……也就是说,有1/2^n的概率发生这样的事情,一个信封里有10^(n-1)元钱,另一个信封里有10^n元钱。现在你拿到一个信封,看到了里面有x元钱。给你一次机会换成另外那个信封,问你换不换。
    举个例子,假如我们拿到了100元钱的信封,那么换一个信封得到1000元的概率是得到10元的概率的一半。也就是说,如果我们拿到了x元钱,换一个信封的话有1/3的概率多得9x元,有2/3的概率失去0.9x元。它的期望值是增加2.4x元,这告诉了我们换一个信封显然更好。
    现在的问题是,既然总是换个信封好些,那么为什么我们不一开始就选择另外那个信封呢?

大家可以在下面讨论
我就不参与讨论了,虽然我也不知道是怎么回事

    这个问题让我想到了Newcomb悖论,说有个妖精可以预言你将拿一个箱子还是两个箱子,大家一定见过。

    A highly superior being from another part of the galaxy presents you with two boxes, one open and one closed. In the open box there is a thousand-dollar bill. In the closed box there is either one million dollars or there is nothing. You are to choose between taking both boxes or taking the closed box only. But there's a catch.
    The being claims that he is able to predict what any human being will decide to do. If he predicted you would take only the closed box, then he placed a million dollars in it. But if he predicted you would take both boxes, he left the closed box empty. Furthermore, he has run this experiment with 999 people before, and has been right every time.
    What do you do?
    On the one hand, the evidence is fairly obvious that if you choose to take only the closed box you will get one million dollars, whereas if you take both boxes you get only a measly thousand. You'd be stupid to take both boxes.
    On the other hand, at the time you make your decision, the closed box already is empty or else contains a million dollars. Either way, if you take both boxes you get a thousand dollars more than if you take the closed box only.

    Newcomb悖论是很荒唐的,很不具有数学的科学性。但这篇日志介绍的悖论在科学性上是可以承认的。

无限小却无限大的集合 & 阶梯状的连续函数

    康托集合是闭区间[0,1]的子集,它的定义如下:给定区间[0,1],把这个区间分成三段,去掉中间那一端(即去掉(1/3,2/3)),然后把剩下的两段中每一段都按照刚才的方法再进行操作,然后再分,再分,就这样一直挖洞挖下去。在第二次操作后,剩下的区间是[0,1/9]∪[2/9,1/3]∪[2/3,7/9]∪[8/9,1],再操作一次后区间将由8段构成。最后剩下来的东西是什么呢?你能找到存在于这个集合中的某个具体的元素吗(不包括形如x/(3^n)的端点)?
    我们看到,n次操作后,区间的总长度为(2/3)^n,当n趋于无穷时,区间长度趋于0。但是这并不能说明这个区间里没有任何元素。事实上,我们可以找到至少一个元素。比如,下图中绿色的点表示三等分点,如果P满足AP/AB=A'P/A'B'的话,那么P点始终以比例相同的位置留在某一段上,这样的话即使无限地分下去也不会把它挖掉。
      
    P点的坐标可以通过解这个方程得到:x/1=(x-2/9)/(1/9)。解出来x为1/4。因此,1/4属于康托集合。当然,除了1/4之外还有很多点在这个集合内,我们只是找到了其中一个。事实上,康托集合内的元素有无穷多个。假如我们把所有0到1的数用三进制表示,那么我们发现,去掉的部分都是三进制小数里有数字“1”的。比如,第一次操作时,1/3和2/3的三进制分别是0.1和0.2,我们去掉的是所有从0.1到0.2的数(不包含端点,因为0.1也可以写成0.0222222222…)。第二次操作就去掉了百分位有1的那些数,依此类推。因此,只要一个位于0和1之间的三进制小数能够只用0和2写出,那么它就属于康托集合,因为它永远不会被去掉。刚才的1/4转化为三进制是0.020202…,因此它属于这个集合。显然,这样的数有无穷多个,比如三进制0.002002002…等于十进制的1/13,因此它也属于康托集合。同样,康托集合里不存在孤点,因为在它的左右可以找出无数个属于康托集合的数。应用对角线方法,这个集合里的元素居然还是不可数的。事实上,我们可以建立康托集合与闭区间[0,1]的一一对应关系。
    用以下方法可以把康托集合里的所有数与[0,1]的所有实数对应起来:将康托集合内的任意一个转化为三进制小数后,把每一个数字除以2,再当成是二进制小数转化回来。由于这些三进制小数里只含0和2,因此康托集合里的每个数都恰好能转化为一个[0,1]之间的二进制小数;同样地,二进制小数里的每个“1”变成“2”后也能得到一个康托集合里的数。
      
    设f为定义域在康托集合内的函数,定义f(x)为按照上面的转化方法x所对应的二进制小数,显然这个函数的值域就是[0,1]。比如1/3的三进制为0.0222…,而二进制0.01111…=0.1即十进制的1/2,因此f(1/3)=1/2。我们发现,2/3的三进制为0.2,而0.1的十进制也是1/2。于是f(1/3)=f(2/3)。类似地,那些被挖去的区间的两个端点对应的函数值都相同。现在,我们把这个函数的定义域也扩展到[0,1]:让康托集合里的那些被挖去的区间里的点的函数值与该区间对应的端点相同(在函数图象上看相当于把函数值相等的点用横线段连起来)。于是,f(1/2)=f(1/3)=f(2/3)=1/2,f(1/8)=f(1/9)=f(2/9)=1/4。这个函数一定是上升函数,它在长度为1的区间里从0增长到了1。同时,这个函数也是一个连续函数,因为康托集合与[0,1]的所有实数一一对应。这个函数是一个阶梯状的函数,但是它不是分段的,是连续的。它是无穷多个横线段组成的一个连续函数,除端点无意义以外导数值都是0。或者说,这个函数在不变之中上升。

做人要厚道
转贴请注明出处