返回列表 回复 发帖
100# myzam


就是因为轨迹法速度上不去,所以用几何画板玩分形的人才弄出扫描的方法来的。
101# math
的确是这样,但是轨迹法虽然速度上不去作的图也不够精美,但是对理解认识M集合,J集我个人认为比比扫描法更胜一筹。如果只是画图而言,扫描法作的图肯定更优美。其实对我使用的电脑来讲,两个方法速度都上不去。
网上一篇写的很棒的关于Julia集的文章
这片文章最精彩的地方就是深入浅出的讲明白了为什么M集进行迭代时要从初值0开始,或者说把M集的定义讲的非常透:
Julia集的定义J={z_0|z_n=(z_n-1)^2+c,n->∞时,|z_n|有界}
M集的定义如下:M={c|c值使Julia集连通}
作者独到的采用反推原象的办法阐述了M集的定义,把概念的形成过程展示给了读者,非常棒!并分析了为什么有时候Julia集是一些孤立点。作者最后归结得出:J集如果含有原点,则J集是连通的。同过对着这结论的归结让读者深切的感受到原来M集跌待时要从初值0开始,原来如此,给人一种恍然大悟的感觉。这些结论在书籍<分形几何-数学基础及应用 (英 法尔科尔)>中都有,但是不容易读懂。


利用变换制作Julia集的边界曲线,观察J集的不连通性。
-----------------------------
数学分析中的等势线定义:曲面Σ:z=f(x,y)与z=k的交集,投影到xy平面叫Σ的等势线。
等势线上任取一点p,则f(p)=k。
复变函数中等势线的定义:设w=f(z)的反函数为w=g(z),如果g(z)把一簇不相交的同心圆映射成不相交的曲线系C,
就说曲线簇C是函数f(z)的等势线。显然f将把等势线映射成一簇同心圆。所以在同一等势线上,f(z)的模为常量。
这样就可以得到复变函数f(z)的等势线的等价定义:w=f(z)的模为常量,z的轨迹就构成了f的一条等势线。
上面的文件就演示了Julia集合的等势线。这是用等势线逼近J集合的方法。
Julia集合的等势线定义:设f(z)d的反函数是g(z),g经过n迭代后记成g^n(z),圆进gn次迭代后的象叫Julia的等势线。
这个定义等价于:如果曲线C由f(z)迭代n次成为圆,即|f^n(z)|=r,就说z的轨迹,即曲线C为Julia的等势线。
你可以再上图的等势线上取一点,用f反复迭代,最后等势线就会变成一个圆,就同一等势线上迭代到一定次数时模相等。

Julia集的边界曲线.gsp (22.49 KB)

演示J集的连通性.gsp (8.79 KB)

顶!大力支持!
低调

如何用代数法扫描J,M集合?

目前做分形主要是用几何法完成的,其实代数法也是一种不错的选择。我把代数法写出来供大家分享。
1.J集合的定义:z=x+y*i,c=c1+c2*i为两个复数。函数f(z)=z^2+c,
构建数列z1=f(z0),z2=f(z1),...,进行无穷次迭代后如果数列{Zn}保持有界,则说初始值Z0∈J集合。
J集合就是由所有这样的初值组成。
一个重要结论:如果复数z的模sqrt(x^2+y^2)>2,那么经过无穷次迭代后,必发散。

2.代数法绘制J集合的步骤如下:
a.创建参数x,y,c1,c2,n,zoom,trans1,trans2(共8个参数)
b.计算x1=x^2-y^2+c1,y1=2x*y+c2
c.描绘坐标点A(x,y),C(c1,c2),A'(x1,y1),
d.选中x,y,和n进行深度迭代:x-->x1,y-->y1.
e.选中迭代象,并打开变换菜单,点击终点象命令,得点An,并度量出点An的坐标
  Xn,Yn。
f.计算esc=sqrt(Xn^2+Yn^2).
   计算 x'=zoom(X+trans1),y'=zoom(Y+trans2)
   描绘点zoomA(x',y')
g.选中点zoomA和计数值esc,打开显示菜单---进入颜色---参数---弹出参数控制颜色面板,确定ok。
h.选中参数x,和点zoomA,构建参数x驱动点A 的轨迹u.
i.创建运动参数y的动画按钮Y.,ok。
到此就获得了一个具有局部放大和定位功能的扫描J的方法。
也许你会怀疑,这样就具有了局部放大,定位功能?信不信你试试就知道了。
注意:
1.如何定位?
   zoomA点就是定位点,你要放到那个部位把zoomA点移动到相应的部分就可以了。那么如何移动zoomA点呢?这只有改变参数x,y 的值就可以了
(可以利用小键盘的+,-号完成,如果发现点跑的太快,只有选择参数x右键属性修改,每次移动的
单位数就可以了)
2.如何确定扫描的范围?
  再创建一个参数h,计算x+h,x-h,y-h,y+h.用这组值修改动画按钮Y的属性,和轨迹u的属性就可以确定一个小正方形区域。特别是轨迹可以拖动修改。如果你放大到1000倍,小正方形的边长可以设置成0.2.
3.如何放大?
   修改zoom(缩放的意思,英文)参数就可以了。
4.放大后图象不见了怎么办?
  参数trans1,trans2就是防这种情况出现才引入的。它门代表平移图象。
  修改它们。特别注意几何画板的滚动条已经天然的给你指出了平移方向。
5.在放大过程中要不断的修改精度,最高精度为小数点后5位,这是系统提供的。
因为放大倍数越大,x,y的改变幅度就越小。此时的精度就越来越高。
6.我如果放大1000倍,按钮Y每秒的扫描单位如何确定?
  按如下方法计算确定:0.1/1000.
7.我把图象的颜色设置好了,放大后图象的颜色会变吗?
不会。原因是我把参数强加给了原象,只要原象不变,其象是不受影响的。
8.如何构建圆形扫描线?
这只要使用复数的三角式z=r*e^(it),按上面的方法做就可以了。大同小异。
当然有个小问题也得要注意:就是用直角坐标系描点,用极坐标系求模和幅角。两种坐标系的转换只需要通过右键属性菜单就完成了。
具体公式如下:
  r=1,t=1.5rad,c1=0.31,c2=0.30,n=3,zoom=2,trans1=1,trans2=1
   计算:r^2cos(t)+c1
            r^2sin(t)+c2
  上面两个式用直角坐标系描点,接着用右键菜单把直角坐标系转换为极坐标系,并度量坐标,这样就得到了该点的幅角 t1 和模 r1。
  迭代如下:r--->r1,t---t1.
   变换式为:x'=zoom(r*cos(t)+trans1),y'=zoom(r*sin(t)+trans2)
   余做法同上。rad---弧度单位,就像米用m表示一样。

9.如何引入两个比值zoom1,zoom2,就可以进行仿射变换。
10.这里的一切都是变换起的作用,变换也许是这个时代玩几何画板的潮流吧。
代数法的入门很低,可以说是目前分形入门最低的方法,没什么特别的操作技巧,可以这么说,搞懂了什么是J集合,天然就会扫描了,相信你会喜欢的。
实例文件在这里:http://www.inrm3d.cn/redirect.php?tid=4046&goto=lastpost#lastpost

--------------------------------------------------------------------------------
上面的扫描方法,J,M集合的外部是空白,要实现外部也着色,就要用这里的全区域扫描。这只要稍为修改上面的文件就可以了。
把上面的扫描增加一个特殊的相似变换:x0=boolean(esc)*x,y0=boolean(esc)*y,其中相似比boolean(esc)为一个逻辑变量,当点(x,y)在指定的区域外时取0,当点(x,y)在指定的区域内时取1,当点(x,y)在指定的区域外并距离原点大于10^308时,为∞,这只要这样构建逻辑变量:boolean(esc)=sgn(sgn(esc)+1),其中esc=2-sqrt(x^2+y^2)。其余类似于上面。

定位点zoomA的原象点(x,y)的坐标很重要,是下一步着色的参考数据。通过移动zoomA点获得相关数据。

代数法全屏扫描.gsp (17.9 KB)

用代数法扫描J,M集合时能否用自建坐标系完成?
  可以。这只要在平面内任意取不共线的三点,O,P,Q.
O---作为原点,P---作为X轴上的单位点,Q---作为Y轴上的单位点。
如果仔细的读过这个版块,就知道变换菜单下的缩放命令其实就是仿射坐标系下的描点工具。
用系统自带的缩放命令描点就可以脱离开系统坐标系在自建的仿射坐标系下绘制J,M集合的图形。
如何探究着色规律?
这里给以个简单的例子说明探究方法,现在要探究单参数RGB着色规律,方法如下:也许你的探究方法更好。
用函数f(x)=trunc(10*x)/10制作标准色带图,层次分明,基本上接近于线性色带图,便于比对,读图,同时这个函数还可以扫描出圆锥曲线,如取
f(x)=trunc(x^2-y)就可以扫描出理想的抛物线来。
。画板提供的色带图是线性色带图,即f(x)=x时的色带图。
假如不制作标准色带图,单看一幅美丽的图形,看过去看过来就是一个美丽,
美丽过后还是美丽。总觉得缺点什么。当然如果是单参数上色,颜色面板就有了标准色带
,自己就不需要在制作标准色带图了。如果是三参数上色,标准色带图就得自己制作了。
如果三参数上色不制作标准色带图,上色就带有盲目性了。




上图是利用trunc函数进一步构造分段函数,实现分段着色的结果,构造的关键因子是f(x)+0*sqrt(-(x-a)*(x-b))
,truanc函数的周期性跳跃,很分段函数的混合重复施加到轨迹的主动点上,从而实现轨迹的分段赋色,最终形成上面的色块。
这种分段赋值着色可以推广到一般的点的轨迹上去,实现一般轨迹的分段赋色,我最初是在logitisc映射上使用的。
方法的根为:0*sqrt(-(x-a)*(x-b))
这也是几何画板构建分段函数的典型方法。在几何画板的帮助文档里面有这种构建分段函数的例子。

这是trunc函数制作的图片

上图的标准色带图,标准色带图看起来偏黑,这说明大图的灰色部分对应的值在黑白边沿处约为0.5左右,事实的确是这样。


用三种距离函数上色:初相距离,象距离,逃逸距离(或叫边界距离,这个距离可能是分形版块里面的逃逸时间吧,不知道是不是)


上图强调了2个地方,地方1---周期性轨道(点开文件的隐藏按钮可以看到轨道),在左上方,用的是高光,所以那里出现较亮,地方2原点,在图中中心的位置,用的是饱和度,所以图中出现了深色。
由于分形意味着相似,因此高光,和深色会在图中的其它地方重复的再现,最典型的地方就是在边界上。这就是为什么要调试的原因所在。
如果我们把点(x,y)到点(a,b)的距离记成d则函数f(d)=u*d+v,f(d)=ln(d),0.1^d,trunc(10d)/10,等等都是单调的,函数d-trun10d)/10,sin(ud+v)等等就是周期函数,
距离函数的值域V和颜色面板的色宽I=【1,t2]的交集D是一个上色最值得关注的数集。把距离函数的在区间D上的最值M,m和要强调的点对应起来,这就是上色的宗旨。
最值与强调部分挂钩!对距离函数的构造不同上色的色的走势也不同,上面的距离的走势决定了色的走势是圆形走势。如果距离函数的值构造出来是从左到右递增,那么色的走势就可能是从左到右的变化。总之上色是两个函数复合的结果:
d--->f(d)--->color,前一个函数的值域和后一个函数的定义域密切相关。
上色始终要分两部走:1分析距离函数的性质,如递增,递减,周期性,对称性,有界性,奇偶性,值域,定义域,完成之后,进入第2步。2.颜色面板色宽的设置,并进行调试
,必要时做做标准色带图比对着调试参数的系数。
分形板块有许多美丽的图片,他们有着丰富的经验,我只把我的想法写出来,对与错就让时间去说明一切吧,望各位大家勿笑!:现代数学函数的概念得以推广,函数的定义域必须是数,但函数的值可以不是数!然中学的函数概念不是这样的。有一天我偶然看到计算机的编程,其编程的要点是一用距离函数上色,二就是用控制迭代次数n上色,比如,就是0<n<10的点
   上红色,10<n<20
的点上绿色,20<n<30上蓝色,如果迭代次数n=30,那么整个图象的色就上完了。但几何画板要通过对n来分段上色是办不到的。因为画板在迭代的中途是无法输出数据的,这和编程不同,有点遗憾。目前关于迭代的数据处理发展得较好的技术就是迭代后“取代”的技术。虽然我们无法对n分类上色,但用距离函数上色的思路其实也就是这种用分类的思路。色就是同一类别的数。数与色相互对应,图象得以显示。
标准色带图起到了颜色预览的作用。它明确了值与色的对应关系。
写到这里,这个问题该收尾了。仔细的研究文件和说明,我想分形的扫描上色都可以做了,当然不一定做的好,比如我展示的图片就说不上美,但是色彩的界限确是明确的,那是控制上色的结果,实现控制上色,避免上色的盲目性是最高追求,这些可以去问分形版块的大师们。上色不美,但并不重要,
重要的是感受了分形作图和分形上色,就像打麻将一样享受了这个过程。喜欢你就会挺受用的。其实了解分形并不难,1个小时的学时就可以了解分形了。提高是一个慢张的过程,了解了分形才可以到分形版块去欣赏分形。随着时间的推移,相信可以上出漂亮的色彩来的。

color.gsp (28.99 KB)

辛苦了。新思想,新方法。通过学习不同的M集J集的构造原理与方法,会加深对分形的认识与理解。
不错!再详细点会更好!
巷子太深,门庭太小,茶客不多。
返回列表