Python數學建模-01.新手必讀

youcans發表於2021-05-29

Python 完全可以滿足數學建模的需要。

Python 是數學建模的最佳選擇之一,而且在其它工作中也無所不能。

『Python 數學建模 @ Youcans』帶你從數模小白成為國賽達人。



1. 數學建模新手入門

『Python 數學建模 @ Youcans』 系列 是專門為學習數學建模、準備數模競賽的小白準備的系列教程。

【Python數學建模-01.新手必讀】 主要討論小白剛剛接觸數學建模的幾個困惑:

  • 學習數學建模難不難?應該怎麼學?
  • 學習數學建模選擇什麼計算機語言最好?我要學 Matlab 嗎?
  • 用 Python 能做數學建模嗎?
  • 用 Python 做數學建模好不好用,好不好學?

歡迎關注 『Python 數學建模 @ Youcans』 系列,持續更新

Python數學建模-01.新手必讀
Python數學建模-02.資料匯入
Python數模筆記-PuLP庫
Python數模筆記-StatsModels統計迴歸
Python數模筆記-Sklearn
Python數模筆記-NetworkX
Python數模筆記-模擬退火演算法



2. 學習數學建模難不難?應該怎麼學?

進入大學以後,很多同學都會聽老師和師兄師姐說起“數學建模”、“數模競賽”,充滿興趣的同時也會有很多困惑:數學建模到底是什麼?要不要學,好不好學,怎麼學?

“數學建模”是用數學模型的方法,分析和解決實際應用問題的方法。

中學數學的應用題,就是典型的數學建模問題:基於簡化的應用問題,給出一些已知條件,需要求解一些問題。應用題的解題過程,通常是先分析問題,判斷用什麼方法解題,然後根據已知條件一步步推導、計算,最後得出求解問題的答案。這就是典型的數學建模的方法和步驟,”數學建模“就是加強版的應用題。

大學裡經常說的“數學建模”往往與”數模競賽“聯絡在一起,這時又特指通過計算機程式來求解問題。這是因為,既然”數學建模“是加強版的應用題,”加強“體現在問題的求解計算過程比中學數學複雜,如果不通過計算機程式設計往往難以快速高效地計算出答案。另一方面,這也是為了鼓勵大家學習使用計算機,學習通過計算機程式設計解決問題。

”數學建模“的學習過程並不困難,並不一定需要很好的數學基礎,也不需要有很高的計算機程式設計水平——數學基礎好,程式設計基礎強,學習數學建模肯定會更加容易。但是,數學成績不好,計算機小白,也完全可以學習數學建模、學好數學建模,並會在學習過程中鍛鍊數理思維邏輯,提高計算機程式設計水平——這才是最重要的收穫。

小白要學習數學建模,建議:

  • 首先聽一兩節數模培訓的公開課或分享會,B站上有很多,大概明白數學建模是怎麼回事就行。
  • 其次要選擇一門計算機程式語言進行學習,掌握基本的程式設計操作。
  • 然後要系統學習各種型別的數學模型和演算法,這是比較漫長的學習過程。
  • 最後是實戰練習,大學的數模協會都會安排練習賽、校內賽之類的訓練和競賽。


3. Python 能不能滿足數學建模的需要?

答案很明確:Python 完全可以滿足數學建模的需要

首先,幾乎所有的計算機語言,都可以滿足常用的數學建模問題的需要。例如 C、Python、C++、C#、VB、R、Go,當然還有數模競賽中最流行的 Matlab,解決各種數學建模問題都毫無問題。

需要注意的是,數模學習過程中經常聽到的 Lingo、SPSS,嚴格地說並不是計算機語言,只是解決某些型別問題的專用軟體,並不適用於其它型別的問題。

如果你學過其中一種計算機語言,而且(1)該計算機語言已經達到非常熟練的水平,(2)以提高程式設計水平為目的,而不僅是為了參加數模競賽,那麼你也可以使用學過的計算機語言學習數學建模和參賽。否則,就應該選擇 Matlab 語言或者 Python 語言,其原因嘛,看完本文就清楚了。



4. Python 數學建模好不好用?

答案也很明確:Python 用於數學建模,很好用

換個角度談這個問題,就是學習數學建模、參加數模競賽最好要選擇什麼計算機語言?答案就是 Matlab 語言或者 Python 語言。

為什麼這麼說呢?因為數學建模涉及的問題型別很多,演算法更加繁多。對於普通本科學生來說,如果學習各種演算法以後都要自己從零開始程式設計,對本科學生是非常非常困難,幾乎不可能實現的。實際上,並不是真的要讓同學們自己按照演算法步驟從頭程式設計,能夠清楚每一類問題有哪些常用演算法,學會使用現有的演算法程式就可以了。

現有的演算法程式從哪裡來呢?一是來自計算機語言的各種演算法工具包,以數學建模所涉及的演算法來說,Matlab 語言或者 Python 語言的工具包都非常豐富,程式質量高、介面規範、文件和例程比較完整。二是來自先前的老師和同學積累的演算法例程,但要系統全面地蒐集這種演算法例程也很困難,而且蒐集到的例程質量參差不齊、介面五花八門,新手要進行消化吸收的難度也很大。

為什麼選擇 Python 語言,而不是選擇 Matlab 語言呢?首先,Matlab語言來做數學建模完全可以,也是很好的選擇。但是,學習任何一門計算機語言都是需要時間和精力的,我們學習程式語言用於數學建模,但最好並不只是為了數學建模,而是做其它工作時也能用。

從這個角度來說,Python 語言的優勢就非常明顯了。Matlab 是商業數學軟體,主要應用於與數值計算相關的科研領域,在程式語言中排名 19、佔比 1%。Python 語言是一種通用的高階程式語言,簡單易學、免費開源,應用領域幾乎無所不能,是最流行的程式語言,佔比 12%。總結來說,在計算研究領域 Matlab 語言的效能更強,但在其它領域 Python 語言則是王者。



5. Python 數學建模好不好學?

綜合來看,Python 比較容易學,也值得學。

大神覺得簡單的問題,小白總會感到困難的。比較而言,Python 是比較簡單、易學易用的程式語言,比 C 語言容易學、好掌握。不過,零基礎學習 Matlab 會更容易上手,要精通也不容易;而 Python 大約還是需要一個月的基礎學習,才能較好地學習和使用數學建模的演算法。

既然這樣,為什麼大家一說起數學建模就會想到 Matlab 語言,數模培訓中也都在用 Matlab 語言呢?首先,Matlab 語言在數學建模中也是很好的選擇;其次,十幾年前開始搞數模競賽時,Python 語言還沒有現在這麼強大和流行;第三,Matlab 語言對於從事教學科研的老師是最熟悉、最常用的;最後,是由於多年的積累和慣性。

如果大學課程開設過計算機語言,通常是 C語言,在此基礎上自學 Python 很容易,可以直接結合數學建模的內容學習 Python ;如果還沒有開設計算機語言課程,自學 Python 語言也是較好的選擇,特別是對於數學建模之外的需求也能勝任。


6. 『Python 數學建模 @ Youcans』系列計劃

近年來,學習 Python 語言的人越來越多,使用 Python語言學習數學建模、參加數模競賽的同學也越來越多。但是,關於 Python 語言數學建模的書籍、教程仍然比較少,並且與小白的需求存在差距:老師講的很精彩,我聽的很激動,下來還是不會用。

這正是本系列『Python 數學建模 @ Youcans』寫作的初衷:

  • 面向數模小白 & Python 小白,從零開始,按照 Matlab 數學建模培訓的框架體系,系統講解 Python 語言的實現方案;
  • 著重講演算法的使用過程,例程儘量直接選用 Matlab 培訓教程中的例題;
  • 講演算法思想,不講演算法內容;講演算法應用條件,不講演算法實現過程;
  • 開源工具包能實現的演算法,不要自己造輪子;
  • 儘量用最簡單易懂的程式結構,哪怕有些笨拙;
  • 所有例程都是除錯執行通過,帶有不厭其煩的詳細註釋、說明和執行結果。

本系列『Python 數學建模 @ Youcans』計劃 50篇,系統解決數學建模學習所需的技術和演算法。
此前寫過一些專題的『Python 數模筆記』,就不再更新了,部分內容將根據本系列的章節重新整理。

感謝大家的支援,希望學習 Python 數學建模的同學可以關注收藏本系列。

最後,其實我也是一名 Python 小白。



版權說明:

歡迎關注『Python 數學建模 @ Youcans』 原創作品

CSDN 原創作品,轉載必須標註原文連結。

Copyright 2021 Youcans, XUPT

Crated:2021-05-26


歡迎關注『Python 數學建模 @ Youcans』系列,每週持續更新

Python數學建模-01.新手必讀
Python數學建模-02.資料匯入
Python數模筆記-PuLP庫(1)線性規劃入門
Python數模筆記-PuLP庫(2)線性規劃進階
Python數模筆記-PuLP庫(3)線性規劃例項
Python數模筆記-StatsModels 統計迴歸(1)簡介
Python數模筆記-StatsModels 統計迴歸(2)線性迴歸
Python數模筆記-StatsModels 統計迴歸(3)模型資料的準備
Python數模筆記-StatsModels 統計迴歸(4)視覺化
Python數模筆記-Sklearn (1)介紹
Python數模筆記-Sklearn (2)聚類分析
Python數模筆記-Sklearn (3)主成分分析
Python數模筆記-Sklearn (4)線性迴歸
Python數模筆記-Sklearn (5)支援向量機
Python數模筆記-模擬退火演算法(1)多變數函式優化
Python數模筆記-模擬退火演算法(2)約束條件的處理
Python數模筆記-模擬退火演算法(3)整數規劃問題
Python數模筆記-模擬退火演算法(4)旅行商問題
Python數模筆記-NetworkX(1)圖的操作
Python數模筆記-NetworkX(2)最短路徑
Python數模筆記-NetworkX(3)條件最短路徑
Python數模筆記-NetworkX(4)最小生成樹
Python數模筆記-NetworkX(5)關鍵路徑法


相關文章