|
http://www./blog/archives/4570 很早以前,我簡(jiǎn)單介紹過(guò) Julia 集和 Mandelbrot 集,文章在此。這可以說(shuō)是數(shù)學(xué)中最神秘、最令人敬畏的研究對(duì)象之一。不過(guò),那時(shí)我對(duì)這個(gè)話題了解還不太深。今天見(jiàn)到這個(gè)網(wǎng)頁(yè),讓我對(duì) Julia 集和 Mandelbrot 集有了更深的了解。我查閱了一些其他的資料,然后寫(xiě)下這篇長(zhǎng)文,與大家一同分享。繼續(xù)閱讀以前,建議先看看我原來(lái)那篇文章(很短),那里面有很多漂亮的 Julia 集和 Mandelbrot 集的圖片,這篇文章就不再展示了。
如果我們用 |z| 來(lái)表示復(fù)數(shù) z 的模,那么上面這個(gè)圖也就是函數(shù) f(z) = |z| 的“等高線地圖”。復(fù)數(shù)的模有一個(gè)重要的性質(zhì),大家可以自行驗(yàn)證:乘積的模等于模的乘積,即 |a·b| = |a|·|b| ?,F(xiàn)在,我們對(duì)復(fù)平面上的所有點(diǎn)都進(jìn)行平方,畫(huà)出 f(z) = |z2| 的等高線地圖: 可以看到,這一操作讓模的變化更劇烈了,等高線變得更加密集了。外面浩瀚的藍(lán)色空間,就對(duì)應(yīng)著那些模已經(jīng)相當(dāng)大了的復(fù)數(shù)。 有趣的事情開(kāi)始了。如果對(duì)上圖中的每個(gè)點(diǎn)再加上某個(gè)數(shù),比如 0.3 ,那么整個(gè)圖會(huì)怎樣變化呢?容易想到,對(duì)于模相同的復(fù)數(shù)來(lái)說(shuō),給實(shí)數(shù)部分加上 0.3 ,這對(duì)實(shí)數(shù)部分本來(lái)就較大的數(shù)影響會(huì)更大一些。因此,上圖將會(huì)變得更扁,整個(gè)圖形會(huì)在水平方向上壓縮。這也就是 f(z) = |z2 + 0.3| 的等高線地形圖: 接下來(lái),我們?cè)賹?duì)所得的圖形進(jìn)行平方,繼續(xù)加劇模的變化: 然后,再給每個(gè)點(diǎn)的實(shí)數(shù)部分加上 0.3 ,于是得到 f(z) = |(z2 + 0.3)2 + 0.3| 的圖像: 再平方: 再加上 0.3 ,此時(shí)圖形已經(jīng)開(kāi)始變得有意思起來(lái)了: 再平方一次: 再加上 0.3 : 這也就是函數(shù) f(z) = |(((z2 + 0.3)2 + 0.3)2 + 0.3)2 + 0.3| 的圖像,它反映了對(duì)復(fù)平面上的各個(gè)復(fù)數(shù)“平方再加 0.3 ”迭代 4 次后模的大小情況。隨著迭代次數(shù)的增加,整個(gè)圖形將會(huì)變得越來(lái)越復(fù)雜。下圖顯示的就是迭代 12 次后的結(jié)果,可以看見(jiàn)整個(gè)圖形已經(jīng)具有了分形圖形的復(fù)雜程度(圖形的“黑邊”其實(shí)是密集的等高線): 上圖中,大部分區(qū)域內(nèi)的數(shù)都變得越來(lái)越大,直達(dá)無(wú)窮。而原點(diǎn)附近這個(gè)四葉草形區(qū)域內(nèi)的數(shù),至少目前還不算太大。這給出了上圖的另外一種解讀方法:隨著迭代次數(shù)的增加,復(fù)平面上各個(gè)點(diǎn)的模的發(fā)散速度。有沒(méi)有什么復(fù)數(shù),隨著迭代次數(shù)的增加,最終并不會(huì)趨于無(wú)窮呢?當(dāng)然有。比如方程 z2 + 0.3 = z 的兩個(gè)復(fù)數(shù)解,它是這個(gè)迭代下的不動(dòng)點(diǎn),每次迭代后都維持原來(lái)的值,自然不會(huì)趨于無(wú)窮。我們把所有這種迭代后不會(huì)趨于無(wú)窮的點(diǎn)所組成的集合就叫做 Julia 集,它是以法國(guó)數(shù)學(xué)家 Gaston Julia 命名的。只可惜, z → z2 + 0.3 的 Julia 集是由一些孤點(diǎn)組成的,我們無(wú)法把它畫(huà)出來(lái)。上圖中的四葉草形區(qū)域也只是那些發(fā)散比較慢的點(diǎn),但再多迭代幾次,最終也會(huì)趨于無(wú)窮。 常數(shù) c 還可以是復(fù)數(shù)。下圖則是迭代過(guò)程 z → z2 + (0.2 + 0.5 i) 迭代 12 次的結(jié)果,其中也有一些模非常小的點(diǎn),它們不會(huì)發(fā)散,構(gòu)成了連通的 Julia 集: 難以置信的是,每取一個(gè)不同的 c ,我們都能得到一個(gè)不同的 Julia 集,這些 Julia 集大小不同,形狀各異,可謂是百花齊放,各有各的美麗。在我的那篇舊文章里,可以找到更多的 Julia 集圖片。 隨著常數(shù) c 的變化,對(duì)應(yīng)的 Julia 集也會(huì)連續(xù)地發(fā)生變化。我們比較關(guān)心的一個(gè)問(wèn)題就是,哪些 c 值會(huì)讓對(duì)應(yīng)的 Julia 集形成一個(gè)連通的區(qū)域?為了回答這個(gè)問(wèn)題,讓我們來(lái)看看 Julia 集的另外一種計(jì)算方法。 在研究 Julia 集時(shí),我們通常假設(shè) c 的??偸切∮?2 的。注意到,對(duì)任意一個(gè)滿足 |z| > 2 的復(fù)數(shù) z ,都有 |z2| = |z|2 > 2·|z| ,也就是說(shuō),對(duì)這樣的 z 進(jìn)行平方后,它的模至少都會(huì)變成原來(lái)的兩倍。即使常數(shù) c 的方向和 z2 的方向完全相反,也不足以把 z2 的模抵消到原來(lái)的水平。因此,在迭代運(yùn)算過(guò)程中,一旦某一步結(jié)果的模大于 2 了,可以斷定它必將發(fā)散到無(wú)窮。 因此,我們有了 Julia 集合的另一個(gè)定義。 z → z2 + c 對(duì)應(yīng)的 Julia 集,就是無(wú)限迭代下去后模仍然不超過(guò) 2 的點(diǎn)。于是,我們立即有了 Julia 集的另一種生成方法。我們可以從復(fù)平面上模不超過(guò) 2 的所有點(diǎn),也就是以原點(diǎn)為中心半徑為 2 的圓盤(pán)出發(fā),看看哪些點(diǎn)的平方加 c 后會(huì)落在這個(gè)圓盤(pán)內(nèi),進(jìn)而考察哪些點(diǎn)平方加 c 再平方加 c 后將會(huì)落在這個(gè)圓盤(pán)內(nèi),如此反向迭代,不斷找出原象,反推出符合要求的點(diǎn)集。我們先用 c = -1 來(lái)試驗(yàn)一下。 這就是復(fù)平面上模小于 2 的所有復(fù)數(shù)所組成的點(diǎn)集,即一個(gè)半徑為 2 的圓盤(pán): 我們把上圖右移一個(gè)單位,得到所有加上 -1 后模小于 2 的點(diǎn): 我們?cè)僬页錾蠄D區(qū)域中的每個(gè)點(diǎn)的平方根(別忘了,每個(gè)數(shù)都有兩個(gè)平方根,因此每個(gè)點(diǎn)都有兩個(gè)原象),于是得到所有平方再加 -1 后模仍然小于 2 的點(diǎn)。由于開(kāi)平方是一個(gè)連續(xù)函數(shù),而每個(gè)點(diǎn)都有一正一負(fù)兩個(gè)平方根,因此整個(gè)圖像本該變?yōu)閮蓚€(gè)關(guān)于原點(diǎn)對(duì)稱(chēng)的連通區(qū)域。不過(guò),這兩個(gè)連通區(qū)域有所重合,它們將會(huì)并在一起成為一整塊連通區(qū)域。為了看出這一點(diǎn),只需要注意到,0 是一個(gè)非常特殊的數(shù),它的原象只有一個(gè),就是它本身。由于上圖中的區(qū)域內(nèi)包含零點(diǎn),因此它的兩組原象也都包含原點(diǎn),這就表明兩個(gè)區(qū)域是有重合的,結(jié)果就像下圖這樣: 再將上圖右移一個(gè)單位: 再作出平方根: 再次右移: 再次找平方根,由于零點(diǎn)始終沒(méi)有跑出去,因此圖像始終是一整塊連通區(qū)域: 再次右移: 再次找平方根,圖像仍然連通: 可以看到,此時(shí)得到的點(diǎn)集已經(jīng)非常接近之前給出的 z → z2 - 1 的 Julia 集了。下圖則是反推 12 次后的結(jié)果,它基本上可以看作是 z → z2 - 1 的 Julia 集了: 讓我們?cè)賮?lái)看一個(gè)無(wú)法構(gòu)成連通區(qū)域的 Julia 集的例子。取 c = - 1 - 0.9 i ,讓我們來(lái)看看逆推的過(guò)程。還是先畫(huà)出半徑為 2 的圓盤(pán): 現(xiàn)在,找出所有加上 - 1 - 0.9 i 后會(huì)落進(jìn)該圓盤(pán)的點(diǎn),實(shí)際上相當(dāng)于把圓盤(pán)右移 1 個(gè)單位,再上移 0.9 個(gè)單位: 尋找上圖中的點(diǎn)的平方根: 再平移: 再找平方根: 再次平移: 這里發(fā)生了一個(gè)非常值得注意的現(xiàn)象:原點(diǎn)現(xiàn)在跑到了灰色區(qū)域的外邊。也就是說(shuō),這個(gè)點(diǎn)在若干次迭代之后不能落入那個(gè)半徑為 2 的圓盤(pán)里,表明這個(gè)點(diǎn)的模最終將會(huì)發(fā)散。換句話說(shuō), 0 不屬于 c = - 1 - 0.9 i 時(shí)的 Julia 集。 由于 0 的原象還是 0 ,因此當(dāng)我們考察哪些點(diǎn)的平方會(huì)落入上圖中的區(qū)域時(shí),0 繼續(xù)排除在外。此時(shí)注意,灰色區(qū)域內(nèi)不包含原點(diǎn),說(shuō)明這個(gè)圖形不見(jiàn)得仍然連通了。事實(shí)上,我們可以證明,一個(gè)不包含原點(diǎn)的區(qū)域,開(kāi)平方后必然會(huì)得到兩塊不連通的區(qū)域。為了證明這一點(diǎn),我們?cè)谏蠄D中畫(huà)一條過(guò)原點(diǎn)的回路,把整個(gè)圖形圍起來(lái)。對(duì)這個(gè)回路上的所有點(diǎn)開(kāi)平方后,將會(huì)得到一個(gè)過(guò)原點(diǎn)的、關(guān)于原點(diǎn)對(duì)稱(chēng)的封閉曲線。容易想到,這條閉曲線一定是一個(gè) 8 字形。而上圖灰色區(qū)域的兩個(gè)原象,則只能分居在 8 字形的兩個(gè)圓圈中: 我們把上圖再次平移: 再取平方根。注意到,上圖中的兩塊區(qū)域都不含零點(diǎn),因此由前面的結(jié)論,每個(gè)區(qū)域都將會(huì)再分成兩個(gè)更小的連通區(qū)域,從而使得整個(gè)圖中出現(xiàn)四個(gè)連通塊: 如此逆推下去,連通塊的數(shù)量將會(huì)越來(lái)越多,它們的總面積則會(huì)越來(lái)越小,最后就只剩下一些孤立的點(diǎn)了,就如同我們最早所說(shuō)的 z → z2 + 0.3 的 Julia 集一樣。只不過(guò),要想看出 z → z2 + 0.3 所對(duì)應(yīng)的 Julia 集并不連通,我們需要的逆推次數(shù)更多一些。下圖中可以看到,直到第 12 次逆推,零點(diǎn)仍然還在候選區(qū)域中;到了第 13 次逆推,才把零點(diǎn)排除在 Julia 集之外。此后,圖形很快便收縮為了一堆離散的點(diǎn)。 神奇的是,這本身竟然又是一個(gè)漂亮的分形圖形!數(shù)學(xué)家 Beno?t B. Mandelbrot 是最早對(duì)其進(jìn)行系統(tǒng)研究的人之一,因此我們就把所有不會(huì)讓零點(diǎn)發(fā)散的復(fù)數(shù) c 組成的集合叫做 Mandelbrot 集。更多 Mandelbrot 集細(xì)節(jié)的驚人圖片,也可以參見(jiàn)那篇老文章。整個(gè) Mandelbrot 集可以包含于一個(gè)以原點(diǎn)為圓心,半徑為 2 的圓里。這也就是我們?cè)诳紤] Julia 集時(shí)往往假設(shè)常數(shù) c 的模小于 2 的原因。 生成 Mandelbrot 集的算法和生成 Julia 集的算法完全一樣,只是這一次我們固定的是初始值,而把 c 當(dāng)作了變量。Mandelbrot 集內(nèi)的每一個(gè)點(diǎn)就對(duì)應(yīng)了一個(gè)連通的 Julia 集,Mandelbrot 集合外的點(diǎn)則對(duì)應(yīng)了不連通的 Julia 集,并且很容易想到,越靠近 Mandelbrot 集的邊界,對(duì)應(yīng)的 Julia 集形狀就越詭異。因此, Mandelbrot 集還有另外一種解讀方法:它就是 Julia 集的縮略圖!完全沒(méi)有比喻的意思,它真的就是 Julia 集的縮略圖: 因此, Mandelbrot 集可以說(shuō)是所有無(wú)窮多個(gè) Julia 集的一個(gè)高度總結(jié)。究其原因,還是因?yàn)?Julia 集的零點(diǎn)太重要了。Julia 集的零點(diǎn)的迭代結(jié)果,很大程度上決定了 Julia 集的形狀,就好像這個(gè)零點(diǎn)“知道” Julia 集是什么樣子似的。而 Mandelbrot 集則把所有的零點(diǎn)信息都匯聚在了一起,自然高度歸納出了所有的 Julia 集。 因此,我們相當(dāng)于有了 Mandelbrot 集的一個(gè)四維擴(kuò)展,從這個(gè)四維圖形中,我們可以切出很多二維的或者三維的切片,得到更多驚人而漂亮的圖形。Mandelbrot 集還有另外一種高維擴(kuò)展,即用四元數(shù) a + b i + c j + d k 來(lái)代替復(fù)數(shù),從而得到另一種四維 Mandelbrot 集??上В@些擴(kuò)展都是四維的,我們只能從它們的切片中獲取三維圖形。要想欣賞真正的三維版 Mandelbrot 集,我們還得想想別的方法。數(shù)學(xué)家們創(chuàng)造了很多漂亮的三維版 Mandelbrot 集,不過(guò)它們的定義有些生硬,并不自然。另外還有一個(gè)叫做 Multibrot 集的東西,它就是把 Mandelbrot 集產(chǎn)生規(guī)則中的 z2 一般化,用 zn 代替。隨著 n 的連續(xù)變化, Multibrot 集也會(huì)連續(xù)地變化。如果把不同 n 所對(duì)應(yīng)的 Multibrot 集重疊在一起,我們就會(huì)得到一個(gè)三維圖形(如下圖, n 從 1 取到 5 )。這也勉強(qiáng)算得上是 Mandelbrot 的三維擴(kuò)展吧。 Gaston Julia 和 Beno?t B. Mandelbrot 兩人的研究并未就此結(jié)束,這一系列研究直接導(dǎo)致了復(fù)動(dòng)力學(xué)(complex dynamics)這一新學(xué)科的誕生。如果大家對(duì)這個(gè)感興趣的話,不妨從 Wikipedia 相關(guān)頁(yè)面的 references 出發(fā),深入閱讀下去。 Posted in Brain Storm
Tags: 藝術(shù), 虛數(shù), 分形 Trackback: http://www./blog/archives/4570/trackback 我猜您可能還喜歡: |
|
|
來(lái)自: AMI66 > 《mathematica》