返回列表 回复 发帖
练习8. 带概率的IFSP-分形的画板实现(一)
       前面练习2-7中,每一个二维仿射变换(x,y)→(ax+by+e, cx+dy+f),都由a、b、c、d、e、f六个参数确定,把确定IFS-分形的各变换中的这六个参数列成一个表,即为IFS编码,以桧树分形小枝为例:
                           图片15.jpg
     如图,设每条线段长为0.34,水平线段AD长为1,AD与BC互相平分,AB、DC与AD的夹角为8°,BE与AD成45°,CF与AD成55°,作五个仿射变换,将主形A-D分别映射到这五小段上,其IFS码如下表:
               a              b            c            d           e           f            P
      W1  0.3367  -0.0473   0.0473   0.3367        0            0           0.2
      W2  0.2404  -0.2404   0.2404   0.2404   0.3367   0.0473         0.2
      W3  0.3266   0.0945  -0.0945   0.3266   0.3367   0.0473         0.2
      W4  0.1950   0.2785  -0.2785   0.1950   0.6633  -0.0473         0.2
      W5  0.3367  -0.0473   0.0473   0.3367   0.6633  -0.0473         0.2
其中最后一列P值为五个仿射变换在IFS-分形作用的概率。
    下面来作IFS-桧树小枝:
一、作概率轴
                图片14.jpg            
     如图,将线段AB五等分,等分点依次为C、D、E、F,在线段AB外任取一点P,调用“画板分形工具箱”中“左闭右开区间示性数”工具,作区间AC、CD、DE、EF的区间示性数m1~m4,调用“闭区间示性数”工具作区间FB的区间示性数m5;
二、作IFSP变换点w,其中初点为z(x,y):
    变换点横标:(0.3367x-0.0473y) m1+(0.2404x-0.2404y+0.3367) m2 +(0.3266x+0.0945y+0.3367) m3+(0.1950x+0.2785y+0.6633) m4 +(0.3367x-0.0473y+0.6633) m5
      变换点纵标:(0.0473x+0.3367y) m1+(0.2404x+0.2404y+0.0473) m2 +(-0.0945x+0.3266y+0.0473) m3 +(-0.2785x+0.1950y-0.0473) m4 +(0.0473x+0.3367y-0.0473) m5
三、迭代成分形
    先将P合并到概率轴AB,作z→w,P→P,深度为n的随机迭代,显示为“完整迭代”,保存后变n=10000,得IFS-桧树小枝。
                  图片16.jpg

IFS-桧树小枝.gsp (7.42 KB)

43# 柳烟
柳老师这么用心,一大早就干上了?
把迭代像的显示方式改为“完整迭代”就成了。
再检查发现你的变换有问题,从作五个自定义变换开始重做,就正常了。
练习9. 带概率的IFSP-分形的画板实现(二)
      IFSP-分形蕨是随机迭代函数系统分形的经典范例,确定它的四个仿射变换分别由矩形W0映照成矩形W1(几乎为线段)、W2、W3、W4来定义(如图所示):
             IFSP-分形蕨.jpg
下面就以W1、W2、W3、W4来记这四个仿射变换,其IFS码为:
                   a          b          c                d        e      f         P
      W1        0          0          0               0.16    0    -0.04    0.01
      W2        0.85     0.04    -0.04           0.85    0     1.60    0.85
      W3        0.20    -0.26     0.23           0.22    0     1.60    0.07
      W4        -0.15    0.28     0.26           0.24    0     0.44    0.07
      注意,IFSP-分形蕨的概率轴上各分点不是等分点,反映出分形蕨在各方向上生长的不均匀性,这样对蕨草的模拟更为逼真。
    IFSP-分形蕨的作法仿练习8完成。
                图片18.jpg
    另:在帖子《迭代函数系统IFS》里有形象逼真的IFS-分形树、摇曳不停的IFS-分形树与蕨的源文件,其IFS编码都附于文件中,下载后均可仿练习8作,以下不再赘述。


    下一练习将开始非压缩仿射映射迭代函数系统IFS的练习,其中包括诱人的圆的极限集的绘制。

IFSP-分形蕨.gsp (6.89 KB)

非仿射的压缩映射迭代函数系统IFS
图片19.jpg
图片20.jpg

IFS-z^1.75+c→z.gsp (58.03 KB)

IFS-(z^3+c)z^-1→z.gsp (25.47 KB)

感谢柳老师指正“画板分形常用工具箱”中z^k的错误,现已在6#原位置更新。
原位置再次更新了“画板分形常用工具箱”,新增了复数的模工具、辐角工具、距离工具、两个p示性数工具。
练习10. 反函数迭代(逆迭代)法IFS-分形的画板实现
     分形具有局部与整体的自相似性,也就是说局部是整体的一个小复制品,只是在大小、位置和方向上有所不同而已;而数学中的仿射变换是一种线性变换,它正好具有把图形放大、缩小、旋转和平移的性质。因此,产生一个复制品就相当于对图形作一次压缩仿射变换。于是,从原则上说,任何分形图形都可以用一组压缩仿射变换来描述或生成。
     但是,如何求出分形的压缩仿射映射变换,提取其IFS码,这是分形几何学一直没有彻底解决的难题。然而对于一些较简单的整式或分式型迭代格式的分形,我们可以用反函数迭代法来构造其IFS分形,如练习1中“逆迭代圆IFS-Julia集”。下面再以“z→z^(7/4)+c“格式的分形为例,练习这种反函数迭代法的画板实现。
     反解z=w^(7/4)+c得w(m+1)=(z-c)^(4/7)*e^( i*2mπ/7),其中m=0,1,…,6,从而得到函数迭代系统{W(m):z→w(m);m=1,2,…,7}。画板实现如下:
一、构造迭代格式:
     1.打开“复分形扫描线框架【可调小扫描线】”,删除点P、Q、T0、r、p0,将标题改为“逆迭代IFS: z^(7/4)+c→z”,改k的精确度为“十万分之一”,输入“4/7”;
     2.调用“画板分形常用工具箱”,先后用“z[1]-z[2]”工具和“z^k” 工具,计算出w1的横纵坐标,绘制点W1,并以坐标原点为中心,将W1递次逆时针旋转2π/7,得点W(m) ,m=2,3,…,7;
     3.度量出W(m),m=1,2,…,7的横纵坐标后隐藏这些点;
二、构造随机变换点
     4.作七等分概率轴和点P,用“区间示性数”工具仿练习8构造示性数,m1~m7,计算变换点横纵坐标:
             未命名1.JPG
             未命名2.JPG
绘制变换点w;
三、迭代成分形
     先将P合并到概率轴后,作z→w,P→P,深度为n的随机迭代,显示为“完整迭代”,保存后变n=50000,得IFS分形图(建议c=4.5)。
                         逆迭代IFS:z^(7∕4)+c→z.jpg

逆迭代IFS:z^(7∕4)+c→z.gsp (12.63 KB)

练习11. Apollony分形的画板实现
      创建Apollony分形由三个相切的初始圆开始,第一步在三者间向内作一个公切圆,第二步又在其中任意三圆之间分别作三个公切圆,
               图片1.jpg     图片2.jpg
……以此类推,经过n次重复(迭代),得到Apollony分形:
                                           图片3.jpg
      可以看出,Apollony分形呈现出三轴对称性,其中每一个圆都恰与周围三圆相切,我们可以将其看成是以其中任两圆为基圆将第三圆向内压缩而成,由此可知Apollony分形是由三个压缩变换(Moebius变换)生成,若分别以三点O1(1,sqrt(3))、O2(1,- sqrt(3))、O3(-sqrt(3) ,0)为圆心,sqrt(3)为半径的圆为三个初始圆,可以求出这三个压缩变换为:
                   W1:w1=3(sqrt(3)+1-z)^-1-sqrt(3)+1
                   W2:w2=w1·e^(i·2π÷3)
                   W3:w2=w1·e^(-i·2π÷3)
下面构建这个分形。
一、构造迭代格式:
     1.打开“复分形扫描线框架【可调小扫描线】”,删除点P、Q、T0、r、k、p0,将标题改为“IFS-Apollony”;
     2.计算sqrt(3)+1-z横标和纵标,调用“画板分形常用工具箱”中“1/z”工具计算(sqrt(3)+1-z)^-1 ,分别双击其的横纵标编辑为w1=3(sqrt(3)+1-z)^-1-sqrt(3)+1的横纵标,绘制点w1,并以坐标原点为中心,将w1递次逆时针旋转2π/3,得点w2、w3。
二、迭代成分形
      作z→w1,z→w2,z→w3,深度为n的迭代,显示为“完整迭代”,保存后变n=10,得IFS- Apollony分形。
                                     IFS-Apollony.jpg
      如果将Apollony分形以单位圆基圆施行三次反演变换,我们将看到一个更加美丽的分形——四圆极限集。下一次将开始练习圆的极限集的画板实现方法。

IFS-Apollony.gsp (4.98 KB)

在原位置更新了“画板分形常用工具箱”和两个扫描框架,感兴趣的板友请自取,如在运用中发现有什么问题,请不吝指正。
    在新年来临之际,祝本坛全体朋友们身体健康、事事如意,祝【画板论坛】来年更加红火,坛友千千万!
返回列表