Julia 集

Julia集简介

f(z)=z^2+C

其中,z^2表示z的平方,z和C均为复数(复习一下:复数就是a+ib,a为实部,b为虚部,i就是表示虚部的部分)。

然后我们做以下的迭代:

Z1=f(z0)

Z2=f(z1)

Z3=f(z2)

Z4=f(z3)


那么当Z0=0,C=0.5时

Z1=0^2+0.5=0.5

Z2=0.5^2+0.5=0.75

Z3=0.75^2+0.5=1.0625

Z4=1.0625^2+0.5=1.62890625

Z5=1.62890625^2+0.5=3.653355…

Z6=Z5^2+0.5=14.346860796…

最终Zn趋于无限大。

同理,如果令Z0等于另一个值时,有可能会出现最终Zn收敛于某一值(无限趋近于某一个值),也有可能趋近无穷大,或者趋近无穷小(负值)。


Julia集绘制原理

上面的简介说明了其实Julia集就是一个迭代函数而已,那么,这么美丽的图像是怎么画出来的呢?其实很简单,刚才我有提到过,z和C都是复数,C是常量。

所以,z=x+iy,C=a+ib,图像是以x为横坐标,y为纵坐标绘制的。这么说来,只要随便改变a和b的值,就会出现不同的图案了。


那么图像中颜色是根据什么来的呢?


我们从画布左上角第一个像素(x=0,y=0)开始,这个像素所代表的物理意义就是,当z=0+i0(也就是z=0)时,进行Zn的迭代计算。我们预先设置一个阀值k(例如k=4),当计算到Z10的时候,发现Z10的模大于k了(|Z10|>k),就说明在迭代到第10次的时候发散了。依此类推,如果是计算到Z88的时候|Z88|>k了,就说明迭代到第88次的时候发散了。这时候你就可以按照你的口味来了,你可以设置为发散的越慢(迭代次数越多)颜色越深,发散的越快(迭代次数越少)颜色越浅。当然也可以用冷暖色系来表示。找到形成发散的迭代次数,就可以结束迭代运算了。


当然,有一点是要注意的,这个迭代在计算到很高阶的时候运算量可是会很大的哦,所以一定要设置一个迭代次数的最大值,比如,如果再迭代到300次的时候,|Zn|还没有大于阈值k,那就认为这个点永远不会发散了(可以叫做收敛点),直接停止迭代运算。这点的颜色就按迭代最大值时对应的颜色值来填充。

你可能感兴趣的:(Julia 集)