Saturday, January 07, 2006

Scientific Computation Tools

作科學研究常需要作些計算,可以幫我們作這些運算的軟體很多,其中最讓我印象深刻的是 MathematicaMatlab 。它們用起來方便,功能更是不在話下,但就是要花錢買,而且還不便宜。所以我就找了一些功能雖沒那麼完整,但還算堪用的軟體來試試,重點是都是免費的。例如用於代數、符號運算的 Axiom, Maxima, Yacas 等。方便用於數值、矩陣運算的 FreeMat, Octave, RLaBPlus, SciLab 等。

Mathematica 是一套電腦代數系統(computer algebra system, CAS)。我們可以利用它來作因式分解,及微積分運算,值得注意的是,這些運算單元可以用代數符號表示就好,不用非得要是數值,因為它有精湛的符號運算能力。例如:我們可以要求它作 a^2 - b^2 的因式分解,而得到 (a-b) * (a+b) 這個答案。

Matlab 則對數值運算比較專門。其名字就是 Matrices Lab 的簡稱。可見它擅長在大量的矩陣運算場合發揮。我們把這類的軟體稱為數值運算環境(numerical computing environment, NCE)。

免費的 CAS ,這裡推薦 Maxima ,安裝之前,可以先到這裡試用一下,為了用起來更賞心悅目,記得順便把 wxMaxima 裝上。如果你想玩玩 Java 版的 CAS ,那就試試 Yacas ,介面雖陽春了些,但語法接近 C 語言,可能會讓你感到親切吧,可以偷喵一下 Yacas 的使用範例。此外 Axiom 也是不錯的選擇(它的 Windows 版本沒有繪圖模式,比較難看),你也可以先到 Axiom wiki's Sandbox 試用看看,再決定要不要裝來用。 MaximaYacas 的 license 是 GPL 的; Axiom 則是 Modified BSD License

在逛 Axiom 網站時,還意外發現了 GNU TeXmacs 這個 wysiwyw 的科學文件編輯平台,可惜其 Windows 版的 porting 不大穩定,且無法正常處理中文。也許可以改而安裝其掛在 Cygwin 下的版本,有興趣的話可以試試。

要作數值及矩陣方面的科學計算,前述的 CAS 為主的軟體雖然也有支援部份,但總不是那麼方便。所以我另外找了提供專門數值運算環境(numerical computation enviroment)的免費軟體。 OctaveSciLab 是其中較有名: Octave 雖然是 GPL 授權的,但其 Windows 版要跟 Cygwin 綁在一起執行,不是那麼方便; SciLab 雖個人使用也是免費的,但它有專屬的授權方式,在商業用途有些限制,且說明文件的安排不是那麼好。我還另外試了一套叫 FreeMat 的,它是 MIT Type licence 的,說明文件淺顯易懂, Windows 的支援也不錯。另外還有 RLaBPlus 這套 RLaB 的後繼者,其 script language 的語言正交性較好,很有發展潛力,目前只有 Linux 版本。

1 comments:

York said...

最近發現最新版的 Maxima 已經把 GUI 介面 wxMaxima 整合進去了,省掉個別安裝的麻煩。

最近就有用 Maxima 作符號運算,得到公式解;然後將結果剪貼到 Python 作後續運算。

後來發現 Python 下最少也有一套 CAS 系統,叫做 sympy