07.29 四大數學軟件Maple、MATLAB、MathCAD和Mathematica優缺點比較

目前在科技和工程界上比較流行和著名的數學軟件主要有四個,分別是Maple、MATLAB、MathCAD和Mathematica。它們在各自針對的目標都有不同的特色。

Maple V 系統

四大數學軟件Maple、MATLAB、MathCAD和Mathematica優缺點比較

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 系統

四大數學軟件Maple、MATLAB、MathCAD和Mathematica優缺點比較

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 系統

四大數學軟件Maple、MATLAB、MathCAD和Mathematica優缺點比較

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 系統

四大數學軟件Maple、MATLAB、MathCAD和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的編輯功能,可以很方便地處理科技文章。

mathematica 值得信賴,國外很多著名的大學都在用它作解析計算和公式的推導,證明,算法的研究,非常好的數學研究軟件,我個人認為是No.1。它的數學分析可視化無與倫比。綜合性能和另一個著名的軟件Maple相比,有過之而無不及,要知道世界上絕大部分的量子物理,天體物理論文中的公式推導都由它完成,絕對高端但又易用,是數學,力學,物理研究人員的好幫手,甚至它的數值計算也完全可以應付學術研究。mathematica 和Maple 的最新版本在用戶公式的輸入上都有很大改進,更加方便,隨意。

北美不少Top大學的彈性力學,板殼理論,有限元等數學力學理論課的作業和Project都要求用它來完成。我個人認為,作為計算力學的工作者,從掌握語言的角度來講,只要掌握3種計算語言足夠了,mathematica用來作解析法和數學模型的研究,Matlab用來實現數值算法(當然仍然可以還用mathematica), Fortran用來寫可執行源代碼。沒必要把自己陷入眾多的語言和計算軟件之中,沒有意義的。

  • 符號計算:積分是Mathematica強,化簡也是Mathematica的強項。有些Mathematica可以直接積分的,Maple卻要用置換積分。微分方程的解析解是Maple強些,有很多微分方程的解析解Maple能算出,Mathematica卻不能。根據文獻,Maple可以解Kamke書上的97%的微分方程。

另外,積分方程也是Maple強些,因為Maple裡內帶intsolve函數,因此可以算出解析解。例如eq:=f(x)=2*x^2- x+Int(f(t),t=0..2)的關於f(x)的積分方程,Maple得出intsolve(eq,f(x)) => 2*x^2-x-10/3,而Mathematica解不了。

  • 數值計算:數值計算是Mathematica好,主要差別在於有時間差的微分方程的數值解只有Mathematica可以解,再者從Mathematica 9開始可以解概率微分方程了,Maple還不行。總體來說Mathematica在這個方面比Maple強。
  • 語言方面:由於Maple像C語言,Maple比Mathematica簡單,Matlab移植也是Maple比Mathematica強多了。
  • 線性代數:線性代數是Mathematica強,有些Maple不能做的Mathematica能做,再者Mathematics比Maple快。
  • 計算代數幾何:計算代數是Maple的超強項,強暴於Mathematica,特別是PolynomialIdeals操作等,微分多元環操作Mathematica是沒有的,再者多項式計算也是Maple快於Mathematica。所以,代數計算是Maple大大超過mathematica。
  • GUI:總體內容Maple的GUI像LATEX一樣漂亮,而Mathematica適應於編程GUI。
  • Maple和Mathematica都得用,微分,積分方程基本可以拜託Maple了(概率微分方程拜託Mathematical)。
  • 積分拜託給Mathematica。
  • 計算代數幾何,GUI,Programming拜託給Maple。
  • 線性代數,數值計算拜託給Matlab和Mathematica。


分享到:


相關文章: