數學建模一般用哪種軟體比較好?MATLAB是否有局限性?

看網上很多說MATLAB,但也有很多說MATLAB很局限 用lingo 什麼之類的更好,誰能解答.


不請自來!

首先可以說,任何一個軟體都有局限性,相對來說,MATLAB已經算是最好的了。下面依次點評。

(1)MATLAB【綜合】

最為全面的數學建模軟體,用處絕對不僅僅限於數學建模競賽,在科研和工程中都有很多的應用,說是世界第一科學軟體也不為過。無論是數值計算,還是運籌優化,亦或是數據分析,使用MATLAB都可以完成。不過越全面的軟體,往往有一個缺點都不可避免,就是做任何一個方面都不是很方便,MATLAB也是如此,除了矩陣運算,其他方面的功能雖然都有,但都比不上相關的專業軟體。比如,運籌優化不如Lingo,數據分析不如SAS等。

(2)Lingo【運籌優化】

運籌優化問題的推薦軟體。任何一項數學建模競賽,優化問題起碼佔據半壁江山,如果你問我,只準備一個模型,該準備哪一個,我會毫不猶豫回答你:優化類模型。任何一個比賽,都會涉及到運籌優化,這也是一類能極大拉開論文檔次的題目(不像統計類和預測類問題一樣大家都比吹水)。優化類問題不僅模型重要,結果也很重要,因此,一款好的軟體是必備工具。

(3)SAS【數據分析】

統計類問題的最佳選擇。SAS是世界最大的私人軟體公司,世界500強90%都在使用SAS,大數據時代下,數據類問題時有出現,SAS絕對是數據處理的最好工具。儘管目前SAS在中國的市場佔有率並不是很大,但從建模專業性上來說,統計軟體SAS的功能毫無疑問是最強大的。

(4)SPSS【數據分析】

統計軟體非常多,SPSS是很出名的一個,SPSS的最大特點是簡單,容易入門。很多數學建模比賽拿過一兩次獎的,都自稱自己會且僅會使用SPSS。個人感覺,SPSS在處理某些問題是還是比較方便的,運氣好的話,水個獎估計問題也不是太大,不過要想做到更高的水平,只會用SPSS的還是去歇著吧。

(5)mathematica【綜合】

一款非常適合數學系學生使用的軟體,擁有最強大的符號運算功能。近年來mathematica致力於在中國的數學建模競賽中推廣該款軟體,儘管使用率遠不及matlab,不過在很多問題上還是有自己獨特的優勢。

其他,如R,Python,C++(語言屬性更大);Eviews,Maple,Minitab,Splus(軟體屬性更大)等,自行了解。


小透明來碼一發Maple。對符號進行公式推導很是清爽。


數學建模的覆蓋面太廣泛,針對不同的建模方法,一般需要不同的軟體支持。

如果做數據分析翻來覆去地折騰各種數據畫圖之類的(例如回歸、插值、數值微積分等),那麼python顯然非常有用,各種擴展包又快擴展性又好(比如Numpy, SciPy, Pandas),寫出來的程序短小精鍊,易於修改和維護。

如果你要建數學模型,那麼最好是線性模型,然後用 @崔友志 提到的CPLEX Optimizer,CPLEX支持用多種語言書寫,包括C,C++,JAVA,MATLAB,你只需對其中某種語言比較熟悉就可以在比較短的時間內寫出模型文件並求解。如果你對這些都不熟悉,那麼有另兩款軟體GAMS/AMPL,他們似乎是嵌入了很多高效的solver進去,然後用統一的比較直接的語法規則來表達模型,但缺點是可能需要license,免費版本只能求解一定規模以內的模型,同時他們也可以解一些較為簡單的非線性模型。但如果你寫出來的是非線性模型,然後規模還很大或者比較複雜,那麼祝福你,需要想一些比較fancy的方法了。。。(我也不知道啥軟體比較適用)

如果要進行符號運算,例如求解符號微積分、求微分方程的解析解,那麼Wolfram Mathematica必然是最為適用的,它的語法規則也非常直接(它的目標是自然語言)。這個軟體對應一個網站Wolfram|Alpha,可以進行單行代碼運行,我經常使用它做一些單次的運算,可以嘗試一下。當初我和室友參加美賽,程序就是他用mathematica編寫的,效果很好,而且考慮到我們當時的需求,真的是只能用mathematica來寫。

至於MATLAB,基本上面的這些它都能做,但我個人的經驗告訴我在數學建模上,matlab「廣而不是太專」,如果只是一些相對簡單但需要多種分析求解方法的問題,它很好用。當然了,如果涉及到大型矩陣運算,或者可以利用自帶的一些工具箱,那matlab還是非常強大的(要體會到matlab的強大感覺也要花不少時間),或者,你事先為一些特定的問題或者特定的演算法準備一些代碼文件。(這一段純屬個人意見)

但不管怎麼說,現在科研上我用的最多的還是MATLAB和Cplex,偶爾用用python。需要什麼就學習什麼,數學建模不是目的,解決問題才是目的。


它們都是數學建模裝的常用軟體,但在數學建模比賽中,MATLAB似乎用的更多。

MATLAB本來就稱為矩陣實驗室,它的基本數據單位是矩陣,處理的問題都要用矩陣形式來表示,的確有些局限。但它的指令表達式與數學,工程中常用的形式十分相似,故用MATLAB來解算問題要比用C,FORTRAN等語言完相同的事情簡捷得多。而且它還提供了excel、c和java的介面,只要你編程能力夠強,MATLAB是足夠勝任所有的建模工作的。

LINGO主要用於求解最優化問題,以非線性規劃和二次規則的求解見長。對於其他的問題都無能為力。從這個角度來說Lingo的局限性更大。

另外,數學建模里很難說哪個軟體更好。主要是看你對這個軟體的掌握程度和這個軟體能否滿足你的需要。只要掌握的好,就連Excel也是建模比賽中的「大殺器」。


我給你說一下我的經歷

我從來沒有用過MATLAB,一直用matheamatica,math的符號計算極其強大,單說數學計算能力,math比MATLAB強大很多。而且math的編程基本就是C,我感覺用起來比MATLAB方便一些。

有一次做一道題,遇到一個最優化問題,math根本解不了,然後隊里有同學會MATLAB,在最優化問題上是比math強一些(我覺得MATLAB強的地方在於有很多別人寫好的擴展包,可以直接調用),但依然解不了這個最優化問題。然後花了半天,看了些Lingo的基本使用方法,寫了個小程序,瞬間解決。

我覺得,MATLAB和mathematica會一個就可以,我更傾向於math,因為它的界面很友好。Lingo算是在解最優化問題上的首選,Lingo是個小軟體,沒有那沒強的功能,也不能畫圖什麼的,只是用來解最優化方程。而且Lingo語法也很簡答,看一天,做幾道題練一下,基本就掌握了。

MATLAB或者mathematica是必備或者主力,Lingo算是輔助,可用可不用。


每次提到推薦數學軟體,我都要來推廣一次Python。所以我又來了。

順便一說,Python不是數學軟體,只是和C、Java一樣,一門編程語言而已。但是,Python已經在科學計算領域佔領了一片領地。原因很簡單:因為Python開源,每天都有神一般的程序員為她發布最新的數學工具庫。

每一個數學軟體都有它的局限之處。例如Matlab沒有靈活的數據結構,R語言太慢,等等。每個軟體總會有它沒有的功能和便利。

但是,Python沒有死角!

什麼數據源都能讀取,資料庫,網頁,文本……

矩陣計算有Numpy,解方程、優化、統計、信號處理有Scipy,符號運算有Simpy,複雜網路有Networkx,互動式界面有Chaco,3D有TVTK,還能做視頻、音頻、圖像、分形幾何……

Python還可以用Cython編譯加速,可以做分散式Mapreduce,多核並行化,大數據什麼的都弱爆了,速度輕鬆甩開Matlab,緊逼C語言。

學術界中,matlab之類商業數學軟體的統治地位也被Python撼動了(R也搶走了Matlab在機器學習和人工智慧領域的半壁江山)。連用機器學習的教材都開始改用Python寫了。

當然,最最大的優點是:Python很簡單。

當然了,要是做數學累的時候,還能用Python做個個人網站,寫個小遊戲玩玩放鬆,多好啊~~~

好了,不說了。加入了太多個人情緒,不喜輕拍。

參考:http://www.pythoner.cn/


Matlab是一個編程語言,具有無限的可能性。Lingo是一個工具,用來解決具體的問題(優化)。這兩者之間沒有直接的可比性。

由於建模比賽中遇到的問題不全是優化問題,所以只學Lingo應該是不夠的。

就優化問題而言,Matlab裡面也有一些工具包,比如YALMIP工具包,功能十分強大,而且十分直觀。


重要的不是軟體,而是思路。

很多軟體都很強大,關鍵在於熟練運用。

在計算效率與是使用效率方面要懂得權衡。

我一般用Matlab,簡單方便


python!python!python!重要的事情說三遍!

我本科時參加數模也是用的Matlab,只不過當時沒遇到python。直到我遇見她,才知道她有多好。

Matlab里可以提供的常用基本功能,python的Numpy,Scipy,Matplotlib等都有很好的相應包實現。居家旅行必備神器啊!

對於多數參加數模的本科生來說,如果電腦內存不是很高的話,python本身低內存佔用決對是Matlab比不了的。

當然,我沒有說Matlab不好,作為一款商業軟體,其在專業領域的庫的豐富程度絕對強無敵,但是這些基本上數模用的很少。

況且在當前相當火的機器學習領域中,python算是使用率最高的編程語言之一了吧。

當然,數模最重要的不是編程語言的選擇,重要的是你的模型和演算法。以前看過過用C++做數模的文章(國一),附頁中光代碼就好像佔了幾十頁,看後直接跪了。


MATLAB的擴展能力很強,而且本身的計算能力也很不錯,所以可以採取以MATLAB作為平台,其他的軟體輔助的形式來做數學建模。

至於其他的軟體,你既然提到了lingo,說明你的模型跟優化相關,

那麼我推薦你試試IBM ILOG CPLEX:

IBM ILOG CPLEX 是個優化工具集合,用來計算優化模型,比如整數規劃,二次規劃,約束規劃等,而且對學院完全免費,功能沒有任何限制,還自帶有MATLAB的介面,方便MATLAB用戶調用。


我現在就在學習Matlab,感覺真的是博大精深,後悔以前沒有花時間,現在距離國賽就一個月了,感覺時間甚是緊迫。。。。。

我覺得數學建模主要用的就是Matlab了,真的是很強大的|!其餘的軟體也可以,只不過用其餘的可能會好一點,比如說解規劃問題,Lingo比較好,但是Matlab也可以的,只不過Lingo更方便。。。


matlab如果熟練了就基本夠了吧,編程,處理數據和作圖。當然大型程序速度沒有C快,但也基本夠用了,如果程序大到要跑很多個小時那數模也就基本要跪了。


大部分數學建模問題都可以往優化問題方向上思考,而只要是優化問題用Lingo處理會相對方便。


贊同 @數學建模老司機。軟體各有所長,使用工具都要用其專長。與另一篇文章有同感:https://www.zhihu.com/question/49319704


數模比賽優化類問題比較多,用c會比較好。當然matlab會比較方便,但計算太慢。如果你的題目數據量大的話建議用c寫


別想太多,matlab足矣,關鍵怕你水平不夠。最多再加個SPSS吧


數學建模中為什麼matlab比Mathematica用的多,我感覺Mathematica在線性規劃,微分方程等建模問題上比matlab更強


SAS可以作為各種擬合檢驗的工具,我們學數學建模主要是SAS,matlab還有lingo


支持Droking。MatLab一個最大的局限性就是它是一款閉源的商業軟體,且授權費用不菲。而Python作為一款開軟程序語言,有廣大的社區支持,且簡單易學而又強大。

目前Python用於科學計算的模塊有NumPy、SciPy和SymPy模塊,Matplotlib可用於繪製圖形。

除了一些特殊的模塊,目前MatLab實現功能基本上都有Python的實現,可以滿足大部分的需求。


MATLAB,lingo,spss

我個人還是更喜歡MATLAB,對於優化問題,需要lingo,數據很多的話,SPSS相對而言就很方便,而且超級好用,想要的結果很容易就得到


推薦閱讀:

matlab中運行gpuDevice為什麼那麼慢?
求推薦matlab編程比較好的書籍?
matlab做量化投資分析,怎麼學?
還有沒有類似傅里葉變換那麼有用的正交變換?
卷積神經網路如何應用在彩色圖像上?

TAG:數學 | MATLAB | 數學建模 | lingo |