當前位置:
首頁 > 知識 > 自繪Mandelbrot集合(一)

自繪Mandelbrot集合(一)

本文介紹如何用計算機程序繪出與下面圖像類似的分形圖案。程序實例將以Java語言和內嵌JavaScript程序的HTML文件兩種形式給出,最終的程序量不超過150行,移植到其他常用的計算機語言上應當也是容易的。本文也適當介紹必要的關於Mandelbrot分形的知識。

自繪Mandelbrot集合(一)


自繪Mandelbrot集合(一)


自繪Mandelbrot集合(一)



-0.743030 + 0.126433i @ 0.016110 /0.75


一、Mandelbrot集合


Mandelbrot集合大概是最有名的分形了。


分形是一種具有自相似性質的空間點集,也就是說,在任何一個比它自身小的空間尺度上,都能找到它的某些局部,和它本身看起來是差不多的。以Mandelbrot集合為例,它是複平面上的一個點集,整體看起來是這個樣子(黑色部分)

自繪Mandelbrot集合(一)



-0.7 + 0.0i @ 3.0769 / 0.75


我們可以看到,它本身長得象個大蟲子,它的邊緣上又附著著無數個大大小小的蟲子頭部。本文開始的第二幅圖中,有一個和Mandelbrot集合本身長得很象的蟲子,但那已經是上圖中一個叫「海馬谷」的地方放大二十萬倍後的圖像了。

Mandelbrot集合的圖像看起來很複雜,但它的定義卻極其簡單。


隨便取一個複數c,讓我們來考慮下面的遞歸定義得到的無窮的複數列:


z0 = 0;


zn = zn-12 + c;


如果這個數列各項的絕對值(或者叫模,也即一個複數在複平面上距0點的距離)一直局限於一個有限的區域(事實上可以證明,這個區域只要取和0點距離小於2這個圓形區域即可),那麼c就屬於Mandelbrot集合;反之,如果這個數列中的項會跑出任意指定的有限區域去(實際上只需跑出上述圓形區域),則c不屬於此集合。


如果取c=-1,我們有


z0=0, z1=-1, z2=0, z3=-1, z4=0 ……


顯然這個數列以後會在0和-1間跳來跳去,所以-1屬於Mandelbrot集合。事實上,-1就是上圖中蟲子頭部,也就是左邊那個大圓的圓心。


如果取c=i,我們有


z0=0, z1=i, z2=-1+i, z3=-i, z4=-1+i, z5=-i ……

顯然這個數列以後會在-i和-1+i間跳來跳去,所以i屬於Mandelbrot集合。


而取c=1/2-1/2i,我們有


z0=0, z1=1/2-1/2i, z2=1/2-i, z3=-1/4-3/2i, z4=-27/16+1/4i, z5=841/256-43/32i, z6=621713/65536-38211/4096i ……


看樣子這個數列各項的實部和虛部的絕對值都越來越大,離0點越來越遠。所以1/2-1/2i不屬於Mandelbrot集合。


數學家們對Mandelbrot集合的興趣始於一門從二十世紀初發展起來的名為復動力系統的數學分支。法國數學家Adrien Douady等人在80年代對它進行了深入的研究,並以分形之父,美國數學家Beno?t Mandelbrot的名字為之命名。


二、圖像


Mandelbrot集合的圖像因它洛可可式繁複捲曲華麗的風格而受到大眾的欣賞和讚歎,與其他分形圖案一起,是許多藝術家和設計師的靈感來源。當我在屏幕上畫出本文開始的第一幅圖像時,太座在旁邊看見了就說:「如果印在絲巾上應該很漂亮。」


關於Mandelbrot集合的圖像,最早公開發表大概是在1978年Robert Brooks和Peter Matelski的一篇論文中。Mandelbrot本人則是在1980年3月在其任職的IBM Thomas J. Watson研究中心裡第一次一睹其真容。

自繪Mandelbrot集合(一)


Brooks和Matelski論文中的Mandelbrot集合圖像(毫無疑問,不怎麼吸引人)


而大眾對Mandelbrot集合的興趣,很大程度上是由《科學美國人》1985年八月號Alexander Dewdney的專欄文章引起的。筆者也是在1980年代末看到此期《科學美國人》,被封面和文中的Mandelbrot集合圖像吸引得目眩神迷。這篇文章現在可以在《自然》雜誌網站上免費下載,鏈接請參見參考文獻。

自繪Mandelbrot集合(一)



科學美國人1985年八月號封面


順便說一句,《科學美國人》的這篇文章里f圖在整個Mandelbrot集合圖像中的位置標記是錯誤的。它的實際位置應該在下圖紅色箭頭所標記的位置,而非綠色箭頭所指的標為f的白色方框處。筆者查找了文中那幾個圖像的位置,但無法在指定位置發現和f圖相同的區域,花了約半小時才意識到這個錯誤,故特此記之。

自繪Mandelbrot集合(一)



《科學美國人》中的標記錯誤


當然,我們看到的Mandelbrot集合的華美圖案,是和強大的計算能力密切相關的。從今天的標準來看,本節中所說的這些圖像顯然有些粗糙了;而本文的目標就是告訴大家如何自己動手,畫出更漂亮的Mandelbrot集合圖像來。正是由於今天個人電腦計算能力的強大,才有可能讓我們在家中就能繪出從前只有在世界級研究中心裡才能見到的絢麗圖案。

自繪Mandelbrot集合(一)



(待續)


參考文獻:


[1] Robert Brooks and J. Peter Matelski, The dynamics of 2-generator subgroups of PSL2(C),Annals of Math. Studies, Princeton, no.97, pp. 65–72 (1981).


[2] Alexander Dewdney, A computer microscope zooms in for a close look at the most complicated object in mathematics.Scientific American, no.253, pp.16–24 (1985) 下載地址:http://www.nature.com/scientificamerican/journal/v253/n2/pdf/scientificamerican0885-16.pdf


[3] 維基百科Mandelbrot set條目https://en.wikipedia.org/wiki/Mandelbrot_set


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 科學公園 的精彩文章:

菜市場的半壁江山屬於芸薹
我們是科普公眾號「科學公園」
愛因斯坦有宗教信仰嗎?
竊蛋龍:被冤枉70年的好爸媽

TAG:科學公園 |

您可能感興趣

自繪Mandelbrot集合(三)
自繪Mandelbrot集合(四)
自繪Mandelbrot集合(二)
自繪Mandelbrot集合(六)
自繪Mandelbrot集合(五)
自繪Mandelbrot集合(七)
C 集合(Collection)
Java集合-LinkedList
Java集合——LinkedList
Java集合-ArrayList
前端數據存儲方案集合(cookie localStorage等)以及詳解(一)
Java集合——ArrayList
WidgetLayout:一組繼承於 ViewGroup 的自定義容器集合
Hacking Tools搜羅大集合
Java集合-HashSet
最佳cosplay鑒賞!PAX South遊戲展Coser大集合
《Fate/Apocrypha》第二集,黑方陣營英靈大集合
傳奇 Logo 大集合,Nike Presto X 「LEGACY」 定製版
見色起意!Nike Free RN Flyknit跑鞋大集合