李三杰 胡玉林 王玉龍
(1.鄭州財經(jīng)學(xué)院統(tǒng)計與大數(shù)據(jù)學(xué)院,河南 鄭州450044;2.鄭州財經(jīng)學(xué)院信息工程學(xué)院,河南 鄭州 450044)
近年來,數(shù)學(xué)軟件的出現(xiàn)與應(yīng)用,為高校在數(shù)學(xué)建模中打開了一扇大門,給數(shù)學(xué)建模的各個環(huán)節(jié)帶來了極大的便利。數(shù)學(xué)建模不僅在教學(xué)領(lǐng)域中得到了廣泛應(yīng)用,而且在人才隊伍建設(shè)以及其他各個領(lǐng)域中也有著不可取代的價值。數(shù)學(xué)作為一門基礎(chǔ)學(xué)科,使用數(shù)學(xué)知識解決的實際問題的過程,在本質(zhì)上就是數(shù)學(xué)建模的過程。對一個大規(guī)模的實際問題而言,數(shù)學(xué)建模的各個環(huán)節(jié)都是非常重要的,同時也是非常困難的。傳統(tǒng)的方法就是用已有的數(shù)值方法通過高級語言編程實現(xiàn)。完全使用手動計算是不現(xiàn)實的,還可以通過借助數(shù)學(xué)軟件來完成。這樣不但要求使用者具有一定的數(shù)學(xué)修養(yǎng)和專業(yè)知識,還應(yīng)該具有較好的編程能力。因此,探討數(shù)學(xué)軟件在數(shù)學(xué)建模中的作用,對于教學(xué)研究、人才培養(yǎng)具有十分重要的價值意義。因此,探討數(shù)學(xué)軟件在數(shù)學(xué)建模中的作用,對于激發(fā)學(xué)生課外自主學(xué)習(xí)興趣,鼓勵學(xué)生自主探索數(shù)學(xué)方法在實際問題中的運用,提高學(xué)生建立數(shù)學(xué)模型和運用計算機技術(shù)解決多行業(yè)綜合復(fù)雜的社會及工程問題的創(chuàng)新應(yīng)用能力具有十分重要的價值意義。
所謂數(shù)學(xué)軟件,即制作數(shù)學(xué)動畫與圖形、實施數(shù)學(xué)運算以及運籌規(guī)劃等行為的軟件,可通過使用計算機,進行特定數(shù)學(xué)計算或者數(shù)學(xué)表述來實現(xiàn)功能。數(shù)學(xué)軟件從功能上分類可以分為通用數(shù)學(xué)軟件包和專業(yè)數(shù)學(xué)軟件包,通用數(shù)學(xué)包功能比較完備,包括各種數(shù)學(xué)、數(shù)值計算、豐富的數(shù)學(xué)函數(shù)、特殊函數(shù)、繪圖函數(shù)、用戶圖形界面交互功能,與其他軟件和語言的接口及龐大的外掛函數(shù)庫機制(工具箱)。常見的通用數(shù)學(xué)軟件包包括Matlab、Mathematica和Maple,其中Matlab以數(shù)值計算較為常見,而Mathematica和Maple以符號運算、公式推導(dǎo)較為普遍。專用數(shù)學(xué)包包括:繪圖 軟 件 類 (MathCAD、Tecplot、IDL、Surfer、Origin、SmartDraw、DSP2000); 數(shù) 值 計 算 類(Matcom、IDL、DataFit、S-Spline、Lindo、Lingo、O-Matrix);有限元計算(ANSYS、MARC、PARSTRAN、FLUENT、FlexPDE);數(shù)理 統(tǒng) 計 類(SPSS、SAS、Splus、Statistica、Minitab);數(shù) 學(xué)公式排版類(MathType、Scientific Workplace)。上述分類比較籠統(tǒng),很多軟件的功能也有交叉,受經(jīng)驗和篇幅限制,不能逐一而論。
在實際問題的建模中,由于實際問題的復(fù)雜性,直接運用數(shù)學(xué)方法和專業(yè)知識建立模型往往存在許多困難。其中一個重要的原因就是由于計算機技術(shù)和數(shù)據(jù)量獲得的不斷增加,許多大型和超大型的數(shù)據(jù)不斷地涌現(xiàn),而且所獲得的各種數(shù)據(jù)往往包含許多冗余的信息和無關(guān)的信息,要透過紛繁復(fù)雜的數(shù)據(jù)本身洞察數(shù)據(jù)之間的關(guān)聯(lián)和趨勢,從而建立好的模型描述,僅僅掌握一些必需的統(tǒng)計分析知識是不夠的,如果沒有專業(yè)的數(shù)學(xué)軟件的支持,就難以勝任。
比如,對于選拔隊員問題,其目標(biāo)是從20個隊員中選拔18人參加比賽。通常的方法是采用層次分析法來求解,需要將問題分層次進行分析,構(gòu)造層與層之間的比較矩陣與計算權(quán)重系數(shù),計算較為復(fù)雜。如果采用聚類分析的思想,則很容易得出結(jié)果。基本思想是利用K-平均算法(K-Means Clustering)將選手集合劃分為三個集合,然后根據(jù)每一組的重心(平均值的多維形式)視為劃分的標(biāo)準(zhǔn),將分別定義為優(yōu)、良、差。如果差的人數(shù)超過2人,則繼續(xù)對差的集合劃分(根據(jù)需要化為2個或者3個集合),一直做下去,就可對所有成員作一個分類。結(jié)果如表1所示。
表1 第一次聚類的分組情況
根據(jù)每一組重心的差異,定義第3組為差,其成員為b,h,i,j,對該然后對于屬于第3類集合的b,h,i,j繼續(xù)做分類,結(jié)果如表2所示。
表2 第二次聚類的分組情況
根據(jù)每一組重心的差異,定義第3組為差,淘汰成員h;定義第1組為良,包括成員i,j,對行觀察如表3所示。
表3 成員的情況
根據(jù)題目中對于指標(biāo)的選擇順序,可知,應(yīng)該淘汰成員i。由此結(jié)果可以知道:應(yīng)該淘汰成員h,i,保留其他18名成員。結(jié)果與層次分析法相同。
在此建模過程中,不需要手動進行數(shù)據(jù)的標(biāo)準(zhǔn)化等處理,直接調(diào)用S-plus軟件中的Statistics->Cluster Analysis->K-means過程,即可輕松實現(xiàn)上述過程。
這里只是利用數(shù)學(xué)軟件建模的一個簡單過程。事實上,數(shù)學(xué)軟件的輔助建模功能是非常強大的。如利用MATLAB能夠快速的對排隊服務(wù)系統(tǒng)和隨機存儲系統(tǒng)進行模擬,并給出合理的結(jié)果分析;LINGO軟件中集概念的正確使用,使得模型中各個變量之間的關(guān)系更加明確和清晰,并能幫助分析模型的可能錯誤之處;利用S-plus內(nèi)置的數(shù)據(jù)可視化和統(tǒng)計方法,使得迅速洞察大量數(shù)據(jù)之間的關(guān)系成為可能。事實上,諸多數(shù)學(xué)軟件有著強大而簡單的數(shù)據(jù)存儲、檢索功能;并且提供強大的數(shù)據(jù)可視化和多媒體功能,使得問題變得更加直觀,能更好地模擬;其智能化功能,更是隨時提醒和幫助人們。
在數(shù)學(xué)模型建立之后,必須要求解模型,計算結(jié)果,并驗證由模型得到的結(jié)果是否符合實際。在此過程中,往往需要大量的計算,不僅包括數(shù)值計算,還包括符號運算以及圖形圖像處理等。這些工作通過紙加筆的傳統(tǒng)方法幾乎無法完成,必須使用數(shù)學(xué)軟件進行求解。而數(shù)學(xué)軟件高速、高效的運算能力非常適合于數(shù)學(xué)建模中的大量的計算需要。這方面已有大量實例,如利用MATLAB求解和分析2019新型冠狀病毒SEIR模型,使用MATLAB工具箱求解BP神經(jīng)網(wǎng)絡(luò)模型,利用Mathematica進行符號運算以及求解分離變量法,利用LINGO求解基于圖論的自駕游路線設(shè)計等。這里,以S-plus進行曲線擬合為例說明。
曲線擬合的準(zhǔn)則一般為最小二乘準(zhǔn)則,多數(shù)數(shù)學(xué)軟件能夠很容易的實現(xiàn)。但是該準(zhǔn)則受到異常點的影響,往往采用魯棒的擬合方法,但實現(xiàn)起來較為困難。利用S-plus的繪圖功能,能夠快速地實現(xiàn)多種準(zhǔn)則的曲線擬合。首先選中打開的數(shù)據(jù),單擊相應(yīng)的工具欄按鈕,即可輕松實現(xiàn)最小二乘線性擬合、最小截尾二乘線性擬合,Roubust MM擬合等多種擬合方式,并直接繪出圖形,直觀簡單,還直接可以在圖形界面下直接刪除特定點做擬合。而對于一般情況下,沒有足夠信息來決定使用哪種參數(shù)方程,此時可以直接調(diào)用SPlus的非參數(shù)擬合,實現(xiàn)Kernel平滑,樣條平滑、Loess平滑等,并可以通過鼠標(biāo)及時調(diào)整帶寬來觀察平滑后的結(jié)果。
數(shù)學(xué)軟件的使用,首先要選擇適合的軟件。如此眾多的優(yōu)秀數(shù)學(xué)軟件,不可能樣樣精通,只能根據(jù)每個軟件的特點和適用的范圍,有針對性地選擇。對于絕大多數(shù)情況,應(yīng)該首選通用的MATLAB,其強大的數(shù)值計算功能和諸多幾近完美的工具箱,幾乎能夠適應(yīng)建模中的所有問題,而且在同一個平臺下,各個功能模塊之間的通信非常方便。MATLAB中也可以使用符號計算。對于專業(yè)軟件,優(yōu)化類問題首先LINGO,其內(nèi)置的建模語言能夠輕易描述復(fù)雜的數(shù)學(xué)規(guī)劃模型,甚至可以用來求解方程(組)、曲線擬合等;而對于近年的建模題目數(shù)據(jù)量較大的趨勢,必須掌握一門統(tǒng)計軟件,推薦使用S-Plus,該軟件操作簡單,可視化功能強大,兼容數(shù)據(jù)格式多,最新的統(tǒng)計方法均能及時體現(xiàn)到軟件中,使得數(shù)據(jù)的處理得心應(yīng)手。
其次,在軟件的使用過程中必須要注意到軟件畢竟是一個固定的程序,只要你能夠按照軟件的要求給出輸入,無論選擇的方法是否正確,也無論數(shù)據(jù)是否符合該算法的要求,都會得出結(jié)果,這就導(dǎo)致了很多論文中的錯誤結(jié)果。究其原因,這就造成很多人把數(shù)學(xué)軟件當(dāng)作一個黑箱,完全不關(guān)心求解的過程,不知道使用的條件和計算的原理,而只關(guān)心輸入和輸出,這就不可比避免的要出錯。所以,在使用數(shù)學(xué)軟件求解某個問題前,必須切實理解軟件求解問題所采用的算法以及算法的基本思想的基礎(chǔ)上,合理分析所得結(jié)果,才能避免盲目的套用軟件。
最后,軟件畢竟只是數(shù)學(xué)建模的輔助手段,數(shù)學(xué)建模還是應(yīng)該將重點放在運用數(shù)學(xué)方法的創(chuàng)新上,避免形成對數(shù)學(xué)軟件的依賴性。在建模過程中,不能遇到任何問題,都用軟件求解,而數(shù)學(xué)軟件所采用的算法未必就是求解該問題的最優(yōu)的算法。長期完全依賴于數(shù)學(xué)軟件,僅僅會機械的使用軟件,必然導(dǎo)致思維的僵化,創(chuàng)新精神的丟失。現(xiàn)在甚至出現(xiàn)在論文中看不到創(chuàng)作者所建立的具體的數(shù)學(xué)模型以及求解模型的算法或者流程,而只有大段的程序代碼。這是與數(shù)學(xué)建模的精神相違背的。
數(shù)學(xué)軟件是數(shù)學(xué)建模中必不可少的重要工具,在模型的建立和模型的求解中都發(fā)揮著重要的作用。只要注意數(shù)學(xué)軟件所帶來的負(fù)面影響,以嚴(yán)格謹(jǐn)慎的態(tài)度,合理的適度的使用數(shù)學(xué)軟件,就一定能夠最大限度地使數(shù)學(xué)軟件服務(wù)于數(shù)學(xué)建模,在數(shù)模競賽中收到良好的效果。