晏志武
(臨滄市臨翔區(qū)第一中學(xué) 云南 臨滄 677000)
愛德華·洛倫茲在20世紀(jì)60年代根據(jù)流體力學(xué)中的納維葉·斯托克斯方程、熱傳導(dǎo)方程和連續(xù)性方程得出了一組氣象學(xué)微分方程.這是一組毫不起眼的方程,但洛倫茲所采用的電腦數(shù)值計(jì)算和繪制相圖的方法卻影響深遠(yuǎn).這組方程后來被命名為洛倫茲吸引子,因其中的一張典型相圖酷似蝴蝶又被稱為“洛倫茲的蝴蝶”.洛倫茲以此開創(chuàng)了計(jì)算機(jī)研究復(fù)雜非線性問題的先河.
現(xiàn)在普遍使用的數(shù)學(xué)運(yùn)算軟件是Matlab或Mathematica ,二者都要求具備比較好的數(shù)學(xué)基礎(chǔ)和編程能力.筆者設(shè)想使用Flash動畫軟件實(shí)現(xiàn)上述方程組的計(jì)算和繪圖,但Flash處理不了微分方程,因此,要先將微分方程組轉(zhuǎn)化為下列差分方程組
Δx=-σ(x-y)Δt
Δy=(rx-y-xz)Δt
Δz=(-bz+xy)Δt
我們知道,當(dāng)變量Δt→0時,差分就變成微分了.實(shí)際計(jì)算時只要Δt足夠小即可取得誤差符合要求的結(jié)果.
程序共有2個圖層、3幀.
(1)第1圖層第1幀放置1個斜二側(cè)作圖實(shí)例itnpoint(這其實(shí)就是一個大小合適的黑色圓點(diǎn)元件分身),1個變量名為r的輸入文本框和1個控制程序運(yùn)行或暫停的按鈕,第2,第3幀均為普通幀.
(2)第2圖層為代碼層
第1幀(關(guān)鍵幀)設(shè)定初值
σ=9;
b=3;
if(_root.r==undefined){r=27};// r的默認(rèn)值為27,可通過第1圖層的輸入文本框改設(shè)為其他值.
else{r=r}
x=1;
y=0;
z=0;
Δt=0.005;//Δt足夠小時,差分方程的運(yùn)算結(jié)果才能充分地近似于微分方程.
第2幀(關(guān)鍵幀)迭代運(yùn)算和繪圖:
hx.moveTo(t, 90+x); // 以下3行設(shè)置分量圖繪圖實(shí)例hx,hy,hz的初始位置,t是時間值.
hy.moveTo(t, 170+y);
hz.moveTo(t, 250+z);
Δx=-9*(x-y)*Δt; // 以下3行計(jì)算差分值.
Δy=(r*x-y-x*z)*Δt;
Δz=(-3*z+x*y)*Δt;
x=x+Δx; // 以下3行完成迭代.
y=y+Δy;
z=z+Δz;
x1=x+(1/2)*y*Math.cos(Math.PI/4); // 以下2行計(jì)算“斜二側(cè)作圖法”的位置坐標(biāo).
y1=(1/2)*y*Math.sin(Math.PI/4);
t=Δt*m; // 更新時間值.
m=m+1; // 記錄迭代次數(shù).
hx.lineTo(t, 90+x); // 以下3行完成第1次以x,y,z為縱坐標(biāo),t為橫坐標(biāo)的分量圖繪制.
hy.lineTo(t, 170+y);
hz.lineTo(t, 250+z);
ht = "ht0" add m; // 生成斜二側(cè)圖繪圖點(diǎn).
duplicateMovieClip("itnpoint",ht,m); // 復(fù)制繪圖實(shí)例itnpoint (itnpoint放置于第1圖層).
setProperty(bn, _x, x1 ); // 以下2行設(shè)置繪圖點(diǎn)坐標(biāo).
setProperty(bn, _y, y1 );
第3幀(關(guān)鍵幀):
gotoAndPlay(2); // 回到第2幀作重復(fù)地迭代計(jì)算.
系數(shù)σ,b和變量x,y,z的初值確定,r取不同的值將得到顯著不同的圖形見表1,由此可以看到方程組對r的高度敏感性.
表1r取不同值對應(yīng)的圖形
續(xù)表
Flash是目前主流的平面動畫軟件,大家比較熟悉.除用于網(wǎng)頁制作外,也可用于數(shù)值計(jì)算和相圖繪制.其優(yōu)點(diǎn)是簡單易懂,過程清晰可見,不足之處是運(yùn)行時間稍長(約需幾分鐘).這種方法尤其適合于數(shù)學(xué)基礎(chǔ)和編程能力都比較欠缺的中學(xué)生進(jìn)行中學(xué)物理與大學(xué)物理銜接段的學(xué)習(xí).
另外,“洛倫茲吸引子”提醒我們要極其慎重地對待地球環(huán)境,輕率地改變它有可能導(dǎo)致難以預(yù)料和無法挽回的后果.
參考文獻(xiàn)
1 郝柏林.從拋物線談起 — 混沌動力學(xué)引論. 上海:上??萍冀逃霭嫔?,1993.9
2 劉正君.MATLAB科學(xué)計(jì)算與可視化仿真.北京:電子工業(yè)出版社,2009
3 吳明哲,等.網(wǎng)頁高手-Action程序設(shè)計(jì)篇.北京:中國鐵道出版社