為什麼工程上的模擬模擬都用matlab 而不是mathematica?

從使用角度來講,mathematica不管是解方程,求解析解,分析問題,都比matlab方便,為什麼工業界都是用matlab做模擬?比如汽車,飛機,控制,甚至航天航空,這到底是因為matlab推廣的早,還是在工程上有特別的優勢?

很多人包括知乎上都在說mathematica語言優美規範,甚至在stakchage上評分超過c python等排名第一,我自己用的時候覺得也太方便了,可我問了美國的一些老師和後來在工業界的人,都說美國matlab都容易找工作,mathematica是學院用的多。工業界的matlab到底有什麼樣的優勢?

知乎上好多都認為mma好,我也這麼認為,我只是不懂實際中為什麼公司都用matlab呢?包括中國也是這麼個情況?


Matlab和simulink在工業界目前有不可替代的地位,model based design提供了一個快速便捷低成本的工程設計的基礎,大量專屬領域的模塊素材和完整的toolchain,從建模到代碼生成,再到硬體在環模擬,以及production級別的代碼驗證工具,simulink提供了一整套的工具。同時也提供了大量的第三方軟硬體的平台的借口,hdl,embeded coder等產品都是類似產品的翹楚。大型的汽車廠商都在使用。這些是mathmatica無法比擬的,而且也是無法撼動的。因為汽車航空航天領域都是惰性很強的產業,一旦適應了一套toolchain,就很難去改變了,同時mathworks也是積極去適應和滿足大客戶的需求,所以才能傲立於業界。


補充一點,Matlab有Simulink

Simulink有一個功能-跑在實時機上,很多控制系統是要求實時的,所以Simulink這一點就讓Matlab甩開其他對手一大截。


數值計算,模擬模擬等就是為了處理人們直接分析求不出來的問題的。MMA能比MATLAB多求幾個積分幾個方程在工程計算方面並沒有什麼用。工程中遇到的複雜點的系統或者優化問題中涉及到上千上萬個變數,符號分析這種時候就很乏力了。

就好像MATLAB的符號計算能力是0,MMA的符號計算能力是1,但是工程中需要的符號計算能力是10000,這種情況下MMA的優勢能體現多少?

又或者說你要求解一個幾萬階的稀疏系統,先不說你求不求得出來,求出來了又如何呢?工程上需要的是一個在誤差容許範圍內的結果,是幾個數值。而不是一個要用幾百幾千頁紙才能寫下的一個精確的表達式。

當然MMA的符號能力可不止求幾個積分解幾個方程這麼簡單,但是很多更高深的符號計算在工程上想用也用不到,給搞物理和數學之類的理論分析的用倒是大有可為,所以更適合學院使用。

這種情況下Wolfram也在拓展自己,最近幾個版本開始注重數值計算,並且開發了和Simulink對應Wolfram SystemModeler: High-Fidelity Systems Modeling Environment,不過在整個生態上肯定還是距離MATLAB和Simulink有一定差距。

至於語言規範,搞工程計算的專業程序員出身的人並不多,他們最早接觸且最多接觸的基本都是CC++這種語言,在這種基礎下閱讀MATLAB程序和MMA程序顯然前者更加親切,這個時候語言的優美規範顯得就不是那麼重要了。


推薦閱讀:

Eigen 矩陣運算庫在實際項目中的使用情況如何?
用matlab繪製電場線和等勢面如何做?
加速度如何在頻域上積分成位移?
如何畫出兩個隱函數曲面的交線?

TAG:MATLAB | WolframMathematica |