- UID
- 4723
- 帖子
- 752
- 精华
- 5
- 积分
- 1778
|
二。实战篇
8.画板中的双点迭代
双点迭代就是从2个初始点开始迭代,但是这两个初始点不能同时迭代,否则画板不堪负重。
我们应该采用分次迭代,迭代完成后采用取代的办法,这样就可以把那些不需要的点抛掉,尽可能的
让不需要的迭代的点不去参加迭代。我前面做了个显示各种J集合的工具,我体会到当迭代的点的总数
到达万级时,速度就很吃力了。所以双点迭代的关键是让不需要迭代的点不要迭代。做法如下:
设f(z)=z^2+c,c=c1+c2*i,迭代的初始点为z ,z‘,
A---以z=x+yi为初始点迭代:
第一步:在坐标平面内描点A(x,y)
第二步,从z开始迭代,迭代次数为n:z,z1,z2,,...,zn.
记迭代终点zn的为An(xn,yn)。
其中对应规则为 x→x^2-y^2+c1,y→2xy+c2
B---以z’=x'+y'*i为初始点迭代,迭代次数为m:
第一步:在坐标平面内描点A'(x',y')
第二步,从z'开始迭代,:z',z1',z2',,...,zm'.
其中对应规则为:x‘→x’^2-y‘^2+c1,y’→2x‘y’+c2。
记迭代终点为An‘(xn’,yn‘)。
这是两次独立的迭代,所以不会有不该迭代的点参加迭代。
接下来就是要进行取代,
我们要求z和z’充分接近,故引入一个参数h=h1+h2*i,|h|为无穷小量。
令z‘=z+h,则x’=x+h1,y‘=y+h2.、
所以,我们在第二次跌代完成后,把x’,y‘按上面的式子取代就可以了。m也可以用n取代。
但是我觉得留下m参数观察n,m取不同的的着色效果是不错的选择。如n-m≠0时会得到另类的J集合图象。
h参数控制了J集合的相邻的两个等势圈的交界线的粗细。如h=0.1,0.01,0.001.0.0001会得到精度
不同的图形。
最后是用势差上色。
记变量dr=|Δz[n+1]|=|z[n+1]'-z[n+1]|≈2|zn|*|Δzn|,其中
2|zn|=2sqrt(xn^2+yn^2);
|Δzn|=sqrt((x'n-xn)^2+(yn'-yn)^2).
记R=r*|sin(π*dr/T)|,G=g*|sin(π*dr/T)|,B=b*|sin(π*dr/T)|.
r:g:b控制色相(就是红的,还是粉色的意思)。
用R,G,B对点A上色,得点A",构建x对点A"的轨迹,选中轨迹按下ctrl+T,就会追踪这个轨迹。
最后运动参数Y,就会扫描出J集合的等势线CT(contour line)。
说明:ct线的粗细由两个因素控制 ,这从理论部分不难看出
1.h参数。2。初象z和z’的接近度,它们的接近度等价于zn和zn‘的接近度(一致连续的原因)
,这又归结到迭代次数n和m的接近度。
3.n-m≠0时,|zn-zm|会出现明显的差距,J集合的图形很另类。或者说将得到一张粗放形的等势线逼近J集合的图。
高亮只是单点迭代,算法与这里类似,ct线要用双点迭代。ct线要求内存比较高。迭代次数不必取的过高,因为,迭代到一定的次数点就稳定了,在迭代下去没多大的意义,只会耗内存。迭代到一定的次数稳定后,就zn的点的轨道可以看到极限圈,差不多就算稳定了。这时减慢扫描速度,提高扫描线数是可取的方法。
简单的总结:J集合进行双点迭代时,势与势差的关系为Δz[n+1]/Δz[n]≈f"(zn)=2|zn|,
势差(PD)是一个非常有用的量,利用同一个点列的前后项的PD差,可以创建月球表面的那种J集合图,利用同一个点列的PD之比可以创建另一种风格的J集合图。作J集合离不开距离,对距离的变形使用是上色的关键。势差~近似,就是这篇文章的关键词。
------这个方法叫势差法(potential deference--PD method)是比较合理的-------------完END.
补充说明:今天早上起来,感觉理论上还得补充一点点才完备:
||zn|-|z'n||这才是势差,为什么把|zn-zn‘|当势差呢?因为:
||zn|-|z'n||≤|zn-zn‘|→0(|z-z’|→0).
这说明|zn-zn‘|是准确的势差||zn|-|z'n||的很好的近似。
这个文件完整的包括了代数法的基本构架。双点迭代用7b-fractal tool包中的工具Julia set'重复使用两次就可以构建这种迭代。 |
|