返回列表 回复 发帖

牛顿分形的“光滑”着色

所谓Newton分形,就是在复平面上给定复函数g(z),构造Newton迭代公式 f(z)=z-g(z)/g'(z),对复平面内的每一点z0,用Newton迭代公式 z_(n+1) = f(z_n)进行迭代计算,得一迭代序列,z0,z1,z2,z3,……(1),根据这序列的不同表现,选定一个颜色值给z0以标记,在复平面内就形成了一个漂亮的图案就是Newton分形。典型的有 g(z)=z^3-1.
N1207260.JPG
N120726.JPG
N120726'.jpg
对于Newton迭代序列,z0,z1,z2,z3,……(1),一般可以很快收敛于g(z)的一个零点,但一般情况下g(z)有多个零点,而且我们不能准确写出g(z)的零点值。为此我们作变换dn=zn-z_(n-1),构造新序列:d1,d2,d3,……(2),它可以很快收敛于0。可以想象,由于z0在平面内的不同位置,它们分属于g(z)的不同零点的领域,即使在同一零点领域,也有离零点远近之分,为此,再引入一个小正数 ε>0,对于z0,若存在一个正整数 N,当 n>=N 时,||dn||<ε,而 n<N 时,||dn||>ε ,这时对于z0,产生几个可用来给z0标记颜色的特殊值,N,zN,dN。N——逃逸时间,zN——迭代终点——应该很接近零点,dN——最后一次迭代的步长。当然,由于时间和技术问题,我们应该设定一个最大迭代次数 M ,对一般的点z0 的 N < M,可是有一些点z0,迭代 M 次后仍有 ||dM||>ε,这些点就是零点领域边界附近的点,画在图上就是Newton分形的分形链上的点。
3# 柳烟

是那一个效果,我怎么没找到
2# changxde

关于迭代序列的收敛问题,要用到数学理论,我已经淡忘了,网友可以补上。
为了淡化等势线,我们考虑 ||dN||/ε 这个值,它的值域是(0,1],把它与逃逸时间结合起来,即可淡化等势线。
不过因缺乏迭代序列的收敛理论,||dN||/ε 这个值的变化规律还不太清楚,但可以肯定它不是线性的。望网友们一块探讨。
N120727.JPG
淡化等势线的方法如下图:
000.JPG
如果 b 的变换在 ( 0 , 1 ] 上是均匀的,淡化效果最好。
那么如何使上面那个比 ||dN||/ε 在 ( 0 , 1 ] 上变化均匀呢?
10# 柳烟

这个颜色索引值有点怪,
If iter-#maxiter<0
    #index=cabs(sqrt(log(Power)*(#maxiter-iter) + log(abs(log(bailTest)))))
Else
   #index=sqrt(log(abs(log(bailTest))) )
Endif
为什么没用 @SmallBailout ???
翻译成我们常用的符号是
sqrt((N-et)*ln2+ln|ln|d||)
不过这个值比较大,调整一下
sqrt(((N-et)*ln2+ln|ln|d||)/N)
而这个值又比较集中与某一点,适当调整一下即可。
N0.JPG
它是循环终止的条件,不能去掉。
另外在N集主程序中好像没有记录|z-zold|。
疑问是在index中怎么没有SmallBailout的影子,这个值过大或过小都会对着色效果有影响。
颜色值过度还是比较平滑的
N0.JPG

找了好久找到这个文件,可惜我也看不懂了。

牛顿分形.gsp (87.42 KB)

学习向老师的多轴对称
N0.JPG
N0.JPG
返回列表