Lorenz系統作為第一個混沌模型,是混沌學發展史上的一個重要的里程碑,具有舉足輕重的地位。我看過很多本關於混沌方面的書,每一本都會有洛倫茲吸引子,並且幾乎每一本的封面上都會畫上洛倫茲的蝴蝶曲線。雖然我看了這么多書,卻始終沒明白,這洛倫茲的方程式怎么就跟天氣發生了關系。氣象學家洛倫茲在1963年論文中提出的它的公式以表示天氣模型。天氣系統如此復雜,用數百萬個變量來描述都不為過,但洛侖茲將其壓縮到了三個變量:x,y和z,所以這只是一個玩具模型。這個玩具模型對於他的論點來說,也許恰到好處。之前的天氣模型大多是線性的,沒有過多考慮各種因素之間的復雜關系,洛倫茲早認為這樣的模型無法描述多變的天氣。而他的模型,盡管只有三個隨着時間變化的變量,但變量之間卻有着非線性的聯系,能夠很好地詮釋了因素之間的相互影響。
就在這樣簡單的Lorenz模型之下,出現了混沌現象。而且這種現象似乎是普遍的,因為在三個變量取值的大部分可能性下,系統演變的軌跡都會漸漸趨近於同一個產生混沌的區域,就像磁鐵吸引着圖釘,混沌的行為成為了必然。這就是人們發現的第一個混沌吸引子:洛倫茲吸引子。它的形狀,就像一只蝴蝶;這大概也是洛倫茲將這種混沌的現象稱為“蝴蝶效應”的原因。一只南美洲蝴蝶的撲翼,在蝴蝶效應的放大下,也許引起德克薩斯州的一場颶風。天氣不可能准確預測,因為天氣是混沌的,微小的擾動在長遠看來是不可忽略的,而我們又無力去追蹤無數的擾動,只能一邊預計,一邊修正。
如果不明白上面的話也無所謂,反正這里研究的不是天氣、不是霧霾,我只是用洛倫茲吸引子生成漂亮的圖像。
這里使用自己定義語法的腳本代碼生成混沌圖像.相關軟件參見:YChaos生成混沌圖像.如果你對數學生成圖形圖像感興趣,歡迎加入QQ交流群: 367752815
先上腳本代碼:
1 [ScriptLines] 2 u=a*(y - x) 3 v=b*x - y - x*z 4 w=x*y - c*z 5 x=x+u*t 6 y=y+v*t 7 z=z+w*t 8 9 [Variables] 10 a=10.000000 11 b=28.000000 12 c=2.666667 13 t=0.001000 14 x=-10.000000 15 y=10.000000 16 z=25.000000
生成如下的圖像:

如果你了解洛倫茲的數學公式,你會發現它實際上是三維的,有XYZ三個維度。這里只是生成二維的圖像,所以這里需要將三維的數據投影到一個二維平面上。可以先想象一下夏天拍蚊子的情景,將空間中的蚊子拍死在二維的牆面上。如果是拍人呢,可以選擇前后拍,左右拍,最殘忍的應該是上下拍。記得小說《三體》中有一種很厲害的武器是張小紙條,它能夠將三維的世界拍成二維的,於是地球以及整個太陽系就這么被毀滅了。
上述腳本是使用默認的XOY面做為投影面,同樣也可以使用XOZ面,YOZ面。
YOZ
[ScriptLines] u=a*(j - i) v=b*i - j - i*k w=i*j - c*k i=i+u*t j=j+v*t k=k+w*t x=i y=j*cos(d) - k*sin(d) z=j*sin(d) + k*cos(d)

XOZ
[ScriptLines] u=a*(j - i) v=b*i - j - i*k w=i*j - c*k i=i+u*t j=j+v*t k=k+w*t x=i*cos(d) - k*sin(d) y=j z=i*sin(d) + k*cos(d)

將三維的物體投影到二維平面上,你可以將其按任意角度,任意平面去投影,下面的公式為將圖形以Z軸旋轉一定角度:
[ScriptLines] u=a*(j - i) v=b*i - j - i*k w=i*j - c*k i=i+u*t j=j+v*t k=k+w*t x=i*cos(d) - j*sin(d) y=i*sin(d) + j*cos(d) z=k

洛倫茲吸引子是沒有隨機性的,但我可以強行為其加上隨機性:
[ScriptLines] u=a*(y - x) v=b*x - y - x*z w=x*y - c*z x=x+u*t + rand2(-r,r) y=y+v*t + rand2(-r,r) z=z+w*t + rand2(-r,r)

說實話,這幾幅洛倫茲蝴蝶的圖像顏色看着有些難看。當時我只是隨意寫了個配色函數,感覺是慘綠慘綠的。下面將帖幾張漂亮點的蝴蝶圖像:








相關軟件介紹:
相關文章:
