欢迎来到学术参考网

基于Gumowski—Mira公式的分形图实现算法的解决

发布时间:2015-07-28 18:39

1 引言
  分形是日常生活中常见的现象,本文只研究基于公式Gumowski-Mira的分形。通过对公式中参数的多次改变,研究图形的变化,从而研究各个参数的物理意义。对于程序代码,本文会着重讲解其中的每个参数和变量对图形的影响,从而把其中的物理意义进行总结归纳,让大家对分形以及在这个公式基础上的分形有一个清楚、全新的认识!
  2 分形概述
  分形的起源 其实,分形的研究可以上溯到很久以前。大约100年前,分形的思想已经开始出现在数学领域。但是,就像其他的一些革命性的思想一样,分形的研究受到主流学术的谴责,被人们认为只是研究一些数学中的怪异现象。那时候著名的数学家Charles Hermit把分形称为“怪物”,这代表了绝大多数人的观点。
  IBM公司的数学家Benoit B. Mandelbrot认真地研究了分形与自然的关系,他向人们展示了分形广泛地存在于身边,一些现象都能够用分形来进行准确的描述,他和他的同事们用分形来描述树和山等复杂事物。他还扩展了维数的概念,开创性地提出了分数维的概念,并创造了“fractal”一词。“fractal”就是人们所说的“分形”,也叫“分维”,台湾的学者则称之为“碎形”。为了褒奖Mandelbrot的突出贡献,人们把他称为“分形之父”[1]。
  分形的概念 Mandelbrot在解释“分形”一词时说:“我由拉丁语形容词fractus创造了‘分形’(fractal)一词。相应的拉丁语动词fragere意味着‘打破’和产生不规则的碎块。从而可见,除了‘破碎的’(如像碎片或曲折),fractus也应当具‘不规则’的含义,这两个含义都被保存在碎片(fragment)中。”[2]有许多数学结构是分形,如谢尔宾斯基三角形、科切雪花、皮亚诺曲线、曼德勃罗集、洛仑兹吸引子等。分形同样可以描述许多真实世界的对象,如云彩、山脉、湍流和海岸线等,当然它们不是单纯的分形形状。
  Mandelbrot曾给出了一个分形的数学定义:一个几何对象,它的豪斯道夫维数严格大于其拓扑维数。这不仅有些抽象,而且也不是一个令人满意的定义,因为还有好多分形没有被该定义涵盖。后来他又给出一个比较通俗的定义:部分与整体以某种形式相似的图形。该定义仍然不能表达分形的全部意思,但会使很多初学者开始理解分形了,虽然还不能全部理解。
  分形的几何特征 分形是破碎的、不规则的,其几何性质十分丰富,可以说,到目前为止它的几何性质还没有完全被挖掘出来。这里只将分形最常见的一些性质描述给大家:1)分形是破碎的,局部不能可微的不规则图形;2)分形一般是自相似的,或是统计自相似的;3)分形有时也是自仿射的;4)分形的维数一般是分数的,但也有整数维数的分形;5)分形图形具有精细结构,即无论局部放大多少倍数,仍然具有复杂的结构。
  3 典型分形图形
  图3.1是比较典型的分形图形,它们都具有自相似特性,但并不严格自相似,所以用“具有自相似”特性来定义分形已经有许多局限了,在人们的知识中应该继续扩展分形的含义。
  通过前面的介绍已经知道:分形最明显的特征是自相似性,其他的特征包括无限复杂、无限细致等。分形图形图3.1,它表现出自相似的特性。这里的自相似性体现在:每一个图都是由它的更小版本组成,而整个图形并没有重复。也就是说,这时自相似的实质应该是某一个部分在其他地方重复出现。
  图3.2是真实拍摄的一张蕨类植物的图片,它也具有自相似特性。在这棵蕨类植物中,枝杈是整个植物的小版本,而枝杈的枝杈则是更小的版本。这种特性可以无限地持续下去。但是,它并不像计算机生成的分形图形那样严格地自相似,这大概是因为在成长过程中受到许多外界因素的影响。正是因为分形具有的自相似特性,才使分形如此重要并且具有实际应用意义。自然界中许多植物具有自相似特性。
  图3.3的风景图片是说明分形的另一很好的例子,这张美丽的图片是利用分形技术生成的。在生成自然真实的景物中,分形具有独特的优势,因为分形可以很好地构建自然景物的模型。其实,分形应用的领域很广,周围到处有分形应用的实例。如微生物中,菌落均呈现共同的形态特征:以母细胞为中心的环状层次结构。为了抽取隆起部分,科学家已经采用分形理论模型实现对菌落图像的纹理分割[3]。只要注意观察,就会注意到分形的应用非常广泛。
  4 分形与Gumowski-Mira公式
  Newton分形 一个连续函数f(x),如果取其Taylor展开前两项作为它的近似,则有:
  f(x)≈f(x0)+f′(x0)(x-x0)
  令f(x)=0,则函数f(x)的零点x可表示为:
  X≈x0-f(x0)/f′(x0)
  于是有了求f(x)=0方程根的Newton迭代法:
  X(n+1)=X(n)-f(X(n)/f′(X(n))(n=0,1,2…)(4.1)
  当n趋向于无穷大,极限x(n)存在,则序列{X(n)}平方收敛到f(x)的零点。
  把复数Z运用到(4.1)式上,得到如下公式:
  Zn+1=Zn-f(Zn)/f′(Zn)(n=0,1,2…)
  并运用逃逸时间法就画得一幅Newton分形图。
  Gumowski-Mira公式 Gumowski-Mira公式作为下面的迭代法出现:
 X(n+1)=b*Y(n)+f(x(n))
  Y(n+1)=f(X(n+1))-X(n) (4.2)
  式中b用于控制轨道是膨胀还是收缩,如果b稍大于1,比如1.004,则轨道就会膨胀;反之若稍小于1,比如0.998,轨道就会收缩。在对下面这些函数作图时,大多数用的是1.005,一个经典的函数是:
  f(x)=aX+2(1-a)X2/(1+X2)
  下面这些函数是常用的:
  f(x)=aX+2signx(1-a)x2/(1+x2)
  f(x)=sign(x*a*X)+(1-a)x2/(1+x2)+sinx
  f(x)=-0.05aX+a(∏-ax)x2/(1+x2)
  式中sign=
  Mira公式算法 Mira公式算法[4](w代表函数,random是随机数,0  初值:
  a=random-0.5
  b=1.005
  w=1
  x=0.0004
  y=0.0004
  计算轨道,在迭代100到20000次间,每次都画(x,y)点,当然也可加进颜色:
  z=x
  x=(b*y)+w
  w=f(x)(如上所列的某一个。)
  y=w-z
  Plot(x,y)
  5 基于Gumowski-Mira公式的分形图生成
  下面是根据Gumowski-Mira公式在VC环境下编写的部分程序代码 [5-8]:
  void CMyView::OnDraw(CDC* pDC)
  {
  CMyDoc* pDoc = GetDocument();
  ASSERT_VALID(pDoc);
  int n;a=0.001,b=0.99,f; //设置a、b的初始值
  float mx,my; //程序
  x=-15;
  y=-15;
  for(n=1;n<=1000000;n++) //设置循环的次数,即点
  的个数
  { mx = b*y + a*x + (1-a)*2*x*x/(1+x*x);
  my = -x + a*mx + (1-a)*2*mx*mx/(1+mx*mx);
  x=mx; //根据公式重新赋予x值
  y=my; // 根据公式重新赋予y值
  pDC->SetPixel(x*30+280,300-y*30,RGB(255,0,0));
  //画点函数
  }
  }
  6 Gumowski-Mira公式参数的意义
  主要通过对不同参数值的设置所对应的图形的不同来研究各个参数(即参数n,b,a)的物理意义。
  通过图6.1、图6.2的对比可以看到参数n决定着图像的清晰程度,因为参数n代表着循环的次数,即点的个数,所以n的值越大图像越清晰。
  通过图6.3、图6.4和图6.5的对比可以看出,参数b是一个非常敏感的常数,通常非常接近于1.0。如果b有一个轻微增长,比如由0.99增大到0.999,轨迹会膨胀,或者螺旋向外至无限。如果b有一个轻微的减小,比如0.985,那么轨迹会收缩至奇异吸引子。
  通过图6.6、图6.7、图6.8、图6.9可以看出,其实参数a也是一个很敏感的参数,a对图形的舒展有很大影响,随着a值的增大,图形周围的类似于翅膀的东西就会迅速收敛。
  通过图6.10和图6.11可以看出,随着y乘的倍数缩小,图形会在纵轴即y轴方向变扁,也就是说这个系数控制着y轴方向舒展的程度。
  通过图6.10、图6.12和图6.13可以看出,随着y轴偏移量的增大,图形会往下面移动,说明坐标y会随着偏移量的增大而增大,所以偏移量增大,图形会往下移动。
  通过图6.10、图6.14和图6.15对比可以看出,随着x所乘倍数的变大,图形就会在x方向舒展;相反,图形就会在x方向上收敛。
  通过图6.16、图6.17和图6.18可以看出,随着x坐标偏移量的增大,图形就会右移,即坐标x会随着偏移量的增大右移。
  7 总结
  分别通过调用函数“pDC->SetPixel(x*30+280,300-y*30,n)”(n为颜色值),对n分别设置为RGB(255,0,0)、
  RGB(0,0,255)、RGB(0,255,0),分别得到红色、蓝色、绿色的图像。
  通过上面的研究可以看出,各个参数具有敏感特性,因此通过对参数的多次改变,研究图形的变化,从而研究各个参数的物理意义,以及函数中各个值的变化对整个图形的影响,从而研究总结原因。
  参考文献
  [1]金以文,鲁世杰.分行几何原理及其应用[M].杭州:浙江大学出版社,1998.
  [2]Mandelbrot B B.大自然的分形几何[M].上海:上海远东图书发行部,1998.
  [3]王永铭,等.分形模型用于菌落图象的纹理分割[J].天津大学学报,1997(6).
  [4]李水根.分形[M].北京:高等教育出版社,2004.
  [5]《电脑编程技巧与维护》杂志社.Visual C/C++图形图像与游戏编程典型实例解析[M].北京:中国水利水电出版社,2006.
  [6]勒济芳.Visual C++小波变换技术与工程实践[M].北京:人民邮电出版社,2004.
  [7]陆宗骐.C/C++图象处理编程[M].北京:清华大学出版社,2005.
  [8]张宏军,党留群,赵天巨.Visual C++ 6.0编程案例精解[M].北京:电子工业出版社,2005.

上一篇:信息技术教学中“半成品加工”策略的问题和方

下一篇:多媒体辅助初中英语教学的技术特点的相关分析