的常用應用總結_第1頁
的常用應用總結_第2頁
的常用應用總結_第3頁
的常用應用總結_第4頁
的常用應用總結_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、§7MATLAB的應用7.1 MATLAB在數(shù)值分析中的應用插值與擬合是來源于實際、又廣泛應用于實際的兩種重要方法。隨著計算機的不斷發(fā)展及計算水平的不斷提高,它們已在國民生產(chǎn)和科學研究等方面扮演著越來越重要的角色。下面對插值中分段線性插值、擬合中的最為重要的最小二乘法擬合加以介紹。分段線性插值所謂分段線性插值就是通過插值點用折線段連接起來逼近原曲線,這也是計算機繪制圖形的基本原理。實現(xiàn)分段線性插值不需編制函數(shù)程序,MATLAB自身提供了內(nèi)部函數(shù)interp1其主要用法如下:interp1(x,y,xi) 一維插值 yi=interp1(x,y,xi) 對一組點(x,y) 進行插值,計

2、算插值點xi的函數(shù)值。x為節(jié)點向量值,y為對應的節(jié)點函數(shù)值。如果y 為矩陣,則插值對y 的每一列進行,若y 的維數(shù)超出x 或 xi 的維數(shù),則返回NaN。 yi=interp1(y,xi) 此格式默認x=1:n ,n為向量y的元素個數(shù)值,或等于矩陣y的size(y,1)。 yi=interp1(x,y,xi,method) method用來指定插值的算法。默認為線性算法。其值常用的可以是如下的字符串。 nearest 線性最近項插值。 linear 線性插值。 spline 三次樣條插值。 cubic 三次插值。所有的插值方法要求x是單調(diào)的。x 也可能并非連續(xù)等距的。正弦曲線的插值示例:>

3、;> x=0:0.1:10;>> y=sin(x);>> xi=0:0.25:10;>> yi=interp1(x,y,xi);>> plot(x,y,0,xi,yi)則可以得到相應的插值曲線(讀者可自己上機實驗)。Matlab也能夠完成二維插值的運算,相應的函數(shù)為interp2,使用方法與interpl基本相同,只是輸入和輸出的參數(shù)為矩陣,對應于二維平面上的數(shù)據(jù)點,詳細的用法見Matlab聯(lián)機幫助。最小二乘法擬合在科學實驗的統(tǒng)計方法研究中,往往要從一組實驗數(shù)據(jù)中尋找出自變量x 和因變量y之間的函數(shù)關系y=f(x) 。由于觀測數(shù)據(jù)往往不夠準

4、確,因此并不要求y=f(x)經(jīng)過所有的點,而只要求在給定點上誤差按照某種標準達到最小,通常采用歐氏范數(shù)作為誤差量度的標準。這就是所謂的最小二乘法。在MATLAB中實現(xiàn)最小二乘法擬合通常采用polyfit函數(shù)進行。函數(shù)polyfit是指用一個多項式函數(shù)來對已知數(shù)據(jù)進行擬合,我們以下列數(shù)據(jù)為例介紹這個函數(shù)的用法:>> x=0:0.1:1;>> y= -0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2 為了使用polyfit,首先必須指定我們希望以多少階多項式對以上數(shù)據(jù)進行擬合,如果我們指定一階多項式,結果為線性

5、近似,通常稱為線性回歸。我們選擇二階多項式進行擬合。>> P= polyfit (x, y, 2)P=-9.8108 20.1293 -0.0317函數(shù)返回的是一個多項式系數(shù)的行向量,寫成多項式形式為:為了比較擬合結果,我們繪制兩者的圖形:>> xi=linspace (0, 1, 100); %繪圖的X-軸數(shù)據(jù)。>> Z=polyval (p, xi); %得到多項式在數(shù)據(jù)點處的值。當然,我們也可以選擇更高冪次的多項式進行擬合,如10階: >> p=polyfit (x, y, 10); >> xi=linspace (0, 1,1

6、00);>> z=ployval (p, xi);讀者可以上機繪圖進行比較,曲線在數(shù)據(jù)點附近更加接近數(shù)據(jù)點的測量值了,但從整體上來說,曲線波動比較大,并不一定適合實際使用的需要,所以在進行高階曲線擬合時,“越高越好”的觀點不一定對的。7.2 符號工具箱及其應用在數(shù)學應用中,常常需要做極限、微分、求導數(shù)等運算,MATLAB稱這些運算為符號運算。MATLAB的符號運算功能是通過調(diào)用符號運算工具箱(Symbolic Math Toolbox)內(nèi)的工具實現(xiàn),其內(nèi)核是借用Maple數(shù)學軟件的。MATLAB的符號運算工具箱包含了微積分運算、化簡和代換、解方程等幾個方面的工具,其詳細內(nèi)容可通過M

7、ATLAB系統(tǒng)的聯(lián)機幫助查閱,本節(jié)僅對它的常用功能做簡單介紹。符號變量與符號表達式MATLAB符號運算工具箱處理的對象主要是符號變量與符號表達式。要實現(xiàn)其符號運算,首先需要將處理對象定義為符號變量或符號表達式,其定義格式如下:格式1: sym (變量名) 或 sym (表達式)功能:定義一個符號變量或符號表達式。例如:>> sym (x) % 定義變量x為符號變量>> sym(x+1) % 定義表達式x+1為符號表達式格式2: syms 變量名1 變量名2 變量名n功能:定義變量名1、變量2 、變量名 n為符號變量。例如:>> syms a b x t %

8、定義a,b, x,t 均為符號變量微積分運算1、極限格式:limit (f, t, a, left or right)功能:求符號變量t 趨近a 時,函數(shù)f 的(左或右)極限。left 表示求左極限,right 表示求右極限,省略時表示求一般極限;a省略時變量t 趨近0; t省略時默認變量為x ,若無x則尋找(字母表上)最接近字母x 的變量。例如:求極限的命令及結果為:>> syms x t >> limit (1+2*t/x)(3*x) , x, inf )ans= exp(6*t)再如求函數(shù)x / |x| ,當時的左極限和右極限,命令及結果為: >> s

9、yms x>> limit(x/abs(x), x, 0, left) ans = -1 >> limit(x/abs(x),x, 0, right) ans = 12、導數(shù)格式: diff (f,t,n)功能:求函數(shù)f 對變量 t的n 階導數(shù)。當n省略時,默認 n=1;當t省略時,默認變量x, 若無x時則查找字母表上最接近字母x 的字母。例如:求函數(shù)f=a*x2+b*x+c對變量 x的一階導數(shù), 命令及結果為>> syms a b c x >> f=a*x2+b*x+c;>> diff(f) ans=2*a*x+b求函數(shù)f 對變量b

10、的一階導數(shù)(可看作求偏導), 命令及結果為 >> diff(f,b) ans=x求函數(shù)f 對變量x的二階導數(shù), 命令及結果為>> diff(f,2) ans=2*a3、積分格式: int(f,t,a,b)功能:求函數(shù)f 對變量 t從a 到b的定積分. 當a和b省略時求不定積分;當t省略時, 默認變量為(字母表上)最接近字母x的變量。例如:求函數(shù)f=a*x2+b*x+c對變量x不定積分, 命令及結果為 >> syms a b c x >> f=a*x2+b*x+c;>> int(f) ans=1/3*a*x3+1/2*b*x2+c*x求

11、函數(shù)f 對變量b不定積分, 命令及結果為 >> int(f,b) ans=a*x2*b+1/2*b2*x+c*b求函數(shù)f 對變量x 從 1到5的定積分, 命令及結果為 >> int(f,1,5) ans=124/3*a+12*b+4*c4、級數(shù)求和格式: symsum (s,t,a,b)功能:求表達式s中的符號變量t從第a項到第b項的級數(shù)和。例如:求級數(shù)的前三項的和, 命令及結果為 >> symsum(1/x,1,3) ans=11/6化簡和代換MATLAB符號運算工具箱中,包括了較多的代數(shù)式化簡和代換功能,下面僅舉出部分常見運算。simplify 利用各種

12、恒等式化簡代數(shù)式expand 將乘積展開為和式factor 把多項式轉換為乘積形式collect 合并同類項horner 把多項式轉換為嵌套表示形式例如:進行合并同類項執(zhí)行 >> syms x>> collect(3*x3-0.5*x3+3*x2) ans=5/2*x3+3*x2)進行因式分解執(zhí)行 >> factor(3*x3-0.5*x3+3*x2) ans=1/2*x2*(5*x+6)解方程1、代數(shù)方程格式:solve (f,t)功能:對變量t 解方程f=0,t 缺省時默認為x 或最接近字母x 的符號變量。例如:求解一元二次方程f=a*x2+b*x+c的

13、實根, >> syms a b c x >> f=a*x2+b*x+c;>> solve (f,x) ans=1/2/a*(-b+(b2-4*a*c) (1/2) 1/2/a*(-b-(b2-4*a*c) (1/2)2、微分方程格式:dsolve(s, s1, s2, x)其中s為方程;s1,s2,為初始條件,缺省時給出含任意常數(shù)c1,c2,的通解;x為自變量,缺省時默認為t 。例如:求微分方程的通解 >> dsolve(Dy=1+y2) ans=tan(t+c1)7.3 優(yōu)化工具箱及其應用在工程設計、經(jīng)濟管理和科學研究等諸多領域中,人們常常會遇

14、到這樣的問題:如何從一切可能的方案中選擇最好、最優(yōu)的方案,在數(shù)學上把這類問題稱為最優(yōu)化問題。這類問題很多,例如當設計一個機械零件時如何在保證強度的前提下使重量最輕或用量最省(當然偷工減料除外);如何確定參數(shù),使其承載能力最高;在安排生產(chǎn)時,如何在現(xiàn)有的人力、設備的條件下,合理安排生產(chǎn),使其產(chǎn)品的總產(chǎn)值最高;在確定庫存時如何在保證銷售量的前提下,使庫存成本最??;在物資調(diào)配時,如何組織運輸使運輸費用最少。這些都屬于最優(yōu)化問題所研究的對象。 MATLAB的優(yōu)化工具箱被放在toolbox目錄下的optim子目錄中,其中包括有若干個常用的求解函數(shù)最優(yōu)化問題的程序。MATLAB的優(yōu)化工具箱也在不斷地完善。

15、不同版本的MATLAB,其工具箱不完全相同。在MATLAB5.3版本中,對優(yōu)化工具箱作了全面的改進。每個原有的常用程序都重新編制了一個新的程序。除fzero和fsolve外都重新起了名字。這些新程序使用一套新的控制算法的選項。與原有的程序相比,新程序的功能增強了。在MATLAB5.3和6.0版本中,原有的優(yōu)化程序(除fzero和fsolve外)仍然保留并且可以使用,但是它們遲早會被撤消的。鑒于上述情況,本書將只介紹那些新的常用的幾個優(yōu)化程序。線性規(guī)劃問題線性規(guī)劃是最優(yōu)化理論發(fā)展最成熟,應用最廣泛的一個分支。在MATLAB的優(yōu)化工具箱中用于求解下述線性規(guī)劃的問題(線性不等式約束)(線性等式約束)

16、(有界約束)的函數(shù)是linprog ,其主要格式為:x, fval, exitflag, output, lambda= linprog(c, A, b, A1, b1 , LB, UB, x0, options)其中,linprog為函數(shù)名,中括號及小括號中所含的參數(shù)都是輸入或輸出變量,這些參數(shù)的主要用法及說明如下:(1)c, A和b是不可缺省的輸入宗量;x是不可缺省的輸出宗量,它是問題的解。(2)當x無下界時,在LB處放置 。當無上界時,在UB處放置 。如果x的某個分量無下界,則置LB(i)=-inf. 如果無上界,則置UB(i)=inf. 如果無線性不等式約束,則在A和b處都放置 。(3

17、)x0是解的初始近似值。(4)options是用來控制算法的選項參數(shù)向量。(5)輸出宗量fval是目標函數(shù)在解x處的值。(6)輸出宗量exitflag的值描述了程序的運行情況。如果exitflag的值大于0,則程序收斂于解x;如果exitflag的值等于0,則函數(shù)的計算達到了最大次數(shù);如果exitflag的值小于0,則問題無可行解,或程序運行失敗。(7)輸出宗量output輸出程序運行的某些信息。(8)輸出宗量Lambda為在解x處的值 Lagrange乘子。例:求解線性規(guī)劃問題 min , , .解:在命令窗口中鍵入>> c=-2,-1,1; a=1,4,-1; 2,-2,1;

18、b=4; 12; a1=1,1,2; b1=6;>> lb=0; 0; -inf; ub=inf; inf; 5;>> x, z=linprog(c,a,b,a1,b1,1b,ub)運行后得到:x= 4.66670.00000.6667z= -8.6667非線性約束最優(yōu)化在MATLAB的優(yōu)化工具箱中有一個求解下述非線性規(guī)劃的問題(線性不等式約束)(線性等式約束)(非線性不等式約束)(非線性等式約束)(有界約束)的函數(shù)是fmincon ,其主要格式為:x, fval, exitflag, output, lambda, grad, hessian=fmincon(fun,

19、 x0, A, b, A1, b1 , LB, UB, nonlcon, options, p1, p2,)其中,fmincon為函數(shù)名,參數(shù)的主要用法有的與線性規(guī)劃中的相同,下面介紹幾個非線性規(guī)劃特有的:(1)fun和x0是不可缺省的輸入宗量。fun是給出目標函數(shù)的M文件的名字,x0是極小值點的初始近似值。x是不可缺省的輸出宗量,它是問題的解。(2)nonlcon 是給出非線性約束函數(shù)和的M文件的文件名。(3)宗量p1,p2是向目標函數(shù)傳送的參數(shù)的值。(4)輸出宗量grad為目標函數(shù)在解x處的梯度。(5)輸出宗量hessian為目標函數(shù)在解x處的Hessian矩陣。例:求解非線性規(guī)劃問題 m

20、in ,解:建立目標函數(shù)的M文件 function y=nline (x) y=exp (x(1)*(4*x(1)2+2*x(2)2+4*x(1)*x(2)+2*x(2)+1);建立非線性約束條件的M文件function c1, c2=nyueshu (x) c1=1.5+x(1)*x(2)-x(1)-x(2); -x(1)*x(2)-10; c2=0;在命令窗口中鍵入>> x0=-1,1; a=1, -1; b=1; a1=1,1; b1=0;>> x, f=fmincon (nline, x0, a, b, a1, b1, , , nyueshu)運行后得到:x=

21、-1.2247 1.2247f= 1.8951二次規(guī)劃問題二次規(guī)劃數(shù)學模型的一般形式為:其中H為對稱矩陣,約束條件與線型規(guī)劃相同。在MATLAB的優(yōu)化工具箱中有一個求解上述規(guī)劃問題的程序:x, fval, exitflag, output, lambda= quadprog(H, c, A, b, A1, b1 , LB, UB, x0, options)其中,quadprog為函數(shù)名,參數(shù)的主要用法及說明同線性規(guī)劃,這里不再贅述。例求解如下二次優(yōu)化問題。解:將目標函數(shù)化為標準形式在命令窗口中鍵入>> H=2, 0; 0, 2; c=-8, -10; a=3, 2; b=6; lb=0, 0; x0=1,1;>> x=

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論