最近MATLAB的問題很火,一直在討論MATLAB不能用了該怎麼辦。我發現一個問題,就是像MATLAB這類模擬計算軟體,在各個領域都具有非常廣泛的使用,好像MATLAB能做任何事情一樣。另外像Python這種腳本語言,也是一種「萬能」的存在。我想,這種啥都能做的工具真的是發展的趨勢嗎?我覺得這種大而全的軟體很難做到盡善盡美,讓不同領域不同研究方向的用戶都感覺到非常滿意。如果做細化領域的專用模擬軟體,會不會更容易滿足用戶的需求,或者說是不是能夠做得更專業?根據我自己的經驗,能接觸到的領域中,很少有這類專業模擬軟體,即使有,也做得不盡人意。

很好奇大家所在領域或者研究方向有專有的模擬軟體嗎?用起來的感受怎麼樣?「專有」模擬軟體和「通用」模擬軟體相比,有哪些優劣勢,這兩種方向哪一種纔是未來的發展方向?


有意思的問題,答案是大而全。(至於說兩種方向都會存在,那是必然,但總有個主要和次要,相信題主問的就是主要)

原因如下:

  1. 未來模擬的趨勢是多物理場耦合模擬,只有「大而全」的模擬軟體才能在方程本身上做到耦合。(此處的「大而全」不是像ANSYS那樣收購各種軟體然後合成在workbench裏,而是從方程本質上考慮了多場耦合從而實現的多功能),而「小而精」的軟體很難做到多物理場,要實現也往往是採用聯合模擬的方式進行的假耦合。
  2. 大而全的軟體同樣也可以做到小而精。通用軟體可以通過二次開發或者定製化,對某一個行業進行精確分析。比如Adams是「大而全」的通用軟體,但也有專門針對汽車行業「小而精」的Adams car模塊。
  3. 隨著計算機算力的提升,「大而全」的軟體計算效率完全可以滿足行業需求。以前「小而精」的軟體往往針對某個行業採用針對性強的模型,從而可以達到很高的效率,進而得到業界的肯定。而當計算機性能的提升,「大而全」軟體仍然可以採用通用的模型、暴力的求解速度來達到滿意的效率。
  4. 從軟體發展的規律上來說,「小而精」的軟體如果能長期存在於市場,終將發展成「大而全」的軟體。小而精的軟體從市場規模上遠不及大而全的軟體,資本不會流向它們。正如LS-DYNA也要涉足隱式動力學、ANSA也要涉足求解器一樣,「大而全」是趨勢。

暫時是這麼想的,當然想法是會改變的。


從產品研發的角度看,其實,兩個方向都有。

一方面,模擬軟體需要和設計、產品數據管理、試驗數據管理等系統集成,且機電一體化產品的集成度和複雜度越來越高,模擬軟體必須向著集成化、系統化、平臺化方向發展,成為研發數字化系統中一個高度集成的子部分,並實現力、熱、磁、聲、光、電、流體等子方向某種程度的耦合。因此,很多原本獨立的模擬軟體企業,陸續被大系統企業收購,集成到完整的系統解決方案中,如達索系統收購ABAQUS,海克斯康收購MSC.Software等等。

另一方面,針對特定領域的模擬和解算問題,小而精的軟體仍有生存空間,但領域垂直度更高了,很多此類軟體的開發團隊其實依靠工程項目諮詢生存。


一個是mathwork的,基於V流程開始的從需求到驗證的階段裡面都有工具箱,基本都是自己公司開發的!

一個是西門子,也是V流程,但是每個階段的工具都是不一樣的,主要是通過買行業中最先進的,然後做通各個軟體的介面和集成!

我更贊同西門子的做法,西門子有自己的工業產業體系,mathworks更多的是工具供應商,真的這些工具在實際應用的如何,這個就不一定了


當然是吹爆MATLAB了。開個玩笑就是MATLAB除了不能生孩子其他都可以。這種大而全的軟體還是很好用的,而且感覺MATLAB對我來講夠用,所以我目前還是認為MATLAB是萬能的。

就是電氣相關專業,本科接觸了大大小小的軟體就很多了,比如ACE,CAD,Multisim、CCS,MATLAB(含simulink),VC、DEV、Protues、Quartus等等,還有一個彙編語言用的學校的電腦提供的軟體具體名字忘了。

但是最後留到電腦裏的就只有MATLAB,而且MATLAB賊大,賊佔內存,我想說電腦必須定期更換的原因就是為MATLAB服務。

CCS就是為了TI,ACE就是畫PLC圖,CAD順帶設計一些圖樣,Multisim和protues就是電路圖設計,其實數字電路用晶元設計我是用的protues,VC和DEV就是C語言,Quartus完全是為了FPGA實驗,MATLAB用到的課程有數值分析,信號分析,自動控制原理,現代控制理論,運動控制系統,高等數學,概率論與數理統計,複變函數等等。還有最主要其他實驗做好了,數據繪圖MATLAB簡直不要太爽!什麼,Excel也可以繪圖,你試著交實驗報告時用Excel畫的圖試一下!

到頭來,其他課程結束了,那些其他軟體可能都卸載了,但是唯獨留著MATLAB捨不得卸載,卸載了還得重新安裝,麻煩的一批。就單論MATLAB而言,我是中意這個軟體的,一個軟體解決很多需求,那些說Python還有其他開源程序代替MATLAB的人可能壓根沒想過有的專業不接觸這些語言,你說那些Python啥的好不好,好是好,可是我們這些人沒學過,難道讓我們學一遍?再說了,我們電氣人要是把你們計算機相關語言都學了一遍還能實現我們的目的(比如控制系統模擬),計算機的兄弟們,你們還恰鎚子飯啊?當一個電氣專業打好幾個計算機專業,這老闆要是還用計算機相關專業,這老闆怕不是NT。

就單論MATLAB而言,裡面目前為止,我找到很多不滿意的地方。比如不能語音輸入並且自己跑代碼,也不能自己模擬系統,也不能逛淘寶,也不能看直播······

反正在我的專業MATLAB是夠用了,對了,MATLAB自帶的PID參數生成功能簡直不要太好用,控制系統模擬不用simulink我還真不知道啥好用了。話說MATLAB也能做FPGA,有機會嘗試一下!!!


應該朝著對用戶友好的方向發展。

如果不考慮對用戶是否友好,開源軟體就很好啊,既有一些基本功能,又能在上面加自己想要的功能,又免費。

比如我接觸的領域中常用的OpenFOAM,就屬於入門門檻較高,但入門之後頓時風生水起的類型。可我依然遇到不少人,一聽說啥要用Linux,要用command line控制,就直接放棄了。

Python正是能夠為模擬軟體提供一個user-friendly的interface。譬如說美國地質局的地下水軟體Modflow,人們實際操作時候會用flopy(一個python包)來控制,大大降低了模擬難度(當然也有不少人用帶圖形界面的.exe)。

「通用」模擬軟體例如MATLAB,在教學層面應用廣泛,但是學生以後工作了,一般都會從事一些具體的工作,「通用」軟體的意義就不大了,除非它比「專有」軟體更快,操作更簡單,對用戶更友好。

當然,MATLAB在user-friendly方面在同類型軟體中是相當好的,尤其是debug簡直不要太容易。但它最大的缺點就是慢,因此就像其他回答所說,基本還是用來打草稿+課堂作業。

歸根結底問題還是如何兼顧模擬能力與對用戶友好,現在很多人用Python+C/Fortran,順帶調用一些線性代數運算的package,對大部分人來講門檻還是有點高了,畢竟很多人對模擬的需求只是應用,並非開發。


個人而言,傾向於小而精的模擬軟體,由於前沿技術呈現爆炸式發展,大而全的軟體系統很難做到跟上前沿的行業發展,當然僅限於科研領域的觀點。此外,現在大而全的模擬軟體大部分用於商業用途,以前做科研喜歡用商業軟體,現在更多的採用開源並且更加專業化的小眾分析軟體,由於更加專精,因此使用起來也順手很多。


兩者並不矛盾,小而精是社會主義階段,大而全是共產主義階段,每一步走踏實了,量變會引起質變,目前人類尚處於對自然知之甚少的階段,擴大人類知識的邊界才能做到真正的「精」和「全」。


只有同時用過美國和國產同類產品的人才能感受到美國科技實力,才能清醒認識到中美硬實力的差距。


matlab不是模擬軟體。

只是用來給數值演算法打草稿的。

然而複雜系統的草稿它還打不了。

比如你想設計個針對3D的模擬特別優化的演算法,matlab就不能拿來打草稿,太慢。

深度學習演算法的草稿,它也打不了……matlab也是有DL工具包的哦。

帶有複雜數據結構的草稿,它也不好打(比如你的計算要用到八叉樹什麼的)。

綜上,matlab的可替代性其實很大的。

只要在最多2D問題的層面,實現:向量加減乘除、矩陣向量乘、稀疏矩陣(常用一共4種格式),power iteration(eigen 問題 svd)、norm函數、LU分解、複數操作符重載、krylov子空間迭代法、ode積分、最重要的:快速傅裏葉變換。

外加一個腳本語言,這玩意能完成99%的打草稿工作。

simulink就真的不要吹了,再強大也是不會用的,畢竟計算效率擺在那兒。我經歷過這麼多計算數學機構的教育,就沒有見到過用matlab做課堂作業和演算法草稿以外的工作,紐約大學(克朗數學科學院)時數值方法II 課程(美科院士,NASA的顧問教的),連課堂作業都要用c++寫。


根據市場需要決定,但中國市場盜版嚴重,什麼模擬軟體都發展不起來


推薦閱讀:
相關文章