分形與混沌

其實當我開始寫下這個標題的時候,腦子裏是「混沌」的。分形、混沌,兩個看似簡單的詞語卻包含太多即便是數學家沒法窺探的奧妙,這樣的兩個詞語,卻帶給我無限的思考。java

咱們知道現實生活中大部分都不是有序、穩定、肯定的,而是處於一種無序的、不穩定的、不平衡的隨機狀態。換句話說,咱們是不可能準確的預測生活中下一刻會發生什麼,就像咱們常說的「緣分」。在這樣的狀態中會存在無數的非線性的過程。儘管咱們生活在一個及其複雜的非線性系統中,可是在不少的研究中,咱們並不會直接研究非線性系統,而是抽象出來一個線性的系統。不少的經典物理學和一些經濟學的理論就是如此。那麼有沒有想過這樣的非線性系統也是有必定的規律可循的呢?固然這裏可能會很矛盾,非線性系統是無序,不肯定的,爲何又會有規律可循呢?非線性系統固然是由規律的,只是即便咱們知道了這個規律,咱們也沒法預測它長期的狀態。一個非線性系統的簡單例子,咱們都應該知道單擺,它就是一個很簡單的線性系統,它在何時到達什麼樣的位置是能夠準確肯定的。可是若是加一根線,下面在連上一個球,它就變成了雙擺了,也就是一個非線性系統的例子。編程

 

 

雙擺的軌跡集合很是漂亮,這個雙擺毫無疑問是有規律的,可是卻沒法肯定它下一次的擺動位置,這就是非線性系統。它其實能夠引伸出混沌。函數

混沌是指發生在一個肯定系統中的隨機的不規則運動,換句話說在一個能夠用數學或者是物理語言描述的肯定系統中,卻表現出了不會重複,不可預測的現象,這就是混沌。好比上面的雙擺的例子,它的運動是可使用物理公式來表達的,可是它的每次運動卻都會產生一種看似隨機的曲線,表現出混沌的性質。氣象學家洛倫茲是混沌的開創者之一,他在計算天氣模型的時候,由於一個偶然的事件(其實是「偷了個懶」,把六位小數,輸成了三位),結果發現本身的兩個計算結果相差愈來愈大。這也是混沌的現象。也就是說混沌是對初值敏感的,初始值的任何一丁點改變都會對結果產生巨大的影響。英國演化生物學家、遺傳學家瓦丁頓(Waddington)的胚胎髮育坡模型(Epigenetic Landscape)可以很生動的解釋這種現象,你們有心去能夠本身去查一查。混沌也形成了咱們熟知的幾個現象:長期的天氣註定沒法預測,一個很小的擾動都會產生巨大的誤差;蝴蝶效應;非線性現象等等。工具

其實混沌是一個頗有意思的東西,它能夠給你帶來不少意想不到的美麗。你能夠找到不少不一樣的迭代公式,這些公式迭代均可能產生混沌的效應,而後利用手中的編程工具就能畫出不同的美麗。就好比這個:this

代碼也很簡單:spa

package Heart;

import java.awt.Color;
import java.awt.Graphics;

import javax.swing.JFrame;

public class DrawHeart extends JFrame {

    public static void main(String[] args) {
        DrawHeart dh = new DrawHeart();
        dh.showUI();
    }

    // 初始化窗體界面
    public void showUI() {
        this.setTitle("Forver Heart");
        this.setSize(500, 500);
        this.getContentPane().setBackground(Color.BLACK);
        this.setDefaultCloseOperation(3);
        this.setLocationRelativeTo(null);
        this.setVisible(true);
    }

    public void paint(Graphics g) {
        super.paint(g);
                //迭代函數繪圖
        for (int i = 0; i <= 180; i++) 
            for (int j = 0; j <= 180; j++) {
                double r = Math.PI / 45 * i * (1 - Math.sin(Math.PI / 45 * j))
                        * 20;
                double x = r * Math.cos(Math.PI / 45 * j)
                        * Math.sin(Math.PI / 45 * i) + 300;
                double y = -r * Math.sin(Math.PI / 45 * j) + 200;
                Color c = Color.getHSBColor(i * j / 8100.0f, 0.9999f, 0.9999f);
                g.setColor(c);
                g.drawOval((int) x, (int) y, 1, 1);
                try {
                    Thread.sleep(10);
                } catch (Exception e) {
                }
            }
    }
}

這個曲線有一個很美麗的名字——永恆之心。顯然這個曲線表現出來了混沌的現象,它的公式是肯定,在不斷的迭代中改變了x和y的數值,這些數值又做爲了新的參數繼續迭代。在這樣的迭代中產生看起來很隨機的點,肯定性和隨機性的結合,構成了這樣一幅美妙的圖形。code

前面咱們說過,非線性系統其實也是有規律的,那麼咱們是否能夠採起一些手段,透過複雜,混亂和不規則的形態來探尋他們背後的規律呢,爲了解決這個問題分形理論應運而生。htm

分形最先是由Benoît B. Mandelbrot教授提出的,曼德爾布羅特也是分形學的專家之一。他有一個很經典的分形:曼德爾布羅特集合。blog

Mandelbrot集的妙處就在於若是你對它不斷的放大,不管放大到多少倍,它又會呈現出一種相似的結構。這就是分形的一個很重要特徵——自類似性,就是隨便選取一個地方,不斷的放大,放大以後呈現的又是原來的樣子。其實天然現象中不少的事物都是複雜而沒有規律的,好比雲朵,浪花,樹木,岩石。可是這些東西若是不斷的放大以後又會發現,他們自己呈現出強烈的自類似。一棵樹的結構其實和它的一根樹枝很相像,而後一片樹葉又和樹的結構很像,甚至葉脈的結構也和整棵樹同樣。他們自己就能夠當作是一種分形,天然界造成的分形。花菜是一種常見的東西,若是你用放大鏡不斷地去觀察,你就會發現花菜的每一部分也都和總體的結構十分類似。遊戲

再舉一例子——海岸線的長度。海岸線的長度到底有多長呢?有人可能會說那不是簡單,直接去量不就行了。確實也是這麼個道理,可是咱們要注意一下的是該用什麼樣的尺度去量呢?假如在一個大尺度下去測量好比航拍,這樣的尺度下不少海岸線的凸起是看不見的,整個海岸線會顯得比較光滑,好這樣測出一個長度。而後縮小一點尺度,讓人步行去量,那麼這時候,一些凸起就不能忽略了,而後由測出來一個長度。繼續縮小尺度,我讓一隻螞蟻去量,那麼測出來的長度確定要比前面的兩種都長。也就是說,海岸線其實也是一種分形,他放大後會出現自類似的特性,放大的倍數越大,那麼它就會越長,因此Mandelbrot教授提出了海岸線是無限長的理論。那麼這個真的能夠作到無限長嗎?來看另外一種分形:科赫曲線。

就像上圖同樣,在一段線段上取它中間的1/3而後作一個線段1/3長的等腰三角形,而後對新的線重複這個操做,就能獲得科赫曲線。那麼假設初始的線段長是1,一次迭代後它的長度就變成了4/3,再一次就變成了16/9;這樣無限的迭代下去,它的長度就變成了4/3的n次方,當n趨於無窮大的時候,它的長度也就是無限的。這就跟海岸線是一個道理,海岸線不斷縮小尺度的測量能夠當作一次迭代,迭代的結果就是又獲得一段相似結構的海岸線,而後再縮小尺度,又是一段如出一轍的東西,因此在必定的程度上說海岸線實際上是無限長的。

還有一種十分有意思的分形:混沌遊戲(下面的例子只是其中的一種,你徹底能夠本身定義不一樣的規則)。

 

假設平面上有4個點,任取一點,好比選D點,而後拋骰子,若是是1,2就在AD的終點畫一個點D1,若是3,4就在BD中點畫,若是5,6就在CD中點畫,而後迭代必定的次數就會出現這樣的圖形:

混沌遊戲有一個特色,就是這是肯定與隨機的結合。規則是肯定,取中點畫點,可是畫的點倒是隨機的,而後就出現了這樣美妙的圖像。而後你能夠改規則,就能夠發現不少奇妙的圖形。

 

天地渾沌如雞子,盤古生其中。萬八千歲,天地開闢,陽清爲天,陰濁爲地。

——《三五曆紀

誰又知道造物主是否是在玩混沌遊戲的時候無心間造就了整個世界呢?又或者說天然就只有一條很簡單的規則,所謂「道生一,一輩子二,二生三,三生萬物」,何妨理解成在規則的一次次迭代中產生了混沌,混沌造就了萬物。混沌和分形的思想給了咱們另外一種有別傳統因果律的思惟方式。給那種所謂的只要怎麼怎麼樣,就會怎麼怎麼樣的論斷產生了巨大的衝擊。誠然只要後面的規則是肯定,可是誰又知道會不會產生混沌呢?歷史的大潮濤濤向前,咱們都不過是滾滾的浪花中的一滴水。咱們常說歷史有所謂的大勢所趨,能否理解爲「大勢」即是歷史系統中一個肯定的「規則」,而每一個人在這個系統中的做用都微不足道。咱們也常說「時勢造英雄」,或者說「英雄造時勢」,又能否認爲這是一些特殊值,而後經過反饋機制,在歷史大潮的迭代中產生了混沌效應,從而推進了歷史的浪潮朝着既定的方向發展。看似偶然,實則必然。隨機性和肯定性的結合,世界也許就是由於不肯定而更顯的美麗吧。

相關文章
相關標籤/搜索