金能智 者建 武文洮 楊博超 李葆光
摘 要:Matlab具有強大的科學(xué)運算和靈活的程序設(shè)計,可提供高質(zhì)量的圖像可視化,已經(jīng)在很多領(lǐng)域得到廣泛應(yīng)用。分形是非線性科學(xué)的重要分支,分形幾何學(xué)卻具有尺度上的對稱性,分型圖形是計算機圖形學(xué)和分形理論相結(jié)合的產(chǎn)物。該文利用Matlab強大的編程工具和圖形顯示功能實現(xiàn)Cantor集、Koch曲線、分形樹圖形,這對數(shù)學(xué)類、計算機圖形學(xué)和相關(guān)專業(yè)類研究人員有一定的參考價值。
關(guān)鍵詞:分形 Matlab Cantor集 Koch曲線
中圖分類號:TP312 文獻標(biāo)識碼:A 文章編號:1674-098X(2017)01(b)-0105-02
Matlab是矩陣實驗室(Matrix Laboratory)的簡稱,是美國MathWorks公司出品的商業(yè)數(shù)學(xué)軟件,用于算法開發(fā)、數(shù)據(jù)可視化、數(shù)據(jù)分析以及數(shù)值計算的高級技術(shù)計算語言和交互式環(huán)境。Matlab提供了強大的科學(xué)運算、靈活的程序設(shè)計、高質(zhì)量的圖像可視化以及便捷地與其他程序和語言接口的功能[1,2]。目前,Matlab已經(jīng)應(yīng)用到很多科研領(lǐng)域,如,生物信息學(xué)[3]、統(tǒng)計學(xué)[4]、信號處理[5]、小波分析[6]等。
分形(Fractal)是非線性科學(xué)的一個重要分支,應(yīng)用于自然科學(xué)和社會科學(xué)的眾多領(lǐng)域[7-9]。1973年,數(shù)學(xué)家Mandelbrot在法蘭西學(xué)院講課時,首次提出了分形的思想。他給分形下的定義就是:一個集合形狀,可以細分為若干部分,而每一部分都是整體的精確或不精確的相似形。分形的基本特征是具有標(biāo)度不變性。其研究的圖形是非常不規(guī)則和不光滑的,已失去了通常的幾何對稱性。但是,在不同的尺度下進行觀測時,分形幾何學(xué)卻具有尺度上的對稱性或稱標(biāo)度不變性。
分形圖形是計算機圖形學(xué)和分形理論相結(jié)合的產(chǎn)物,在電腦模擬研究具有分形特征物體的圖像。分形的計算機生成問題具有明顯的挑戰(zhàn)性,它使傳統(tǒng)數(shù)學(xué)中無法表達的形態(tài)(如,山脈、花草等)得以表達。分形圖案在自然界真實物體模擬、仿真形體生成、計算機動畫、藝術(shù)裝飾紋理、圖案設(shè)計和創(chuàng)意制作等具有廣泛的應(yīng)用價值。
該文中利用強大的編程工具Matlab來實現(xiàn)Cantor集、Koch曲線、分形樹圖形,這對數(shù)學(xué)類、計算機圖形學(xué)和相關(guān)專業(yè)類研究人員有一定的參考價值。
1 Cantor集
取一條長度為1的直線段,將它三等分,去掉中間一段,留剩下兩段,再將剩下的兩段再分別三等分,各去掉中間一段,剩下更短的四段,將這樣的操作一直繼續(xù)下去,直至無窮,由于在不斷分割舍棄過程中,所形成的線段數(shù)目越來越多,長度越來越小,在極限的情況下,得到一個離散的點集,稱為Cantor集。具體代碼如下。
function f=cantor(ax,ay,bx,by)
c=0.2;
d=2;
if (bx-ax)>c
x=[ax,bx];y=[ay,by];hold on;
plot(x,y,LineWidth,5);hold off;
cx=ax+(bx-ax)/3;
cy=ay-d;
dx=bx-(bx-ax)/3;
dy=by-d;
ay=ay-d;
by=by-d;
cantor(ax,ay,cx,cy);
cantor(dx,dy,bx,by);
end
end
執(zhí)行cantor(1,4,10,4),結(jié)果顯示如圖1。
2 Koch曲線
Koch曲線,設(shè)想從一條直線段開始,將線段中間1/3部分用等邊三角形的兩條邊代替,形成具有5個結(jié)點的圖形,在新的圖形中,又將圖中每一直線段中間的1/3部分都用一等邊三角形的兩條邊代替,再次形成新的圖形,以此重復(fù),直至無窮。外界的變得原來越細微曲折,形狀接近理想化的雪花。具體代碼如下。
function f=Koch(ax,ay,bx,by,c)
if (bx-ax)^2+(by-ay)^2 x=[ax,bx];y=[ay,by]; plot(x,y,LineWidth,2); axis equal hold on; else cx=ax+(bx-ax)/3; cy=ay+(by-ay)/3; ex=bx-(bx-ax)/3; ey=by-(by-ay)/3; l=sqrt((ex-cx)^2+(ey-cy)^2); alpha=atan((ey-cy)/(ex-cx)); if (alpha>=0&(ex-cx)<0)|(alpha<=0&(ex-cx)<0) alpha=alpha+pi; end dy=cy+sin(alpha+pi/3)*l; dx=cx+cos(alpha+pi/3)*l; Koch(ax,ay,cx,cy,c); Koch(ex,ey,bx,by,c); Koch(cx,cy,dx,dy,c); Koch(dx,dy,ex,ey,c); end end 執(zhí)行Koch(0,0,120,0,10),結(jié)果顯示如圖2。 3 分形樹 一條線段,以線段的終點為起點向兩邊分出一定的角度、長度的兩條線段,分出的線段的終點再做相同處理,以此類推,生成一種分形樹。具體代碼如下。 function fractaltree(n,ax,ay,len,angle)
bx=ax+len*cos(angle);
by=ay+len*sin(angle);
plot([ax,bx],[ay,by]);
angle1=pi/6;
angle2=pi/9;
hold on
if n==0
return;
end
fractaltree(n-1,bx,by,0.6*len,angle+angle1);
fractaltree(n-1,bx,by,0.7*len,angle-angle2);
end
執(zhí)行fractaltree(12,150,20,50,pi/2),結(jié)果顯示如圖3。
4 結(jié)語
分形形態(tài)是自然界普遍存在的,研究分形,是探討自然界的復(fù)雜事物的客觀規(guī)律及其內(nèi)在聯(lián)系的需要。分形提供了描述自然形態(tài)的幾何學(xué)方法,使得在計算機上可以從少量數(shù)據(jù)出發(fā),對復(fù)雜的自然景物進行逼真的模擬,并啟發(fā)人們利用分形技術(shù)對信息做大幅度的數(shù)據(jù)壓縮。它以其獨特的手段來解決整體與部分的關(guān)系問題,利用空間結(jié)構(gòu)的對稱性和自相似性,采用各種模擬真實圖形的模型,使整個生成的景物呈現(xiàn)出細節(jié)的無窮回歸的性質(zhì),豐富多彩,具有奇妙的藝術(shù)魅力。
參考文獻
[1] 姜健飛.數(shù)值分析及其MATLAB實驗[M].北京:清華大學(xué)出版社,2015.
[2] 史峰.MATLAB智能算法30個案例分析[M].北京:北京航空航天大學(xué)出版社,2015.
[3] 張樂平,黃非,閔波,等.基于MATLAB生物信息學(xué)工具箱構(gòu)建分子系統(tǒng)發(fā)生樹[J].醫(yī)學(xué)信息學(xué)雜志,2010,31(6):34-37.
[4] 張林泉.MATLAB在統(tǒng)計學(xué)實驗教學(xué)中的應(yīng)用[J].高師理科學(xué)刊,2011,31(1):84-87.
[5] 劉波,文忠.MATLAB信號處理[M].北京:電子工業(yè)出版社,2006.
[6] 張德豐.MATLAB小波分析[M].北京:機械工業(yè)出版社,2009.
[7] 劉瑩,胡敏,余桂英,等.分形理論及其應(yīng)用[J].江西科學(xué),2006,24(2):205-209.
[8] 孫霞,吳自勤,黃畵.分形原理及應(yīng)用[M].合肥:中國科學(xué)技術(shù)大學(xué)出版社,2003.
[9] 王達.幾類復(fù)系統(tǒng)分形的特性分析與控制[D].山東大學(xué),2016.