这个Mandelbrot集合通过应用迭代复数平面上数字的数学公式。例如Take复数c=x+yi。从零开始。每次迭代时,将数字平方并加上c。如果该值趋于无穷大(如果模数的(与原点的距离)大于4无穷)那么c不是Mandelbrot集合。如果经过多次迭代后数字仍然较小,则该数字可能是集合的成员。例如c=0+0i
i=0,n=0,n=n^2+c=>n=0
i=1,n=0,n=n^2+c=>n=0
这是一个成员,它永远不会去无穷.
例如c=-1+0i
i=0,n=0,n=n^2+c=>n=-1
i=1,n=-1,n=n^2+c=>n=0
i=2,n=0,n=n^2+c=>n=-1
i=3,n=-1,n=n^2+c=>n=0
这是一个成员,它永远不会去无穷.
例如c=1+0i
i=0,n=0,n=n ^2+c=>n=1
i=1,n=1,n=n ^2+c=>n=2
i=2,n=2,n=n ^2+c=>n=5
这不是一个成员,它将转到无穷.
当观看边缘的有趣区域时,会生成漂亮的图片分形.颜色取决于现有数字到达无穷大的速度。您可以生成ascii公司 Mandelbrot集合带有以下代码的图片。
快速基础课程复数算术:
i是-1的平方根。所以i^2=-1。
设c=x+yi,然后c^2=x^2+2xyi-y^2。
#包括<stdio.h>#定义SWIDTH 79#定义SHEIGHT 47#定义MINX-2.0#定义MINY 0#定义MAXX 0.5#定义MAXY 1.5#定义DIFX 2.5#定义DIFY 1.5#定义MAXIT 64char shades[ 38]=“..^^:://II&&@@***%%$$###”;整数iter(双r,双i){整数foo=0;双rr,ii,zr,zi;rr=ii=zi=zr=0.0;而(foo<MAXIT&&rr+ii<4){foo++;zi=2*zr*zi+i;zr=rr-ii+r;rr=zr*zr;ii=zi*zi;/*打印f(“%d%f%f%f%f%f%f\n”,foo,r,i,zr,zi,rr,ii);*/}返回foo;}main(){整数x,y,i;双xp,yp;对于(y=0;y<=高度;y++){xp=(双)y*DIFX/(双)SHEIGHT+MINX;对于(x=0;x<SWIDTH;x++){yp=(双)x*DIFY/(双)SWIDTH+MINY;i=iter(xp,yp);printf(“%c”,阴影[ i%32]);}printf(“\n”);}}