2017數(shù)學(xué)建模b題優(yōu)秀論文(2)
2017數(shù)學(xué)建模b題優(yōu)秀論文篇3
淺析MATLAB軟件在數(shù)學(xué)建模中的應(yīng)用
摘要: 本文首先介紹了MATLAB軟件的相關(guān)特點,然后對數(shù)學(xué)建模的概念及其建模過程做出介紹,其次以一個全國數(shù)學(xué)建模比賽的實例介紹了開發(fā)基于MATLAB的數(shù)學(xué)建模詳細(xì)步驟。實踐證明將MATLAB軟件用于數(shù)學(xué)建模可以提高數(shù)學(xué)建模的效率和質(zhì)量,豐富了數(shù)學(xué)建模的方法和手段,同時對數(shù)學(xué)課程的運用具有重要的教學(xué)意義。
關(guān)鍵詞: MATLAB軟件;數(shù)學(xué)建模;數(shù)學(xué)模型
0 引言
數(shù)學(xué)軟件就是專門用來進行數(shù)學(xué)運算、數(shù)學(xué)規(guī)劃、統(tǒng)計運算、工程運算、繪制數(shù)學(xué)圖形或制作數(shù)學(xué)動畫的軟件。其中常用的數(shù)學(xué)軟件有:MATLAB、Mathematica、Maple、SAGE等;目前在科技和工程界中使用的比較多的數(shù)學(xué)軟件主要是MATLAB,其應(yīng)用的非常廣泛。MATLAB是1984年由美國MathWorks公司推出的數(shù)學(xué)軟件,其優(yōu)秀的數(shù)值計算能力和數(shù)據(jù)可視化能力使它很快在數(shù)學(xué)軟件中脫穎而出,歷經(jīng)十幾年發(fā)展和競爭,MATLAB現(xiàn)已成為適合多學(xué)科、多種工作平臺的功能強大的大型科技應(yīng)用軟件。
MATLAB主要面對科學(xué)計算、可視化及交互式程序設(shè)計的高科技計算環(huán)境。它將數(shù)值分析、矩陣計算、科學(xué)數(shù)據(jù)可視化及非線性動態(tài)系統(tǒng)的建模和仿真等諸多強大功能集成在一個易于使用的視窗環(huán)境中,為科學(xué)研究、工程設(shè)計及必須進行有效數(shù)值計算的眾多科學(xué)領(lǐng)域提供了一種全面的解決方案,并在很大程度上擺脫了傳統(tǒng)的非交互式程序設(shè)計語言,代表了當(dāng)今國際科學(xué)計算軟件的先進水平。MATLAB經(jīng)過三十多年的研究和不斷完善,現(xiàn)已成為國際上最流行的科學(xué)計算與工程計算軟件工具之一,現(xiàn)在MATLAB已經(jīng)不僅僅是最初“矩陣實驗室”了,它已發(fā)展成為一種具有廣泛應(yīng)用前景的、全新的計算機高級編程語言。
1 MATLAB的語言特點
1.1 語言簡潔緊湊,程序設(shè)計自由度大,可移植性好
MATLAB是一個高級的矩陣列語言,它包含控制語句、函數(shù)、數(shù)據(jù)結(jié)構(gòu)、輸入輸出和面向?qū)ο缶幊烫攸c。MATLAB以矩陣為基礎(chǔ),不需要預(yù)先定義變量矩陣(包括數(shù)組)的維數(shù),可以方便地進行矩陣的算術(shù)運算、關(guān)系運算和邏輯運算等。而且MATLAB有特殊矩陣專門的庫函數(shù),可以高效地進行信號處理、圖像處理、控制處理等問題。
1.2 用戶使用方便 MATLAB中以復(fù)數(shù)矩陣或數(shù)組作為基本編程單元,使得矩陣操作變得輕而易舉。另外MATLAB語句功能強大,一條語句往往相當(dāng)于其他高級語言中的幾十條、幾百條甚至幾千語句,而且MATLAB中提供了非常多的功能函數(shù),從而使得用戶使用起來非常方便。
1.3 方便的繪圖功能 MATLAB的繪圖是十分方便的,它有一系列繪圖函數(shù),例如線性坐標(biāo)、對數(shù)坐標(biāo)、半對數(shù)坐標(biāo)及極坐標(biāo),均只需要調(diào)用不同的繪圖函數(shù),在圖上標(biāo)出圖題、XY軸標(biāo)注,網(wǎng)絡(luò)線的繪制也只需要調(diào)用相應(yīng)的命令,簡單易行。另外,在調(diào)用繪圖函數(shù)時調(diào)整自變量可繪出不變顏色的點、線、復(fù)線或多重線。這種為科學(xué)研究著想的設(shè)計是通用的編程語言所不能及的。
1.4 擴充能力強,交互性好 高版本的MATLAB語言有豐富的庫函數(shù),在進行復(fù)雜的數(shù)序運算時可以直接調(diào)用,而且MATLAB的庫函數(shù)同用戶文件在形成上一樣,所以用戶文件也可作為MATLAB的庫函數(shù)來調(diào)。因而,用戶可以根據(jù)自己的需要方便地建立和擴充新的庫函數(shù),以便提高MATLAB的使用效率和擴充它的功能。另外,為了充分利用FORTRAN、C等語言的資源,用戶可以通過混合編程,方便地調(diào)用有關(guān)的FORTRAN、C語言的子程序,還可以在FORTRAN、C語言中方便地使用MATLAB的數(shù)值計算功能。這樣良好的交互性使用程序使用以前編寫過的程序,減少重復(fù)性工作,也使現(xiàn)在編寫的程序具有重復(fù)利用的價值。
1.5 編程效率高 MATLAB是一種面向科學(xué)與工程計算的高級語言,允許使用數(shù)學(xué)形式的語言編程序,而且比BASIC、FORTRAN等語言更加接近我們書寫計算公式的思維方式。用MATLAB編寫程序猶如在演算紙上排列出公式與求解問題。因此,MATLAB語言也可通俗地稱為演算紙式科學(xué)算法語言。由于它編寫簡單,所以編程效率高,易學(xué)易懂。
2 數(shù)學(xué)建模簡介
2.1 數(shù)學(xué)模型與數(shù)學(xué)建模 當(dāng)我們研究一個問題時需要從定量的角度分析和研究,人們就要在深入調(diào)查研究、了解對象信息、作出簡化假設(shè)、分析內(nèi)在規(guī)律等工作的基礎(chǔ)上,用數(shù)學(xué)符號和語言,把它表述為數(shù)學(xué)式子,也是數(shù)學(xué)模型,所以數(shù)學(xué)模型是對于一個特定的對象為了一個特定的目標(biāo),根據(jù)特有的內(nèi)在規(guī)律,做出一些必要的簡化假設(shè),運用適當(dāng)?shù)臄?shù)學(xué)工具,得到一個數(shù)學(xué)結(jié)構(gòu)。數(shù)學(xué)結(jié)構(gòu)可以是數(shù)學(xué)公式、算法、表格、圖示等。數(shù)學(xué)建模就是建立數(shù)學(xué)模型,建立數(shù)學(xué)模型的過程就是數(shù)學(xué)建模的過程。數(shù)學(xué)建模的語言和方法,通過抽象、簡化建立能近似刻化并“解決”實際問題的一種強有力的數(shù)學(xué)手段。 建立數(shù)學(xué)模型的過程是把錯綜復(fù)雜的實際問題簡化、抽象為合理的數(shù)學(xué)模型的過程。要通過調(diào)查、收集原始信息,觀察和研究實際對象的固有特征和內(nèi)在規(guī)律,抓住問題的主要矛盾,建立起反映實際問題的數(shù)量關(guān)系,然后利用數(shù)學(xué)的理論和方法去分析和解決問題。這需要深厚扎實的數(shù)學(xué)基礎(chǔ),敏銳的想象力和洞察力,對實際問題的濃厚興趣和廣博的知識面。數(shù)學(xué)建模是聯(lián)系實際問題與數(shù)學(xué)的橋梁,是數(shù)學(xué)在各個領(lǐng)域應(yīng)用的媒介,數(shù)學(xué)建模的作用越來越受到數(shù)學(xué)工程界的普遍重視,它已成為現(xiàn)代科技工作者必備的重要能力之一。
2.2 數(shù)學(xué)建模的一般步驟 下面結(jié)合數(shù)學(xué)建模的幾個環(huán)節(jié)和數(shù)學(xué)建模實例,介紹MATLAB在數(shù)學(xué)建模中的應(yīng)用。數(shù)學(xué)建模的過程分成如下幾個階段:①模型準(zhǔn)備:了解所研究的問題的實際背景,明確其實際意義,掌握對象的各種信息,從而確定使用何種數(shù)學(xué)方法與建立何種數(shù)學(xué)模型,然后用數(shù)學(xué)的語言來描述問題。②模型假設(shè):為了利用數(shù)學(xué)方法,通常要對問題做必要的、合理的假設(shè),即根據(jù)實際對象的特征和建模的目的,對問題進行必要的簡化,并用精確語言提出一些當(dāng)前的假設(shè)。③模型建立:根據(jù)所做的假設(shè)以及事物之間的聯(lián)系,在假設(shè)基礎(chǔ)上,利用適當(dāng)?shù)臄?shù)學(xué)工具來刻畫各變量之間的數(shù)學(xué)關(guān)系,建立相應(yīng)的數(shù)學(xué)結(jié)構(gòu)。④模型求解:利用已知的數(shù)學(xué)方法來求解上一步所得到的數(shù)學(xué)問題,即利用獲取的數(shù)據(jù)資料,對模型的所有參數(shù)做出計算。⑤模型分析:對所得的結(jié)果進行數(shù)學(xué)上的分析,特別要注意數(shù)據(jù)變化時所得結(jié)果是否穩(wěn)定。⑥模型檢驗:將模型分析結(jié)果與實際情形進行比較,然后可根據(jù)情況對模型進行修正,使其符合程度更高,具有更好的合理性和適用性。⑦模型應(yīng)用:應(yīng)用方式因問題的性質(zhì)和建模的目的而異。
3 建模實例
2009年全國大學(xué)生數(shù)學(xué)建模競賽A題為某服務(wù)公司承辦了一次全國性的會議,會議籌備組要為與會代表預(yù)訂客館客房,租借會議室,并租用客車接送代表?;I備組經(jīng)過實地考察,篩選出10家賓館作為備選,題目給出客房及會議室的規(guī)格、間數(shù)、價格等數(shù)據(jù),需要先預(yù)測與會代表的人數(shù)。預(yù)測的依據(jù)是代表回執(zhí)數(shù)量及往屆的與會人員數(shù)據(jù)。已知本屆會議的回執(zhí)情況(見表1)及以往幾屆會議代表回執(zhí)和與會情況(見表2)要解決的問題是:根據(jù)這些數(shù)據(jù)預(yù)測本屆與會代表人數(shù)。
首先根據(jù)題目給出的數(shù)據(jù)我們知道本屆發(fā)來回執(zhí)的代表人數(shù)為x=75,由于發(fā)來回執(zhí)但未與會的代表人數(shù)x1與發(fā)來回執(zhí)的代表人數(shù)x之間存有一定的關(guān)系,所以我們通過題目給出的以往數(shù)據(jù)利用最小二乘法擬合出相應(yīng)曲線,然后得到發(fā)來回執(zhí)但未與會的代表人數(shù)。給出MATLAB
程序:
x=[315 356 408 711];
y=[89 115 121 213];
p2=polyfit(x,y,2)
poly2str(p2,'x')
x1=300:800;
y2=polyval(p2,x1);
plot(x,y,'rp',x1,y2)
z=polyval(a,755)
二次擬合曲線為:y=-0.1 x^2+446.3x-33870.4,可得今年發(fā)了回執(zhí)但未與會的代表人數(shù)為225(人)。
其次由于未發(fā)來回執(zhí)而與會的代表人數(shù)x2與發(fā)來回執(zhí)的代表人數(shù)之間的影響關(guān)系不大,需要使用題目給出的數(shù)據(jù)單獨進行預(yù)測,由于題目給出的數(shù)據(jù)不多,我們采用對數(shù)據(jù)量要求不大但精度較高的灰色預(yù)測模型GM(1,1)來進行預(yù)測。根據(jù)GM(1,1)模型編寫出的MATLAB程序如下:
function [ px0,ab,rel ] =gm11( x0_number )
if nargin==1
number=max(size(x0));
end
n=max(size(x0));
x1=zeros(size(x0));
for k=1:n
for i=1:k
x1(k)=x1(k)+x0(i);
end
end
z=zeros(size(x0));
for k=2:n
z(k)=0.5*(x1(k)+x1(k-1));
end
y=x0';y(1)=[];b(;,1)=-z';b(;,2)=1;b(1,:)=[];
ab=inv(b'*b)*b'*y;
a=ab(1); b=ab(2);px0(1)=x0(1);
for k=1:number-1
px0(k+1)=(1-exp(a))*(x0(1)-b/a)*exp(-a*k);
end
temp=px0(1:n);
x0;
temp=(temp-x0)./x0;
temp(1)=[];
temp=abs(temp);
rel=sum(temp)/(n-1)*100;
由以上過程我們可以得到本屆大會代表到會情況如表3。
4 結(jié)論
通過以上模型的求解過程可以看出,MATLAB軟件在解決復(fù)雜的數(shù)學(xué)建模問題時具有方便、快捷、易學(xué)易用的特點,它的強大功能在許多領(lǐng)域有著其它軟件無法比擬的優(yōu)勢。將其應(yīng)用于數(shù)學(xué)建模的分析和求解計算過程必將大大推進建模的進程,起到事半功倍的效果。
參考文獻:
[1]徐秀華.Matlab軟件在數(shù)學(xué)建模中的應(yīng)用[J].科技與生活,2010(13).
[2]于潤偉.Matlab基礎(chǔ)及應(yīng)用[M].機械工業(yè)出版社,2010.
[3]吳新華.Matlab軟件在數(shù)學(xué)中的應(yīng)用[J].萍鄉(xiāng)高等專科學(xué)校學(xué)報,2012(6).
猜你喜歡:
1.2017年數(shù)學(xué)建模優(yōu)秀論文