Mathematica有一個非常強大的功能,就是生成可以互動的內容,甚至可以到處幀數很大的動態圖。
下面,就用幾個例子,簡單的講一下這個問題。
工具/原料
電腦
Mathematica(8.0以上版本)
一些簡單的例子
把一組圖片變成一個動態圖
程式碼是:
Export["abcd.gif",{圖片a,圖片b,圖片c,圖片d}]
其中,Export是輸出檔案的命令函式;abcd.gif是要輸出的檔案的名稱和格式,要用""包圍起來;後面的{}是一個列表。
這段程式碼的意思就是,把列表裡的圖片a、圖片b、圖片c、圖片d按順序匯出為一個gif檔案。
要注意的是,要把圖片直接複製到相應的位置上,讓圖片成為程式碼的一部分。
匯出的檔案在哪裡呢?這個好像因人而異。我的電腦上的匯出檔案是在“文件”資料夾裡。如果你的電腦不是這樣,可以慢慢找,也可以全盤搜尋"abcd.gif"。
Mathematica可以繪製函式的圖形,也可以繪製函式的動態圖。
程式碼是:
Animate[Plot[Sin[x + a], {x, 0, 10}], {a, 0, 5}]
Animate是生成動畫的命令,x是自變數,a是動畫引數。
執行以後,用滑鼠點開關,影象就會自己動起來;用左鍵拖動滑塊,就實現了人機互動。自己實施去吧。
上面並不是動態圖,因為你的電腦資料夾裡面沒有這個東西(還沒匯出來)。
怎麼匯出?當然還是用Export,程式碼如下:
Export["sinx.gif", Table[Plot[Sin[x + a], {x, 0, 10}], {a, 0, 5}]]
出來的結果如圖:
三焦點曲線
在《怎麼用Mathematica處理多焦點曲線》裡面,作者提到了多焦點曲線的概念。
下面把三焦點曲線匯出為動態圖。
先建立一個圖的列表,一幀一幀的影象,都在這個列表裡。
Table[ContourPlot[
Sqrt[(x - 1)^2 + (y - 1)^2] + Sqrt[(x - 0)^2 + (y - 0)^2] + Sqrt[
x^2 + (y - 1)^2] == a, {x, -5, 5}, {y, -5, 5}], {a, 1.8, 10, 0.1}]
然後用Export:
Export["三焦點曲線.gif",
Table[ContourPlot[
Sqrt[(x - 1)^2 + (y - 1)^2] + Sqrt[(x - 0)^2 + (y - 0)^2] + Sqrt[
x^2 + (y - 1)^2] == a, {x, -5, 5}, {y, -5, 5}], {a, 1.8, 10,
0.1}]]
2 怎麼用Mathematica處理多焦點曲線
雙擺的模擬
雙擺和單擺比起來,就複雜的太多了。它的運動狀態,看起來非常的混亂。下面,就用Mathematica模擬一下它的運動。
它的運動,由四個函式根據不同的初始狀態所確定。這四個函式設為p1[t]、p2[t]、θ1[t]、θ2[t],它們滿足一個微分方程組(見圖)。
程式碼如下圖。
注意事項
寫程式碼,有助於你熟悉鍵盤,提高打字速度。所以,儘量不要複製粘帖。
把上面的程式碼直接複製到Mathematica裡,居然有的不能執行。很奇怪!所以,你如果想實驗的話,儘量自己寫吧。
第六步程式碼有點長,所以截圖了。