用python去搞數學建模可行性大不大?
1,看到一些人說可以用python搞數學建模,於是就想問問,這樣的可行性大不大?
2,效率是否足夠高(語言類現在只玩的來C,不會Matlab,spss,基本上是要重頭學起,又要參加9月份的數學建模比賽,所以很是關心效率問題)?3,python在數學建模中的定位應是什麼?4,如果有可能的話,能否指明python的方向、路線(就是在了解掌握python的基礎知識和基礎能力之後,學習的側重點應放在哪裡)?
純計算效率低於c,但編寫效率高於c,部分模塊可以調用c的函數達到c的速度。
也就是說,可以快速編寫,然後調試,核心部分再用c加速。
1、數學建模定義。
數學建模就是使用數學方法解決實際應用問題。
數學建模是應用學科的核心內容,任何一門科學都是在數學的框架下表達自己解決問題的思想和方法,並和別的專業或者方向分享這些思想和方法。任何一門學科,只有當其使用數學時,才是好的精確的學科。
- 分析實際問題中的各種因素,使用變數表示;
- 分析這些變數之間的關係,哪些是相互依存的,哪些是獨立的,他們具有什麼樣的關係;
- 根據實際問題選用合適的數學框架(典型的有優化問題,配置問題等等),並具體的應用問題在這個數學框架下表出;
- 選用合適的演算法求解數學框架下表出的問題;
- 使用計算結果解釋實際問題,並且分析結果的可靠性
目錄
1需要的幾種能力2數學建模競賽3參考文獻4外部鏈接5參見
需要的幾種能力[編輯]
- 數學思維的能力;
- 分析問題本質的能力;
- 團隊合作的能力;
- 資料檢索能力:Google等互聯網資源,圖書館;
- 編程的能力:常用的數學工具軟體有MATLAB和Mathematica
- 論文寫作的能力
數學建模競賽[編輯]
主條目:數學建模競賽
MCM/ICM
MCM/ICM是Mathematical Contest in Modeling和Interdisciplinary Contest in Modeling的縮寫,即「數學建模競賽」和「交叉學科建模競賽」。MCM始於1985年,ICM始於2000年,由COMAP(the Consortium for Mathematics and Its Application,美國數學及其應用聯合會)主辦,得到了SIAM,NSA,INFORMS等多個組織的贊助。MCM/ICM與其他著名數學競賽(如Putnam數學競賽)的區別在於其著重強調研究問題、解決方案的原創性、團隊合作、交流以及結果的合理性。競賽以三人(本科生)為一組,在四天時間內,就指定的問題完成從建立模型、求解、驗證到論文撰寫的全部工作。競賽每年都吸引大量著名高校參賽。2008年MCM/ICM有超過2000個隊伍參加,遍及五大洲。MCM/ICM已經成為最著名的國際大學生競賽之一。
CUMCM
全國大學生數學建模競賽(CUMCM)創辦於1992年,每年一屆,目前已成為中國大陸高校規模最大的基礎性學科競賽,也是世界上規模最大的數學建模競賽。2013年,來自中國大陸33個省/市/自治區(包括香港和澳門特區)及新加坡、印度和馬來西亞的1326所院校、23339個隊(其中本科組19892隊、專科組3447隊)、70000多名大學生報名參加本項競賽。
2、數學建模,既然是用數學,解決實際問題。
數學問題,用c,java,python 都可以實現。由於python 有科學計算的庫,numpy,scipy ,故python 用在實現數據建模的演算法,完全不是問題。
3、方向:首先你得會寫代碼解決問題,再熟練使用numpy scipy 等解微積分、矩陣計算等。
NumPy - NumPySciPy.org - SciPy.org我是數模國獎獲得者,現在工作是Python和C混合編程,之前寫過R,所以我推薦你用matlab
可行性大。
但其實用處並不大。
功利性的來講,評審都是數學系的老師。代碼實現是其次重要的。
把模型寫的好看點,經得起推導,有創新點和獨到的見解才是至關重要的。
如果單純想鍛煉代碼能力,可以去做ACM,MCM的核心是用數學的思想解決實際問題。
以上。
補充一下:
2.代碼效率的高低其實在數據量小,計算複雜度低時,很難被體現出來。而演算法方面的優化對效率的提升更大。
3.扮演的角色是一個模型的實現工具,不是剛需,MATLAB/R,甚至SPSS/LINGO都可以替代它。
4.python的學習方向,建議先找本書過一遍基礎,才能厚積薄發;在了解完基礎之後,建議針對建模中經常出現的優化、預測、評價問題進行針對性訓練。復盤一些歷年比賽和經典優秀論文的實現方法。
最後,如果你的工具是Python的話,那麼你要明白你的優勢在於大數據的處理能力,因此,建議學一些機器學習的演算法,專門去做大數據類的問題。
我就是用的Python建的模,校賽做的是一道圖像匹配的問題,用opencv寫得飛起。做完覺得這波應該穩了,程序跑出來結果也很漂亮,圖像匹配得很好。結果校賽要查程序,安裝opencv3+opencv_contrib還要用c編譯,評委組那些不會配置,程序運行不了,直接給淘汰了,所以隨大流還是有好處的,能用MATLAB就用MATLAB吧
1. 如果指的是數學建模比賽,可行。我就是用python打的美賽,可惜第一次打只拿到m獎。
2. 數學建模關注的是建模,如果你用python寫出了跑不完的代碼,你應該想想是不是你寫成了O(2^n),或者找找有沒有別人寫好的庫,而不是糾結語言的運行效率。(突然意識到題主問的可能是學習效率?)學習python的話如果有其他語言基礎的話理論上挺快的,不過這種東西是因人而異的。。。我大一參加自動化的比賽搞機器視覺,python也就學了一個星期,很多概念都沒搞清楚,但還是做出來了。
3. 實現你模型中用到的演算法。
4. 先學會用pip,然後練習實現各種演算法。
關於比賽再說一下
1. 有句話不知道當講不當講,但我一定要講,「珍愛生命,遠離數模」。反正我是不願意主動去打比賽的,太累了,而且對於我的專業作用不大。
2. 選語言應該看看你學的是什麼。我是軟工的,我肯定是不願意花時間去學matlab的,但是我隊友是數學系和電氣的,她們肯定是要學matlab的。語言真的不重要,你能實現模型,圖畫的好看,論文排版漂亮,比什麼都強。。。最重要的其實是隊友,如果不是兩位小姐姐帶我,我根本就不會去比賽。
3. 就比賽來說matlab優點要多一點。我比賽的時候只是算了值出來,畫圖什麼的是隊友用matlab做的,如果你一心想搞數模還是matlab比較好。
強答1.大2.python有大量的gpu加速庫3.4.numpy pandas matplotlib這些模塊的使用
數學建模的重點是建模,用什麼語言去驅動計算機解決模型的計算和驗證問題看你擅長什麼就用什麼
大二數學狗強答一波
做建模兩年了,主要負責演算法方面。用的matlab,spss,lingo,自己學過一點點python。1.數學建模有很多類型的題目,不同題目方法都不一樣,有些問題可以用python做的2.個人感覺python運行速度太慢,不是很適合數學建模,像比較快的c(我沒用過但是我的一個隊友用過)在做一道複雜的優化類問題時也跑不出開,但是matlab就可以。3.4超過我能力範疇了 所以建議還是學一下matlab,也不難,語法有點像c但是比c簡單。部分題目用spss也很方便,而且spss基本不需要編程,易上手。學好matlab, python應該屬於雞肋。
推薦閱讀:
※python生成器到底有什麼優點?
※金融工程現在用python多嗎?
※dlib人臉識別 模塊 如何 在Python 中安裝?
※如何把嵌套的python list轉成一個一維的python list?
※為什麼說 Python 是強類型語言?