【摘 要】大自然中的任何物體都有形態(tài),而且多姿多樣,法國數(shù)學(xué)家曼德爾布羅特提出的分形概念就是針對各種各樣的不規(guī)則圖形。在計(jì)算機(jī)中,只要給你一個點(diǎn),你就能利用迭代和分形畫出整個世界。謝爾賓斯基三角形是分型與迭代的經(jīng)典例子。
【關(guān)鍵字】JAVA 分形 迭代 謝爾賓斯基三角形
引言:
在大自然中,任何物體都有自己的形態(tài),而且形態(tài)各式各樣。隨處可見的車子、房子都有它們固定的形態(tài),而像樹木石頭就有各種各有不同的非固定形態(tài)。如果把世界抽象成一個平面,那么大自然中的物體就像這個平面上的一個個美麗的幾何圖形。
那么這個大自然的幾何畫軸要怎么描述呢,我們在欣賞著美妙的大自然幾何圖形的同時也遇到了這樣的難題。于是在二十世紀(jì)七十年代的時候,美籍法國數(shù)學(xué)家曼德爾布羅特提出了分形的概念,同時也形成了一門新的學(xué)科——分形幾何學(xué)。美國物理學(xué)家惠勒曾經(jīng)說過:“誰不知道熵概念就不能被認(rèn)為是科學(xué)上的文化人,將來誰不知道分形概念,也不能稱為有知識。”可見分形早就被認(rèn)為會成為應(yīng)用極廣泛的學(xué)科,而事實(shí)也證明了這一點(diǎn)。
正文:
在現(xiàn)代科學(xué)技術(shù)高速發(fā)展的現(xiàn)狀下,各種各樣的編程語言也隨之興起,比如說最近才發(fā)布的SWIFT,又掀起了IOS開發(fā)愛好者的興趣。而JAVA是1995年5月SUN公司推出的一種面向?qū)ο蟮某绦蛟O(shè)計(jì)語言。由于它的跨平臺性,自推出起,JAVA語言就受到廣大開發(fā)者的關(guān)注和熱愛。
古希臘哲學(xué)家阿基米德曾經(jīng)說過這樣一句話:“給我一個支點(diǎn),我就能撬動地球?!庇?jì)算機(jī)世界像是現(xiàn)實(shí)世界外的另一個世界。所以,在計(jì)算機(jī)中,只要給我們一個點(diǎn),我們就能畫出整個世界?,F(xiàn)在以JAVA語言為例來談?wù)労唵蔚姆中魏偷?/p>
分形這門學(xué)科主要研究對象就是不規(guī)則幾何形態(tài),所以與大自然有著密切的關(guān)系。分形與JAVA有什么關(guān)系呢。JAVA是一種程序設(shè)計(jì)語言,而掌握了一種程序設(shè)計(jì)語言,就能隨心所欲的讓計(jì)算機(jī)受自己操縱,而分形這門學(xué)科也是讓各種不同的圖形隨心所欲的受自己操縱。至于迭代,有點(diǎn)類似于遞歸,但是又跟遞歸有很大的區(qū)別。遞歸通俗的來講就是自己調(diào)用自己,迭代從這個層面上來講,就是A不斷地調(diào)用B。迭代是重復(fù)地利用原值與即將的值之間某種特定的關(guān)系來不斷地得到新的值。
分型與迭代體現(xiàn)了科學(xué)與藝術(shù)的完美結(jié)合。接下來就結(jié)合JAVA程序設(shè)計(jì)語言來談?wù)劮中团c迭代。
提起分型與迭代,就不得不得說說幾個著名的分形圖,例如謝爾賓斯基三角形、科赫曲線,畢達(dá)哥拉斯樹等等?,F(xiàn)在以謝爾賓斯基三角形為例來說說用java如何實(shí)現(xiàn)。我們首先來看看它是如何構(gòu)成的。首先需要一個實(shí)心的等邊三角形,然后取三條邊的中點(diǎn),用直線連接,這樣就得到了4個三角形,然后將中間的三角形去掉,對其他三個三角形進(jìn)行重復(fù)以上步驟。
謝爾賓斯基三角形如何用計(jì)算機(jī)實(shí)現(xiàn)呢。以JAVA語言為例,用JAVA的GRAPHICS畫布來畫出這美麗的圖形。謝爾賓斯基三角算是比較簡單的分形圖形,很有規(guī)律。所以首先要做的就是找出規(guī)律,并把這些規(guī)律抽象成數(shù)學(xué)公式,以方便迭代來完成工作。
我們來看一下下面這一段很簡單的代碼。
其中x1,y1,x2,y2,x3,y3是三角形三個點(diǎn)的位置,count是迭代次數(shù)。①②是取當(dāng)前三角形三條邊的中點(diǎn),③④⑤是畫出三個三角形,⑥⑦⑧是進(jìn)行迭代。從以上看,迭代似乎與遞歸差不多,但是其實(shí)迭代與遞歸有很大的區(qū)別。遞歸占用內(nèi)存,而且遞歸太深容易造成棧溢出。迭代中并不一定會有遞歸,所以能不用遞歸盡量不要用遞歸。這里的代碼是用了遞歸來實(shí)現(xiàn)了迭代。在維基百科上還記錄了可以由正方形或者其他形狀開始,進(jìn)行類似的方法進(jìn)行構(gòu)造,則經(jīng)過多次迭代之后,都可以得到與謝爾賓斯基三角形很像的幾何形狀。其中還記錄了根據(jù)L-系統(tǒng)展現(xiàn)了曲線如何逼近謝爾賓斯基三角形。(L-系統(tǒng),是匈牙利生物學(xué)家Aristid LinderMayer在二十世紀(jì)七十年代提出的。L-系統(tǒng)的本質(zhì)是一個重寫系統(tǒng),通過對植物對象生長過程的經(jīng)驗(yàn)式概括和抽象,初始狀態(tài)與描述規(guī)則,進(jìn)行有限次迭代,生成字符發(fā)展序列以表現(xiàn)植物的拓?fù)浣Y(jié)構(gòu),并對產(chǎn)生的字符串進(jìn)行幾何解釋,就能生成非常復(fù)雜的分形圖形。)
分形與迭代不僅是科學(xué)與藝術(shù)的結(jié)合,它們在各個領(lǐng)域都有很廣闊的應(yīng)用,比如說生物中細(xì)胞的生長、數(shù)學(xué)中的各種系統(tǒng)等,所以對分形與迭代的研究對各個領(lǐng)域都有非凡的意義。
參考資料:
[1]王小銘;分形圖案的構(gòu)圖藝術(shù)及其計(jì)算機(jī)實(shí)現(xiàn)[J];計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報;2001年01期
[2]姜志強(qiáng);分形理論應(yīng)用研究若干問題及現(xiàn)狀與前景分析[J];吉林大學(xué)學(xué)報(信息科學(xué)版);2004年01期
[3]董遠(yuǎn),胡光銳;分形理論及其應(yīng)用[J];數(shù)據(jù)采集與處理;1997年03期
[4]邢麗君;論分形理論的應(yīng)用和研究方向[J];松遼學(xué)刊(自然科學(xué)版);2002年01期
[5]楊松林;迭代法中的分形[J];華東船舶工業(yè)學(xué)院學(xué)報;1999年02期