◆王海飛 馬德峰
基于Gumowski-Mira公式的分形圖實現算法的研究
◆王海飛 馬德峰
分形是生活中常見的現象。分形的內容太多,只研究基于公式Gumowski-Mira的分形。通過介紹公式,然后用VC編程實現。通過這幾個參數的改變,研究圖形的變化,從而研究各個參數的物理意義。
分形;Gumowski-Mira公式;自相似
分形是日常生活中常見的現象,本文只研究基于公式Gumowski-Mira的分形。通過對公式中參數的多次改變,研究圖形的變化,從而研究各個參數的物理意義。對于程序代碼,本文會著重講解其中的每個參數和變量對圖形的影響,從而把其中的物理意義進行總結歸納,讓大家對分形以及在這個公式基礎上的分形有一個清楚、全新的認識!
分形的起源其實,分形的研究可以上溯到很久以前。大約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.1是比較典型的分形圖形,它們都具有自相似特性,但并不嚴格自相似,所以用“具有自相似”特性來定義分形已經有許多局限了,在人們的知識中應該繼續擴展分形的含義。

圖3.1
通過前面的介紹已經知道:分形最明顯的特征是自相似性,其他的特征包括無限復雜、無限細致等。分形圖形圖3.1,它表現出自相似的特性。這里的自相似性體現在:每一個圖都是由它的更小版本組成,而整個圖形并沒有重復。也就是說,這時自相似的實質應該是某一個部分在其他地方重復出現。
圖3.2是真實拍攝的一張蕨類植物的圖片,它也具有自相似特性。在這棵蕨類植物中,枝杈是整個植物的小版本,而枝杈的枝杈則是更小的版本。這種特性可以無限地持續下去。但是,它并不像計算機生成的分形圖形那樣嚴格地自相似,這大概是因為在成長過程中受到許多外界因素的影響。正是因為分形具有的自相似特性,才使分形如此重要并且具有實際應用意義。自然界中許多植物具有自相似特性。

圖3.2
圖3.3的風景圖片是說明分形的另一很好的例子,這張美麗的圖片是利用分形技術生成的。在生成自然真實的景物中,分形具有獨特的優勢,因為分形可以很好地構建自然景物的模型。其實,分形應用的領域很廣,周圍到處有分形應用的實例。如微生物中,菌落均呈現共同的形態特征:以母細胞為中心的環狀層次結構。為了抽取隆起部分,科學家已經采用分形理論模型實現對菌落圖像的紋理分割[3]。只要注意觀察,就會注意到分形的應用非常廣泛。

圖3.3
Newton分形一個連續函數f(x),如果取其Taylor展開前兩項作為它的近似,則有:

令f(x)=0,則函數f(x)的零點x可表示為:

于是有了求f(x)=0方程根的Newton迭代法:

當n趨向于無窮大,極限x(n)存在,則序列{X(n)}平方收斂到f(x)的零點。
把復數Z運用到(4.1)式上,得到如下公式:

并運用逃逸時間法就畫得一幅Newton分形圖。
Gumowski-Mira公式Gumowski-Mira公式作為下面的迭代法出現:

式中b用于控制軌道是膨脹還是收縮,如果b稍大于1,比如1.004,則軌道就會膨脹;反之若稍小于1,比如0.998,軌道就會收縮。在對下面這些函數作圖時,大多數用的是1.005,一個經典的函數是:

Mira公式算法Mira公式算法[4](w代表函數,random是隨機數,0<random<1):

計算軌道,在迭代100到20000次間,每次都畫(x,y)點,當然也可加進顏色:

下面是根據Gumowski-Mira公式在VC環境下編寫的部分程序代碼[5-8]:


主要通過對不同參數值的設置所對應的圖形的不同來研究各個參數(即參數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會隨著偏移量的增大右移。

圖6.1 n=10000

圖6.2 n=1000000

圖6.3 b=0.99

圖6.4 b=0.999

圖6.5 b=0.985

圖6.6 a=0.001

圖6.7 a=0.005

圖6.8 a=0.05

圖6.9 a=0.08

圖6.10

圖6.11

圖6.12

圖6.13

圖6.14

圖6.15

圖6.16

圖6.17

圖6.18
分別通過調用函數“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.
G434
B
1671-489X(2014)17-0036-04
10.3969/j.issn.1671-489X.2014.17.036
作者:王海飛、馬德峰,鄒平縣第一中學(256200)。