沙元霞,郭 爽
(大慶師范學(xué)院數(shù)學(xué)科學(xué)學(xué)院,黑龍江大慶 163712)
近幾十年來(lái),數(shù)學(xué)科學(xué)在各領(lǐng)域扮演著越來(lái)越重要的角色。數(shù)學(xué)建模以及相關(guān)計(jì)算逐漸成為各工程領(lǐng)域中的關(guān)鍵工具,數(shù)學(xué)技術(shù)作為數(shù)學(xué)與計(jì)算機(jī)的結(jié)合,已經(jīng)成為現(xiàn)代高新技術(shù)的一個(gè)重要組成部分[1]。Matlab作為一款功能和規(guī)模都比其他數(shù)學(xué)軟件強(qiáng)大的數(shù)學(xué)軟件,能夠非常方便、快捷、高效地解決數(shù)學(xué)建模中所涉及的眾多實(shí)際問(wèn)題[2]。本文針對(duì)數(shù)學(xué)建模過(guò)程中常出現(xiàn)的一些難點(diǎn)問(wèn)題,提出了使用Matlab軟件進(jìn)行難點(diǎn)處理的一些對(duì)策和方法。
數(shù)學(xué)建模主要步驟:(1)根據(jù)研究對(duì)象的特點(diǎn),確定建模的方法;(2)對(duì)資料進(jìn)行分析,提出合理的必要的假設(shè);(3)根據(jù)假設(shè)以及題目目的,建立數(shù)學(xué)模型;(4)求解模型并進(jìn)行誤差分析和最優(yōu)化決策。
通過(guò)多年的數(shù)學(xué)建模課程教學(xué)和建模競(jìng)賽輔導(dǎo),我們看到在建模過(guò)程中,存在很多采用傳統(tǒng)數(shù)學(xué)方法無(wú)法解決的難點(diǎn)問(wèn)題??偨Y(jié)為以下四個(gè)方面:
難點(diǎn)1:在模型求解步驟中,很多時(shí)候需要求出模型的數(shù)值解或近似解,這是困擾絕大多數(shù)建模者的真正難點(diǎn)所在。因?yàn)槭聦?shí)上,對(duì)具體的生產(chǎn)實(shí)際問(wèn)題建模時(shí),構(gòu)造的數(shù)學(xué)關(guān)系式經(jīng)常是十分復(fù)雜的,如“求高階的微分方程的數(shù)值解”,若采用傳統(tǒng)的“龍格-庫(kù)塔算法”手工求解,其計(jì)算過(guò)程是極其復(fù)雜的,并且難以求出較為準(zhǔn)確的數(shù)值解,更何況這些算法即使是數(shù)學(xué)專(zhuān)業(yè)的高年級(jí)的學(xué)生才接觸一些皮毛。若是數(shù)學(xué)計(jì)算能力稍弱一點(diǎn)的學(xué)生,在模型求解這一塊將很難進(jìn)行下去。試想,若數(shù)值解無(wú)法求得,又怎么得到數(shù)據(jù)點(diǎn)?又怎么作圖分析呢?
難點(diǎn)2:有時(shí)模型所求的并非是一個(gè)解析解,而是要求建模者對(duì)問(wèn)題發(fā)展趨勢(shì)進(jìn)行預(yù)測(cè)。建模過(guò)程中經(jīng)常需要建立若干變量之間的關(guān)系,往往無(wú)法通過(guò)合理的假設(shè),或無(wú)法通過(guò)定理、原理,經(jīng)過(guò)有機(jī)分析而得到,只能借助于所得的數(shù)據(jù)和數(shù)據(jù)所含信息,選擇適當(dāng)數(shù)學(xué)形式擬合變量之間的關(guān)系,從而揭示變量的內(nèi)在聯(lián)系,這一過(guò)程不得不依靠Matlab一類(lèi)數(shù)學(xué)軟件。
難點(diǎn)3:面對(duì)優(yōu)化問(wèn)題時(shí),簡(jiǎn)單優(yōu)化問(wèn)題是容易解決的,但對(duì)于復(fù)雜的優(yōu)化問(wèn)題、大規(guī)模的計(jì)算、一般情形的推廣卻是棘手的。例如:求兩點(diǎn)間的最短路可算,但92個(gè)點(diǎn)中求任意兩點(diǎn)的最短路再進(jìn)行比較卻是不可算的。這正是2011年全國(guó)建模競(jìng)賽B題所需求解的部分內(nèi)容,短短的建模競(jìng)賽三天時(shí)間都不夠計(jì)算所用。對(duì)于這種一般情形的、大規(guī)模的、復(fù)雜的優(yōu)化問(wèn)題,除了借助于數(shù)學(xué)軟件編程解決之外別無(wú)他法。
難點(diǎn)4:有的建模問(wèn)題中數(shù)據(jù)多,并且雜亂無(wú)章,以致于對(duì)數(shù)據(jù)資料分析時(shí)無(wú)法快速高效地?fù)芙z抽繭,觀(guān)察和研究出實(shí)際對(duì)象的固有特征和內(nèi)在規(guī)律,抓住問(wèn)題的主要矛盾,建立起反映實(shí)際問(wèn)題的數(shù)量關(guān)系。例如2011年5月的全國(guó)大學(xué)生數(shù)學(xué)建模夏令營(yíng)的A題。
Matlab包含計(jì)算矩陣、分析數(shù)值、可視化科學(xué)數(shù)據(jù)以及非線(xiàn)性動(dòng)態(tài)系統(tǒng)的建模和仿真等諸多強(qiáng)大功能,它能為其他工程領(lǐng)域必須進(jìn)行有效數(shù)值計(jì)算提供了一種全面的解決方案,代表了當(dāng)今國(guó)際科學(xué)計(jì)算軟件的先進(jìn)水平。
計(jì)算是數(shù)學(xué)活動(dòng)(包括數(shù)學(xué)建模)的一個(gè)重要組成部分,能借助計(jì)算機(jī)來(lái)解決較為復(fù)雜的數(shù)學(xué)計(jì)算問(wèn)題可以為建模者節(jié)省許多寶貴的時(shí)間,將其從繁雜的計(jì)算中解放出來(lái),以便能夠探究計(jì)算背后更為深?yuàn)W的數(shù)學(xué)規(guī)律。例如求微分方程近似解,在技術(shù)上求解有一定困難或者在初等數(shù)學(xué)范圍內(nèi)解不存在,此時(shí)應(yīng)用MATLAB軟件求出的近似解或許是一種有效的辦法。
當(dāng)建模時(shí)需要進(jìn)行涉及微積分計(jì)算、矩陣計(jì)算、微分方程計(jì)算、概率統(tǒng)計(jì)計(jì)算和處理這四方面科學(xué)計(jì)算時(shí),建議建模者首先考慮采用Matlab軟件的強(qiáng)大計(jì)算功能。
例1求解微分方程組(Lorenz模型)[4]
細(xì)胞與細(xì)胞外基質(zhì)形成動(dòng)態(tài)力學(xué)環(huán)境,細(xì)胞內(nèi)肌動(dòng)-肌球蛋白收縮產(chǎn)生力,通過(guò)黏著斑傳遞給細(xì)胞外基質(zhì),在黏著斑處產(chǎn)生細(xì)胞牽引力[1-3]。細(xì)胞與細(xì)胞外基質(zhì)之間的力學(xué)作用被認(rèn)為是影響細(xì)胞黏附、遷移、增殖和凋亡等生物過(guò)程的關(guān)鍵因素[4-10]。研究細(xì)胞在彈性基底上產(chǎn)生的動(dòng)態(tài)牽引力對(duì)于了解細(xì)胞如何感知周?chē)h(huán)境力學(xué)性能變化具有重要的意義,因此,測(cè)量細(xì)胞牽引力是定量研究細(xì)胞遷移、收縮和分裂的重要方法。細(xì)胞牽引力非常小,大約為皮牛頓到納牛頓量級(jí),發(fā)生在納米到微米尺度上[11]。
該方程是非線(xiàn)性微分方程,所以不存在解析解,只能用數(shù)值解法求解。設(shè)其中參數(shù)的值分別為,,初值設(shè)為,MATLAB程序如下:
運(yùn)行該方程數(shù)值解如圖1,2所示:
圖1 狀態(tài)變量時(shí)間圖
圖2 相空間三維圖
實(shí)際建模時(shí),絕大多數(shù)情況下并不需要求出某個(gè)具體的數(shù)值解,而是想看看隨著時(shí)間的變化,事情的發(fā)展趨勢(shì)是怎樣的,即對(duì)實(shí)際問(wèn)題作預(yù)測(cè)。此時(shí)作圖分析是最好的手段。而Matlab恰恰具有強(qiáng)大的圖形處理能力,它提供了豐富的對(duì)二維和三維圖形進(jìn)行處理的函數(shù),尤其是其擁有大量的能夠?qū)Ψ彪s數(shù)據(jù)進(jìn)行綜合分析并實(shí)現(xiàn)數(shù)據(jù)可視化的函數(shù),從而擴(kuò)充了Matlab語(yǔ)言在數(shù)學(xué)建模的應(yīng)用,使得問(wèn)題更加確,也更易揭示問(wèn)題的本質(zhì)。
例2 07年華中數(shù)學(xué)建模競(jìng)賽[3]中就有用曲面圖表現(xiàn)函數(shù)z=x^2+y^2,若用Matlab便可輕松編寫(xiě)程序:
得到圖3:
圖3 曲面圖
通過(guò)例2可以看到,應(yīng)用Matlab軟件不僅可以繪制直觀(guān)、形象、有利于模型分析的圖形,而且調(diào)用命令格式簡(jiǎn)單,易于掌握。
例3:為迎接2008年奧運(yùn)會(huì),滿(mǎn)足公眾查詢(xún)公交線(xiàn)路的選擇問(wèn)題,某公司準(zhǔn)備研制開(kāi)發(fā)一個(gè)計(jì)算機(jī)系統(tǒng)解決公交線(xiàn)路選擇問(wèn)題。
例3為2007年的高教杯數(shù)學(xué)建模競(jìng)賽試題,這個(gè)模型的主要目的是線(xiàn)路選擇的模型與算法。需要解決的問(wèn)題是:對(duì)任意給出的兩公交汽車(chē)站點(diǎn)之間線(xiàn)路(只考慮公交汽車(chē)線(xiàn)路),選擇問(wèn)題的一般數(shù)學(xué)模型與算法。求出以下6對(duì)起始站到終到站最佳路線(xiàn)。
這種規(guī)劃模型雖可用單純型法、匈牙利法手工求解,但較為繁瑣,計(jì)算量巨大而且耗費(fèi)大量時(shí)間。而Matlab各種工具箱(TOOLBOX)就可以方便、快捷地使用復(fù)雜的理論公式,免除了自己編寫(xiě)復(fù)雜而龐大的算法程序的困擾。尤其是在做數(shù)學(xué)推導(dǎo)和理論驗(yàn)證時(shí),有了這些功能豐富的工具箱,問(wèn)題就變得十分簡(jiǎn)單。
無(wú)論是從事數(shù)據(jù)整理與計(jì)算結(jié)果分析的科研人員還是參加建模競(jìng)賽的大學(xué)生,都要面對(duì)難點(diǎn)4。面對(duì)一大堆離散數(shù)據(jù),為了獲得更為豐富的信息,找到數(shù)據(jù)的內(nèi)在關(guān)系,就必須對(duì)數(shù)據(jù)進(jìn)行插值。數(shù)學(xué)建模者能快速而輕易地從中提取有意義的特征和結(jié)果,探索、發(fā)現(xiàn)規(guī)律,進(jìn)而較快地找到數(shù)學(xué)建模的方法。在建立數(shù)學(xué)模型的過(guò)程中,變量間未必都有線(xiàn)性關(guān)系,如服藥后血藥濃度與時(shí)間的關(guān)系;疾病療效與療程長(zhǎng)短的關(guān)系;毒物劑量與致死率的關(guān)系等等常呈非線(xiàn)性曲線(xiàn)關(guān)系。即使建模者手中有大量的數(shù)據(jù),也很難從中抽象出具體函數(shù)關(guān)系。這種關(guān)系的表現(xiàn),莫過(guò)于圖形手段,所以再使用擬合的方法,尋找出滿(mǎn)足數(shù)據(jù)點(diǎn)上擬合值與數(shù)據(jù)值差的平方和最小的那條曲線(xiàn)。Matlab中的曲線(xiàn)擬合(curve fitting)就是指選擇適當(dāng)?shù)那€(xiàn)類(lèi)型來(lái)擬合觀(guān)測(cè)數(shù)據(jù),并用擬合的曲線(xiàn)方程分析兩變量間的關(guān)系??梢?jiàn),Matlab軟件恰恰有很強(qiáng)的解決常見(jiàn)擬合問(wèn)題的能力。
例4:2009年全國(guó)數(shù)學(xué)建模競(jìng)賽題:混凝土的抗壓強(qiáng)度隨養(yǎng)護(hù)時(shí)間的延長(zhǎng)而增加,現(xiàn)將一批混凝土作成12個(gè)試塊,記錄了養(yǎng)護(hù)日期x(日)及抗壓強(qiáng)度y(kg/cm2)的數(shù)據(jù):
對(duì)于這種情況,我們需要用Matlab作輔助建立非線(xiàn)性回歸模型,并對(duì)得到的模型和系數(shù)進(jìn)行檢驗(yàn)。(注明:此題中的+r代表加上一個(gè)[-0.5,0.5]之間的隨機(jī)數(shù))
模型程序?yàn)椋?/p>
運(yùn)行并輸出結(jié)果:
有了這些參數(shù),就可以得到非線(xiàn)性函數(shù):
這樣的非線(xiàn)性函數(shù)不僅精確,而且求解更加容易。如果能有圖像加以輔助就更好了,應(yīng)用Matlab軟件得到下面圖形:
圖4 輔助圖
由上述四方面可以看出Matlab在處理數(shù)學(xué)建模中難點(diǎn)的巨大優(yōu)勢(shì),無(wú)論是數(shù)學(xué)模型的建立階段,還是模型的求解、分析階段,Matlab都有其他語(yǔ)言無(wú)法比擬的方便、快捷、高效的運(yùn)用,能使數(shù)學(xué)建模者將主要精力放在問(wèn)題的分析、模型的建立、算法研究等方面,既節(jié)約了時(shí)間,大大提高了數(shù)學(xué)建模的效率,又有利于提高數(shù)學(xué)建模的質(zhì)量和解決實(shí)際問(wèn)題的能力,豐富了數(shù)學(xué)建模的方法和手段,有力地促進(jìn)了問(wèn)題的解決。
[1]姜啟源.數(shù)學(xué)模型[M].2版,北京:高等教育出版社,1993.
[2]蕭樹(shù)鐵,姜啟源.數(shù)學(xué)實(shí)驗(yàn)[M].北京:高等教育出版社,1993.
[3]王沫然.MATLAB6.0與科學(xué)計(jì)算[M].北京:電子工業(yè)出版社,2001.
[4]薛定宇,陳陽(yáng)泉.高等應(yīng)用數(shù)學(xué)問(wèn)題的MATLAB求解[M].北京:清華大學(xué)出版社,2004.
長(zhǎng)春師范大學(xué)學(xué)報(bào)2012年3期