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