大二时曾经一度沉迷于分形,并且用易语言实现了一个芒德勃罗集的分形作图程序,可以无限放大哟。本文就是讲其算法和原理的,其具体的数学思想可谓博大精深,我就搞不太懂了,在这里我也只能说说其算法。
本站上的分形程序的算法思想如下。
程序算法一点都不难,就是两个迭代式,当迭代满足一定条件后就退出迭代,然后根据迭代的不同结果对画板控件上的点进行着色。我设置的迭代最差情况是每个象素迭代300次,如果要绘制800×600的图,就要迭代800×600×300次,且迭代使用的是双精度浮点型,计算量很大。程序的时间复杂度很大。不过还没达到绘制一幅图要一顿饭的时间。
难的是它的数学思想,分形的最大特点就是自相似性。 目前我所做的只是复平面上的迭代 z→z^2+c(^表示乘方), 其具体化为 x→x^2-y^2+cx , y→2xy+cy, 显然在无穷大处是一个吸引子,但是0附近有一片区域,无论迭代多少次,所得到的点都跑不出这个区域,这就是芒德勃罗集(M集),根据迭代的情况对每个象素点着色,就得到了美丽的分形图了。
通常所说的M集是迭代二次函数:z→z^2+c产生的,此函数具体化就是:
x→x^2-y^2+Cx, y→2xy+Cy
其中x^2表示x的平方,z=x+iy,c=Cx+iCy。M集实际上是常数c=(Cx,Cy)构成的图象。让c从屏幕左上角开始变化,逐行增加,一直变到屏幕右下角。如果取的区域是200乘200,则一共要计算40000个点,把计算结果用不同的颜色标记下来,就得到一幅图