Mandelbrot 分形.

一个无限次迭代的规则如下:z=z^2+c,z的初始值为0,c是复平面上的复数,那么迭代3次的结果是

如果给c赋值-1+I,迭代6次的过程如下:

可以发现,当c=-1+I的时候,经过无限次迭代之后,迭代值会跑到无限远的地方。一个自然而然的问题就出来了:哪一些复数c,在经过无限次迭代之后,不会跑到无限远的地方?下面多来试验几个例子。当c=-I的时候,这个迭代是不会发散的,而是在-I,-1-I,I之间循环出现:

当c=-1/2-I/2,迭代30次

如果在迭代过程中,某一步的迭代值的模长大于2,那么这个迭代肯定是发散的,也就无须再继续往下计算了:

所以,当c=±1±I 的时候,迭代过程是发散的。

当c是大于0的实数的时候,基本上都是发散的,但是当c很接近于0的时候,发散速度很慢。所以,基本上迭代20次还没有出现发散特征(模长>2),我们就把它视为"不发散"。用Length求出20步迭代之内,迭代结果出现发散特征时的迭代次数:

如果没有发散特征,就会返回21:

把这个迭代过程,定义为rule - 意为迭代规则:

把这个迭代规则作用于复平面上 - 2 - 1.5 I 到 2 + 1.5 I 之间的矩形区域内的若干复数,以 0.5 为间隔:

我们用 ArrayPlot 把上面的数据转化为像素图:

如果用0 .1作为间隔,看看图形怎么样:

看来,间隔越小,像素图越细致,下面用一个互动效果,来演示一下:

Mandelbrot分形已经初具雏形。 改变一下着色方案:

如果改变一下迭代规则,会发生什么变化?

(0)

相关推荐