1. 程式人生 > >數學分析常用的4款軟體對比!

數學分析常用的4款軟體對比!

  從事資料分析都知道軟體是必不可少的,目前比較流行和著名的數學軟體主要有四個,分別是Maple、MATLAB、MathCAD和Mathematica。但它們都有各自的優缺點。下面我們大聖眾包跟大家分享一篇來自化學資料聯盟關於數學軟體的對比文章。

  Maple V 系統

  Maple V是由Waterloo大學開發的數學系統軟體,它不但具有精確的數值處理功能,而且具有無以倫比的符號計算功能。Maple V的符號計算能力還是MathCAD和MATLAB等軟體的符號處理的核心。Maple提供了2000餘種數學函式,涉及範圍包括:普通數學、高等數學、線性代數、數論、離散數學、圖形學。它還提供了一套內建的程式語言,使用者可以開發自己的應用程式,而且Maple自身的2000多種函式,基本上是用此語言開發的。

  Maple採用字元行輸入方式,輸入時需要按照規定的格式輸入,雖然與一般常見的數學格式不同,但靈活方便,也很容易理解。輸出則可以選擇字元方式和圖形方式,產生的圖形結果可以很方便地剪貼到Windows應用程式內。

  5個星的數學軟體,純粹數學的巨人,如果想做數學和應用數學的能力(數值的除外)其是最好的選擇。但是此軟體二次開發能力不好,僅把軟體的發展目標放在數學上,不想向其它領域發展。Maple自帶的語言較容易理解,就像用英語說話一樣。

  優勢:

  符號計算非常強大,和Mathematica相比各有千秋

  許多多項式操作比Mathematica更快

  一些符號積分Maple也有速度優勢(特別是不定積分),不過有時返回的結果沒有Mathematica給出的更嚴謹、魯棒性好,能算的積分型別沒有Mathematica多

  Maple的“適應性”更好,有的問題Mathematica需要一定的預處理才能算的更快,得出滿意的結果

  Maple更擅長(偏)微分方程,(其實Maple和Mathematica都能解一些對方解不了的一些特殊微分方程)

  可以帶步驟求解一些問題,Mathematica需要第三方的Package或藉助WolframAlpha

  上手較快,一些常見的操作無需命令,通過右鍵選單就能完成

  缺點:

  介面有點卡(基於Java swing),經典介面流暢但是很土

  自帶的代數方面的package比較豐富

  化簡能力,不等式求解,邏輯系統較Mathematica遜色一些

  數值計算總體上比Matlab和Mathematica差一些

  高精度和大數計算方面強於Matlab弱於Mathematica

  統計方面有些薄弱

  MATLAB 系統

  MATLAB原是矩陣實驗室(Matrix Laboratory),在70年代用來提供Linpack和Eispack軟體包的介面程式,採用C語言編寫。從80年代出現3.0的DOS版本,逐漸成為科技計算、檢視互動系統和程式語言。MATLAB可以執行在十幾個操作平臺上,比較常見的有基於Windows 9X/NT、OS/2、Macintosh、Sun、Unix、Linux等平臺的系統。

  MATLAB程式主要由主程式和各種工具包組成,其中主程式包含數百個內部核心函式,工具包則包括複雜系統模擬、訊號處理工具包、系統識別工具包、優化工具包、神經網路工具包、控制系統工具包、μ分析和綜合工具包、樣條工具包、符號數學工具包、影象處理工具包、統計工具包等。而且5.x版本還包含一套幾十個的PDF檔案,從MATLAB的使用入門到其他專題應用均有詳細的介紹。

  MATLAB是數值計算的先鋒,它以矩陣作為基本資料單位,在應用線性代數、數理統計、自動控制、數字訊號處理、動態系統模擬方面已經成為首選工具,同時也是科研工作人員和大學生、研究生進行科學研究的得力工具。MATLAB在輸入方面也很方便,可以使用內部的Editor或者其他任何字元處理器,同時它還可以與Word6.0/7.0結合在一起,在Word的頁面裡直接呼叫MATLAB的大部分功能,使Word具有特殊的計算能力。

  優勢:

  線性代數和數值計算方面優勢顯著,

  向量化運算往往比同類軟體更快,

  擁有超多工具箱,模擬,影象處理,訊號處理,金融,統計,優化……

  程式語言比較易學,編輯和除錯環境不錯

  方便構建GUI

  缺點:

  不是原生支援符號計算(符號計算遠不止是推導公式),新版的mupad核心還不錯,但是和Mathematica、Maple比有明顯差距,不論是深度、廣度和速度

  遞迴特別慢,比Mathematica和Maple以及常見的指令碼語言都慢

  在一些數學領域相對薄弱,如數論,圖論,離散數學等

  高精度和大數計算比較慢(如精確計算100萬的階乘或π的前500萬位)

  工具箱之間的協作能力不是很好

  介面不太好看(新版R2013a的Ribbon介面不錯)

  預設畫圖不美觀,鋸齒,系統函式命名不夠規範

  MathCAD 系統

  MathCAD是美國Mathsoft公司推出的一個互動式的數學系統軟體。從早期的DOS下的1.0和Windows下的4.0版本,到今日的8.0版本,功能也從簡單的數值計算,直至引用Maple強大的符號計算能力,使得它發生了一個質的飛躍。

  MathCAD是集文字編輯、數學計算、程式編輯和模擬於一體的軟體。MathCAD7.0 Professional(專業版)執行在Win9X/NT下,它的主要特點是輸入格式與人們習慣的數學書寫格式很近似,採用WYSWYG(所見所得)介面,特別適合一般無須進行復雜程式設計或要求比較特殊的計算。MathCAD 7.0 Professional 還帶有一個程式編輯器,對於一般比較短小,或者要求計算速度比較低時,採用它也是可以的。這個程式編輯器的優點是語法特別簡單。

  MathCAD可以看作是一個功能強大的計算器,沒有很複雜的規則;同時它也可以和Word、Lotus、WPS2000等字處理軟體很好地配合使用,可以把它當作一個出色的全螢幕數學公式編輯器。

  MathCAD是美國Mathsoft公司推出的一個互動式的數學系統軟體。從早期的DOS下的1.0和Windows下的4.0版本,到今日的8.0版本,功能也從簡單的數值計算,直至引用Maple強大的符號計算能力,使得它發生了一個質的飛躍。

  Mathematica 系統

  Mathematica是由美國物理學家Stephen Wolfram領導的Wolfram Research開發的數學系統軟體。它擁有強大的數值計算和符號計算能力,在這一方面與Maple類似,但它的符號計算不是基於Maple上的,而是自己開發的。

  Mathematica的基本系統主要是用C語言開發的,因而可以比較容易地移植到各種平臺上,Mathematica是一個互動式的計算系統,計算是在使用者和Mathematica互相交換、傳遞資訊資料的過程中完成的。Mathematica系統所接受的命令都被稱作表示式,系統在接受了一個表示式之後就對它進行處理,然後再把計算結果返回。Mathematica對於輸入形式有比較嚴格的規定,使用者必須按照系統規定的數學格式輸入,系統才能正確地處理,不過由於3.0版本引入輸入面板,並且可以修改、重組輸入面板,因此以前版本輸入指令時需要不斷切換大小寫字元的繁瑣方式得到很好的改善。3.0版本可以用各種格式儲存檔案和剪貼內容,包括RTF、HTML、BMP等格式。

  Mathematica的符號功能是最強的,其執行構架也是最優的。它的構架由核心系統與前端系統構成。兩個系統既合作又獨立,這比Matlab的構架要合理。Mathematica是專為研究人員開發的。橫向比較的話,Mathematica的符號能力比Maple強很多,Maple基本上是為中學生與大學生之學習研發的,不適合進行物理學與技術科學的運演;而Mathematica是最好的物理學科研的工具,Matlab是最好的技術科學數值求解的工具。

  4個星的“數學”軟體,在數學二字上加引號是因為他已經超越了純粹數學的範疇,這主要表現在他不斷開發的面向於不同學科的工具包。就做數學和應用數學的能力來說Mathematica不如Maple(並不是說其做不了,不怕麻煩程式設計序也能做,但是話說回來基本的東西都程式設計序的話,那麼和Fortran之類的語言沒什麼區別了)。另一個問題是Mathematica的核心不如Maple穩定(計算速度較Maple慢,我是說純粹的計算時間,不是輸入命令的時間,目前的Maple的Java介面比較失敗,讓人感覺算Maple算得慢,其實不是這樣的)。Mathematica的誘人之處是與其它數值軟體相比可以做符號運算,與Maple相比二次開發性好,工具包比Maple做的好。此外,其自帶的語言是面向物件的,很厲害,很靈活。

  優勢:

  符號計算非常強大,可解的方程型別最廣泛

  非常強大和靈活的語言,完成相同的工作,和同類語言相比程式碼量往往最少

  語言高度統一,支援相當多的程式設計正規化,過程式、函式式、超程式設計,邏輯程式設計、基於規則…

  迴圈比較慢,可以用Compile加速,或使用Map、Table、Nest等代替迴圈

  許多內建函式具備AAS機制(AutomaticAlgorithmSelection)

  擅長高精度和大數計算,圖形方面的函式很豐富,預設畫圖比Matlab和Maple更好看

  介面美觀,輸入公式很方便

  幫助文件很友好

  缺點:

  價格較高,比matlab更貴(Matlab的價格取決於你要哪些工具箱)

  向量化的操作比Matlab稍慢,有時比Matlab更耗記憶體

  程式碼除錯不是很方便,但可以用Wolfram Workbench(基於Eclipse的IDE)改善

  程式語言學習曲線陡峭,排除熟悉Scheme、Haskell等函式式語言或者作為高階計算器使用的人

  (Mathematica的語法和常見的過程式程式語言有較大不同,雖然也可以作為過程式語言來用,但程式碼的和速度和優雅程度就大打折扣了)

  四種軟體的比較

  選用何種數學軟體?如果僅僅是要求一般的計算或者是普通使用者日常使用,首選的是MathCAD,它在高等數學方面所具有的能力,足夠一般客戶的要求,而且它的輸入介面也特別友好。

  如果要求計算精度、符號計算和程式設計方面的話,最好同時使用Maple和Mathematica,它們在符號處理方面各具特色,有些Maple不能處理的,Mathematica卻能處理,諸如某些積分、求極限等方面,這些都是比較特殊的。如果要求進行矩陣方面或圖形方面的處理,則選擇MATLAB,它的矩陣計算和圖形處理方面則是它的強項,同時利用MATLAB的NoteBook功能,結合Word6.0/7.0的編輯功能,可以很方便地處理科技文章。

  如果僅僅是要求一般的計算或者是普通使用者日常使用,首選的是MathCAD,它在高等數學方面所具有的能力,足夠一般客戶的要求,而且它的輸入介面也特別友好。如果要求計算精度、符號計算和程式設計方面的話,最好同時使用Maple和Mathematica,它們在符號處理方面各具特色,有些Maple不能處理的,Mathematica卻能處理,諸如某些積分、求極限等方面,這些都是比較特殊的。如果要求進行矩陣方面或圖形方面的處理,則選擇MATLAB,它的矩陣計算和圖形處理方面則是它的強項,同時利用MATLAB的NoteBook功能,結合Word的編輯功能,可以很方便地編輯科技文章。