MATLAB是強大的科學計算軟件,下面介紹一下這款軟件強大而有特色的用途。
矩陣運算
MTALAB最強的項目就是矩陣運算,計算效率遠遠高于C/C++,是常用的工程計算線性方程組的計算軟件。
MTALB強大的作圖功能
MTALAB具有強大的3D繪圖功能,函數調用簡單,并且很多功能都以工具箱的方式可供應用,即使是沒有接觸過MATLAB,學會繪制3D圖,也很容易
數據擬合功能
MATLAB具有強大數據分析擬合能力,常用的擬合工具箱CFTOOL
數值積分微分運算
MATLAB內部有現成的一些常用的數值計算方法,例如牛頓法、高斯法等,同時MATLAB也可以進行符號運算,進行符號積分以及微分運算,這是讓人振奮的功能!
MATLAB還可以進行仿真實驗,以及圖像處理等等專業功能,希望以上經驗能夠有助于你了解學習MATLAB 。
Matlab數學建模應用例題
僅舉一些運用MATLAB的例子,這些問題在數學建模中時常遇到,希望能幫助同學們在短時間內方便、快捷的使用MATLAB 解決數學建模中的問題,并善用這一工具。 常用控制命令:
clc:%清屏; clear:%清變量; save:%保存變量; load:%導入變量
一、利用公式直接進行賦值計算
本金P以每年n次,每次i%的增值率(n與i的乘積為每年增值額的百分比)增加,當增加到r×P 時所花費的時間T為:(利用復利計息公式可得到下式)
?。?/p>
01.01ln(ln)01.01(inr
TiPPrnT??
?。?2,5.0,2???nir)
MATLAB 的表達形式及結果如下: 》》 r=2;i=0.5;n=12; %變量賦值 》》 T=log(r)/(n*log(1+0.01*i)) 計算結果顯示為:
T = 11.5813
即所花費的時間為T=11.5813 年。
分析:上面的問題是一個利用公式直接進行賦值計算問題,實際中若變量在某個范圍變化取很多值時,使用MATLAB,將倍感方便,輕松得到結果,其繪圖功能還能將結果輕松的顯示出來,變量之間的變化規律將一目了然。
若r在[1,9]變化,i在[0.5,3.5]變化;我們將MATLAB的表達式作如下改動,結果如圖1。 r=1:0.5:9; i=0.5:0.5:3.5; n=12;
p=1./(n*log(1+0.01*i)); T=log(r‘)*p; plot(r,T)
xlabel(’r‘) %給x軸加標題 ylabel(’T‘) %給y軸加標題
q=ones(1,length(i));
text(7*q-0.2,[T(14,1:5)+0.5,T(14,6)-0.1,T(14,7)-0.9],num2str(i’))
從圖1中既可以看到T隨r的變化規律,而且還能看到i的不同取值對T—r曲線的影響(圖中的六條曲線分別代表i的不同取值)。
二、方程組的求解
求解下面的方程組:??????????????12
29447535
.768321
321321xxxxxxxxx
分析:對于線性方程組求解,常用線性代數的方法,把方程組轉化為矩陣進行計算。
bax?bax1
???bax??
MATLAB 的表達形式及結果如下: 》》 a=[8 1 6;3 5 7;4 9 2]; %建立系數矩陣 》》 b=[7.5;4;12]; %建立常數項矩陣 》》 x=a %求方程組的解 計算結果顯示為: x =
1.2931 0.8972 -0.6236
三、數據擬合與二維繪圖
在數學建模競賽中,我們常會遇到這種數據表格問題,如果我們僅憑眼睛觀察,很難看到其中的規律,也就更難寫出有效的數學表達式從而建立數學模型。因此可以利用MATLAB的擬合函數, 即polyfit() 函數,并結合MATLAB的繪圖功能(利用plot()函數),得到直觀的表示。
例:在化學反應中,為研究某化合物的濃度隨時間的變化規律,測得一組數據如下表:
分析:
MATLAB 的表達形式如下:
t=[1:16]; %數據輸入
y=[4 6.4 8 8.4 9.28 9.5 9.7 9.86 10 10.2 10.32 10.42 10.5 10.55 10.58 10.6]; plot(t,y,‘o’) %畫散點圖 p=polyfit(t,y,2) %二次多項式擬合 hold on
xi=linspace(0,16,160); %在[0,16]等間距取160 個點 yi=polyval(p,xi); %由擬合得到的多項式及xi,確定yi plot(xi,yi) %畫擬合曲線圖 執行程序得到圖2
顯示的結果為 p=
-0.0445 1.0711 4.3252
p的值表示二階擬合得到的多項式為:y= -0.0445t2
+1.0711t+ 4.3252
下面是用lsqcurvefit()函數,即最小二乘擬合方法的Matlab表達: t=[1:16];
y=[4 6.4 8 8.4 9.28 9.5 9.7 9.86 10 10.2 10.32 10.42 10.5 10.55 10.58 10.6]; x0=[0.1,0.1,0.1];
zuixiao=inline(‘x(1)*t.^2+x(2)*t+x(3)’,‘x’,‘t’); x=lsqcurvefit(zuixiao,x0,t,y) %利用最小二乘擬合 其顯示的結果為: x =
-0.0445 1.0711 4.3252
可以看出其得到的結果與polyfit函數的結果相同。這說明在多項式擬合問題上這兩個函數的效果是相同的。
下面的一個例子將體現lsqcurvefit()函數的優勢。
例2: 在物理學中,為研究某種材料應力與應變的關系,測得一組數據如下表:
如果假定應力與應變有如下關系(σ為應力值,ε為應變值):ε=a+blnσ 試計算a 、b 的值。 MATLAB 的表達形式如下:
x=[925,1125,1625,2125,2625,3125,3625]; y=[0.11,0.16,0.35,0.48,0.61,0.71,0.85]; plot(x,y,‘o’)
?。踦,resid1]=polyfit(x,y,2) hold on
xi=linspace(700,3700,3000); yi=polyval(p,xi); plot(xi,yi) x0=[0.1,0.1];
fff=inline(‘a(1)+a(2)*log(x)’,‘a’,‘x’); [a,resid2]=lsqcurvefit(fff,x0,x,y) plot(xi,fff(a,xi),‘r’)
執行程序得到圖3,圖中藍色曲線為利用polyfit()函數得到的曲線,紅色曲線為利用lsqcurvefit()函數得到的曲線;
其顯示的結果為: p =
-0.0000 0.0004 -0.2266 resid1 =
R: [3x3 double] df: 4 normr: 0.0331 a =
-3.5810 0.5344 resid2 = 0.0064
其中a的值代表利用lsqcurvefit()函數得到的關系為:ε=-3.5810+0.5344σ
resid1、resid2 分別代表運用polyfit()函數、lsqcurvefit()函數得到的殘差??梢钥闯隼胠sqcurvefit()函數殘差更小,即得到了更好的擬合效果。
在數學建模的實際問題中,如果問題的機理不明,我們只能采用polyfit()函數,即多項式擬合的方法,以獲得近似的數據描述函數;但如果通過分析,可以得到一些機理,那么采用最小二乘的方法將得到更好的效果,而且得到的擬合函數也更有意義。
四、隱函數的圖形繪制
plot()只能繪制顯函數圖形,對于形如
0)sin()1ln(ln1
???????xxyyy
的復雜隱函數,很難轉化為顯函數并利用plot()函數繪制圖形,這時就可以用ezplot()函數直接繪制其曲線。 MATLAB的表達形式如下:
》》 ezplot(‘1/y-log(y)+log(-1+y)+x-sin(x)’) 執行程序得到圖5
如果是形如下面的參數方程),0(,sin3sin,cos3sin????tttyttx,同樣可以利用ezplot()函數繪制其曲線。MATLAB的表達形式如下:
》》 ezplot(‘sin(3*t)*cos(t)’,‘sin(3*t)*sin(t)’,[0,pi]) 執行程序得到圖6。
評論
查看更多