MAT軟件基礎及應用3_第1頁
MAT軟件基礎及應用3_第2頁
MAT軟件基礎及應用3_第3頁
MAT軟件基礎及應用3_第4頁
MAT軟件基礎及應用3_第5頁
已閱讀5頁,還剩33頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

第二章MATLAB在數學運算中的應用2.1MATLAB在高等數學中的應用2.2MATLAB在線性代數中的應用2.3MATLAB在積分變換中的應用2.4MATLAB在復變函數中的使用2.5多項式運算2.1MATLAB在高等數學中的應用

2.1.1微分和積分1.微分微分運算使用符號表達式的diff函數,命令格式如下:

diff(f,t,n)%計算f對符號變量t的n階微分【例2_1】計算表達式f=cos(ax)+sin(ax)+y3sin(2x)對x的一階微分和二階微分,以及對y的一階微分。

>>symsaxy %創建符號變量

>>f=cos(a*x)+sin(a*x)+y^3*sin(2*x);

>>dfdx=diff(f) %計算對x的一階微分

dfdx=

2*cos(2*x)*y^3+a*cos(a*x)-a*sin(a*x)

>>dfdx2=diff(f,2) %計算對x的二階微分

dfdx2=

-4*y^3*sin(2*x)-a^2*cos(a*x)-a^2*sin(a*x)

>>dfdy=diff(f,y) %計算對y的一階微分

dfdy=

3*y^2*sin(2*x)

2.積分在數學中積分其命令的語法格式如下:int(f,t,a,b) %計算符號變量t的積分說明:f為符號表達式;t為積分符號變量,可以省略,當t省略時則指默認自由符號變量;a和b為積分上下限[ab],可以省略,省略時計算的是不定積分。

2.1.2極限函數格式表達式說明limt(f)求符號表達式f對x趨近于0的極限limt(f,a)求符號表達式f對默認自由符號變量趨近于a的極限limt(f,x,a)

求符號表達式f對x趨近于a的極限

limt(f,x,a,left)求符號表達式f對x左趨近于a的極限limt(f,x,a,right)

求符號表達式f對x右趨近于a的極限

2.1.3級數1.級數求和MATLAB提供了symsum函數實現有限個級數求和,其命令的語法格式如下:symsum(s,x,a,b) %計算表達式s當x從a到b的級數和說明:s為符號表達式;x為符號變量,可省略,省略時使用默認自由變量;a和b為符號變量的范圍,可省略,省略時范圍是無限個級數。

2.taylor級數如果函數f(x)在點x0的某一鄰域內具有從一階到n+1階的導數,則在該鄰域內函數f(x)在點x=x0時,趨向無窮的冪級數為:taylor(f,x,x0,’Order’,n) %求泰勒級數以符號變量x在x0點展開n項說明:f為符號表達式;x為符號變量,可省略,省略時使用默認自由變量;n是指f進行泰勒級數展開的項數,可省略,n省略則默認展開前5項;x0是泰勒級數的展開點。【例2_7】使用泰勒級數在0.5展開y=ln(x)的前三項和五項級數,并顯示其波形曲線。>>symsxf1>>f1=log(x);>>y1=taylor(f1,x,0.5,'Order',3)%計算x=0.5處的泰勒級數前三項展開和y21=2*x-log(2)-2*(x-1/2)^2-1>>y2=taylor(f1,0.5)%計算x=0.5處的泰勒級數前五項展開和y22=2*x-log(2)-2*(x-1/2)^2+(8*(x-1/2)^3)/3-4*(x-1/2)^4+(32*(x-1/2)^5)/5-1>>taylortool %打開泰勒級數窗口2.1.4解方程和微分方程

2.解微分方程(1)dsolve函數MATLAB提供dsolve函數來求常微分方程的符號解,命令格式如下:S=dsolve(eqn,cond,v) %求解微分方程說明:

eqn和eqn1,eqn2,…是符號常微分方程,方程組最多可允許12個方程,方程中D表示微分,則D2、D3分別表示二階、三階微分,y的一階導數dy/dx或dy/dt表示為Dy;

cond是初始條件,可省略,當初始條件少于微分方程數時,在所得解中將出現任意常數符C1,C2……,解中任意常數符的數目等于所缺少的初始條件數,是微分方程的通解。【例2_9】求微分方程dy/dt=cos?(t)-ycos(t)當y(0)=0時的特解。>>symsy(t)>>y=dsolve(diff(y,t)==cos(t)-y*cos(t),y(0)==0) y=1-exp(-sin(t))MATLAB為解常微分方程提供了7種數值求解的方法,包括ode45、ode23、ode113、ode15s、ode23s、ode23t和ode23tb函數,各函數的命令格式如下:[t,y]=ode45(fun,ts,y0,options) %解常微分方程【例2_10】求微分方程的數值解dxdt=0.5(x-x2),使用dsolve函數和ode45函數分別求解,初始條件x(0)=0.05,并繪制輸出波形如圖2_5所示。>>clear>>fun=@(t,x)0.5*(x-x^2); %創建匿名函數>>[t,x]=ode45(fun,[-16],0.05);>>plot(t,x)

2.1.5函數1.反函數和復合函數(1)反函數函數f(x)存在一個反函數g(.),g(f(x))=x,則g和f互為反函數。g=finverse(f,v) %對f(v)按指定自變量v求反函數

(2)復合函數MATLAB提供了compose函數可以求出f(x)和g(y)的復合函數f(g(y))。其命令的語法格式如下:compose(f,g,x,y,z) %計算f和g的復合函數說明:x、y、z都可以省略,都省略時則計算出的復合函數為f(g(y));當x和y省略時,計算出f(g(z));都不省略時以x為自由符號變量計算出f(g(z)),并將z替代符號變量y。

2.函數的最小值(1)fminbnd函數fminbnd函數用來計算單變量非線性函數的最小值。其命令的語法格式如下:[x,y]=fminbnd(h_fun,x1,x2,options)[x,y]=fminbnd(‘funname’,x1,x2,options)【例2_13】用fminbnd求解函數-x(1-x)+10的極小值,函數曲線如圖2_7所示。>>symsxy>>h=inline('-x*(1-x)+10'); %inline產生函數>>[x,y]=fminbnd(h,-6,6) %求解極小值x=0.5000y=9.7500>>ezplot(h)>>text(x,y,'MIN')(2)fminsearch函數fminsearch函數是求多變量無束縛非線性最小值,是采用Nelder-Mead單純形算法求解多變量函數的最小值。其命令的語法格式如下:x=fminsearch(h_fun,x0)x=fminsearch(‘funname’,x0)說明:x0是最小值點的初始猜測值。【例2_14】求著名的Banana測試函數f(x,y)=100(y-x2)2+(1-x)2的最小值,它的理論最小值是x=1,y=1。該測試函數有一片淺谷,很多算法都難以逾越。>>fn=inline('100*(x(2)-x(1)^2)^2+(1-x(1))^2','x') %用inline產生內聯函數fn=Inlinefunction:fn(x)=100*(x(2)-x(1)^2)^2+(1-x(1))^2>>y=fminsearch(fn,[0.5,-1]) %從(0.5,-1)為初始值開始搜索求最小值y=1.01.00002.2MATLAB在線性代數中的應用

2.2.1行列式1.計算特征值和特征向量在MATLAB中,eig函數求解特征值和特征向量。

2.向量組的線性相關性定理:向量組a1,a2,a3,…,am線性相關的充分必要條件是它所構成的矩陣A=(a1,a2,a3,…,am)的秩小于向量個數m;向量組線性無關的充分必要條件是秩=m。當矩陣的秩等于矩陣的邊長,則線性無關。行列式的值det(x)也可以判斷線性相關,當det(x)=0則線性相關。

3.矩陣翻轉函數名功能例子輸入結果flipud(x)使x沿水平軸上下翻轉flipud(a)456123fliplr(x)使x沿垂直軸左右翻轉fliplr(a)321654flipdim(x,dim)使x沿特定軸翻轉dim=1,按行維翻轉dim=2,按列維翻轉flipdim(a,1)456123rot90(x,k)使x逆時針旋轉k*900默認k取1rot90(a)3625142.2.2正交性

2.正交分解在MATLAB中,利用qr函數對矩陣進行QR分解。其函數的語法格式如下:[q,r]=qr(x) %生成一個上三角矩陣r和正交矩陣q說明:矩陣q的列向量組就是所求的規范正交化向量組。m×n矩陣x分解為一個正交方陣q和一個與x同階的上三角矩陣r的乘積。方陣q的邊長為矩陣x的n和m中較小者,且其行列式的值為1。實現QR分解后,線性方程組Ax=b的解x=R\(Q\b)。2.2.3向量空間向量空間的基定義是:一個向量空間V最大的線性獨立子集,稱為這個空間的基。向量空間的所有基擁有相同基數,稱為該空間的維度。

2.3MATLAB在積分變換中的應用

2.3.1Fourier變換fourier和ifourier函數的命令格式如下:F=fourier(f,t,w)

%求以t為符號變量f的fourier變換Ff=ifourier(F,w,t) %求以w為符號變量的F的fourier反變換f

2.3.2Laplace變換laplace和ilaplace函數的命令格式如下:F=laplace(f,t,s) %求以t為變量f的Laplace變換Ff=ilaplace(F,s,t) %求以s為變量的F的Laplace反變換f說明:f是符號表達式;t是符號變量,可省略,當t省略默認自由變量為't';s是符號變量,可省略,省略時為's'。【例2_24】證明Laplace變換的時移性質,其中,f為任意的一個函數,u是階躍函數。>>symstsf(t)>>symst0positive %創建正數符號變量>>ft=heaviside(t-t0)*sym(f(t-t0));>>FS=laplace(ft,t,s) %拉式變換FS=laplace(f(t),t,s)/exp(s*t0)>>FS_t=ilaplace(FS,s,t) %拉式逆變換FS_t=f(t-t0)*heaviside(t-t0)2.3.3Z變換使用ztrans和iztrans函數計算Z變換和Z反變換的命令格式如下:F=ztrans(f,n,z) %求以n為變量的f的Z變換Ff=iztrans(F,z,n) %求以z為變量的F的z反變換f說明:f是離散信號的符號表達式;n是符號變量,可省略,省略時默認符號變量為'n';z表示替換符號變量,可省略,省略時默認符號變量為'z'。【例2_25】使用ztrans函數對單位階躍函數和t求Z變換。>>symsknzt>>zf1=ztrans(heaviside(t),n,z) %對單位階躍函數求Z變換zf1=heaviside(t)*z/(z-1)>>f2=n;>>zf2=ztrans(f2) %對t求Z變換zf2=1/(z-1)^2*z程序分析:Z變換是對于離散信號的,因此變換前的函數是以n為變量。2.4MATLAB在復變函數中的使用

2.4.1復數

兩個復數的乘積可以表示為模相乘而相角相加,復數的冪表示為模的冪和相角的倍數,復數的方根表示為模相同,在圓周上正n變形的n個頂點。【例2_27】計算Z=41+i的方根,并繪制出向量圖。>>Z=(1+i)^(1/4)>>r=abs(Z)>>forn=0:(4-1)theta=angle(Z)+(2*n*pi)/4; x=r*cos(theta);y=r*sin(theta);compass(x,y)holdonendZ=1.0696+0.2127ir=1.09052.4.2復變函數

【例2_28】計算Cz2dz,其中C為半圓周,起點為-3i,終點為3i,如圖所示。>>symsz;>>f=exp(z)/(z-1)^3/(z^2-9);>>r=limit((diff(f*(z-1)^3,z,2))/prod(1:2),z,1)%計算z=1留數r=-(15*exp(1))/128>>a=2*pi*i*r %計算閉曲線積分a=-(pi*exp(1)*15i)/642.4.3留數1.留數留數的基本定理:如果z0為f(z)的m級極點,那么:

MATLAB中計算留數使用residue函數,其命令的語法格式如下:[r,p]=residue(a,b) %計算留數(部分分式法)

2.5多項式運算一個多項式按降冪排列為:p(x)=anxn+an-1xn-1+…+a1x+a0在MATLAB中用行向量來表示多項式的各項系數,使用長度為n+1的行向量按降冪排列,用0表示多項式中某次冪的缺項,則表示為:p=[anan-1…

a1a0]例如,p(x)=x3-4x2+3x+1可表示為p=[1-431];p(x)=x3+5x2+2x可表示為p=[1520]。

2.5.1多項式的算術運算1.多項式與符號表達式的轉換poly2sym是將行向量轉換為符號表達式,相反則使用sym2poly函數。2.多項式的乘法和除法多項式的乘法和除法運算分別使用函數conv和deconv來實現,這兩個函數也可以對應于卷積(convpolytion)和解卷(deconvpolytion)運算。乘除法的命令格式如下:p=conv(pl,p2) %計算多項式p1和p2的乘積[q,r]=deconv(pl,p2) %計算多項式p1與p2的商說明:除法不一定會除盡,多項式p1被p2除的商為多項式q,而余子式是r。3.部分分式展開將由分母多項式和分子多項式構成的表達式進行部分分式展開,當分母沒有重根時:[r,p,k]=residue(B,A) %將分母多項式A和分子多項式B進行部分分式展開[B,A]=residue(r,p,k)。【例2_33】將表達式G1進行部分分式展開,G1和G2表達式如下:。>>a1=[1-611-60];>>b1=10;>>[r1,p1,k1]=residue(b1,a1) %將G部分分式展開r1=1.6667-5.00005.0000-1.6667p1=3.00002.00001.00000k1=[]4.多項式的微積分在MATLAB中可以使用polyder函數來計算多項式的微分,polyder函數可以計算單個多項式的導數以及兩個多項式乘積和商的導數。語法格式如下:polyder(p) %計算p的導數polyder(a,b) %計算a和b乘積的導數[q,d]=polyder(b,a)%計算a和b商的導數polyint(p,k)%計算P的積分,使用k為常數項

5.多項式求根和求值使用roots函數來計算多項式的根,多項式的根以列向量的形式表示。函數polyval和polyvalm可以用來計算多項式在給定變量時的值。其語法格式如下:polyval(p,x) %得出變量x對應多項式值polyvalm(p,x) %得出矩陣x對應多項式值說明:polyvalm要求輸入的矩陣是行列相等的方陣,以矩陣為整體作為自變量。【例2_35】計算多項式p(x)=5x4+4x3+3x2+2x+1根,計算當x為0到10時p的值,并繪制出波形圖。>>p=[54321];>>x=roots(p)%求多項式的根x=0.1378+0.6782i0.1378-0.6782i-0.5378+0.3583i-0.5378-0.3583i>>t=0:0.1:10;>>y=polyval(p,t);>>plot(t,y)2.6擬合與插值

2.6.1擬合1.多項式的擬合函數多項式的擬合可以使用polyfit函數來實現,擬合的準則是最小二乘法,即找出使最小的f(x)。語法格式如下:p=polyfit(x,y,n) %由x和y得出多項式p【例2_34】使用多項式p(x)=5x4+4x3+3x2+2x+1,根據擬合的方法對曲線的數據進行二階、三階和四階擬合,并繪制二階擬合和四階擬合的曲線進行對比。>>x=0:0.5:20;

>>p=[54321];>>y=polyval(p,x)>>p2=polyfit(x,y,2) %2階擬合p2=1.0e+004*0.3572-3.73386.5791>>p3=polyfit(x,y,3) %3階擬合p3=1.0e+004*0.0204-0.25481.1020-0.9791>>p4=polyfit(x,y,4); %4階擬合p4=5.00004.00003.00002.00001.0000>>p4x=poly2str(p4,'x')p4x=5x^4+4x^3+3x^2+2x+1>>y2=polyval(p2,x); %計算x對應的多項式值>>plot(x,y,x,y2)2.使用“Curvefitting”工具窗口

2.6.2插值運算插值(interpolation)是在兩個原始數據點之間根據一定的運算關系插入新的數據點,以便更準確地得出數據的變化規律。當工程中有一些離散點的數值,通過插值運算可以得到近似的連續過程,插值運算廣泛使用于信號和圖像處理領域。1.一維插值一維插值是指對一個自變量的插值,interp1函數用來進行一維插值,命令格式如下:yi=interp1(x,y,xi,'method')

溫馨提示

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

評論

0/150

提交評論