第3講 矩陣分析_第1頁
第3講 矩陣分析_第2頁
第3講 矩陣分析_第3頁
第3講 矩陣分析_第4頁
第3講 矩陣分析_第5頁
已閱讀5頁,還剩33頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2.4矩陣分析·

矩陣是線性代數(shù)研究的基本元素,實際上相當(dāng)于MATLAB中的普通二維數(shù)組。矩陣分析主要是研究矩陣的各種特性及其表征方法?!?/p>

2.4.1矩陣的行列式·

矩陣的行列式是一個數(shù)值,它可以用來表示矩陣是否奇異(矩陣行列式等于0),這主要用在線性方程組特性分析上。MATLAB中求解矩陣行列式的函數(shù)是det.·例如:A=magic(3)·

det(A)2.4.2

矩陣的轉(zhuǎn)置與旋轉(zhuǎn)1.矩陣的轉(zhuǎn)置轉(zhuǎn)置運算符是單撇號(‘)。

2.矩陣的旋轉(zhuǎn)利用函數(shù)rot90(A,k)將矩陣A旋轉(zhuǎn)90o的k倍,當(dāng)k為1時可省略。3.矩陣的左右翻轉(zhuǎn)對矩陣實施左右翻轉(zhuǎn)是將原矩陣的第一列和最后一列調(diào)換,第二列和倒數(shù)第二列調(diào)換,…,依次類推。

MATLAB對矩陣A實施左右翻轉(zhuǎn)的函數(shù)是fliplr(A)。

4.矩陣的上下翻轉(zhuǎn)MATLAB對矩陣A實施上下翻轉(zhuǎn)的函數(shù)是flipud(A)。2.4.3

矩陣的逆與偽逆1.矩陣的逆對于一個方陣A,如果存在一個與其同階的方陣B,使得:A*B=B*A=I

(I為單位矩陣)則稱B為A的逆矩陣,當(dāng)然,A也是B的逆矩陣。求一個矩陣的逆是一件非常煩瑣的工作,容易出錯,但在MATLAB中,求一個矩陣的逆非常容易。求方陣A的逆矩陣可調(diào)用函數(shù)inv(A)。例用求逆矩陣的方法解線性方程組。Ax=b其解為:x=A-1b2.矩陣的偽逆如果矩陣A不是一個方陣,或者A是一個非滿秩的方陣時,矩陣A沒有逆矩陣,但可以找到一個與A的轉(zhuǎn)置矩陣A’同型的矩陣B,使得:

A*B*A=AB*A*B=B此時稱矩陣B為矩陣A的偽逆,也稱為廣義逆矩陣。在MATLAB中,求一個矩陣偽逆的函數(shù)是

pinv(A)。2.4.4

矩陣的秩與跡矩陣的秩矩陣線性無關(guān)的行數(shù)與列數(shù)稱為矩陣的秩。在MATLAB中,求矩陣秩的函數(shù)是rank(A)。矩陣的跡矩陣的跡等于矩陣的對角線元素之和,也等于矩陣的特征值之和。在MATLAB中,求矩陣的跡的函數(shù)是trace(A)。2.4.5

向量和矩陣的范數(shù)矩陣或向量的范數(shù)用來度量矩陣或向量在某種意義下的長度。范數(shù)有多種方法定義,其定義不同,范數(shù)值也就不同。向量的3種常用范數(shù)及其計算函數(shù)在MATLAB中,求向量范數(shù)的函數(shù)為:norm(V)或norm(V,2):計算向量V的2—范數(shù)。norm(V,1):計算向量V的1—范數(shù)。norm(V,inf):計算向量V的∞—范數(shù)。矩陣的范數(shù)及其計算函數(shù)MATLAB提供了求3種矩陣范數(shù)的函數(shù),其函數(shù)調(diào)用格式與求向量的范數(shù)的函數(shù)完全相同。2.4.6

矩陣的條件數(shù)矩陣條件數(shù)是用來刻畫矩陣病態(tài)程度的關(guān)鍵表征量。矩陣的條件數(shù)越大,代表矩陣病態(tài)程度越嚴(yán)重。線性方程組

A*X=b中,如果系數(shù)矩陣A嚴(yán)重病態(tài),其精確求解將是很困難的。在MATLAB中,計算矩陣A的3種條件數(shù)的函數(shù)是:cond(A,1)計算A的1—范數(shù)下的條件數(shù)。cond(A)或cond(A,2)計算A的2—范數(shù)數(shù)下的條件數(shù)。cond(A,inf)計算A的∞—范數(shù)下的條件數(shù)。2.4.7

矩陣的特征值與特征向量在MATLAB中,計算矩陣A的特征值和特征向量的函數(shù)是eig(A),常用的調(diào)用格式有3種:E=eig(A):求矩陣A的全部特征值,構(gòu)成向量E。[V,D]=eig(A):求矩陣A的全部特征值,構(gòu)成對角陣D,并求A的特征向量構(gòu)成V的列向量。[V,D]=eig(A,‘nobalance’):與第2種格式類似,但第2種格式中先對A作相似變換后求矩陣A的特征值和特征向量,而格式3直接求矩陣A的特征值和特征向量。例 用求特征值的方法解方程。3x5-7x4+5x2+2x-18=0p=[3,-7,0,5,2,-18];%A的伴隨矩陣%求A的特征值%直接求多項式p的A=compan(p);x1=eig(A)x2=roots(p)零點2.4.8矩陣的標(biāo)準(zhǔn)正交基一個矩陣通過其每一列向量的線性運算,可以派生出一個向量空間,這稱之為矩陣的線性空間。每一個矩陣的線性空間下所有的向量,實際上只需要通過一組基向量的線性運算就可以產(chǎn)生。這樣的最少個數(shù)的一組基向量稱為該空間的基,如果這些向量正好長度為1,則稱為標(biāo)準(zhǔn)正交基。MATLAB中可以通過orth函數(shù)產(chǎn)生矩陣A的線性空間的一組標(biāo)準(zhǔn)正交基,即若B=orth(A),則B的列向量組成了矩陣A的線性空間的一組標(biāo)準(zhǔn)正交基,于是B*B=eye(rank(A).2.4.9

對角陣與三角陣1.對角陣只有對角線上有非0元素的矩陣稱為對角矩陣,對角線上的元素相等的對角矩陣稱為數(shù)量矩陣,對角線上的元素都為1的對角矩陣稱為單位矩陣。(1)提取矩陣的對角線元素設(shè)A為m×n矩陣,diag(A)函數(shù)用于提取矩陣A主對角線元素,產(chǎn)生一個具有min(m,n)個元素的列向量。diag(A)函數(shù)還有一種形式diag(A,k),其功能是提取第k條對角線的元素。(2)構(gòu)造對角矩陣設(shè)V為具有m個元素的向量,diag(V)將產(chǎn)生一個m×m對角矩陣,其主對角線元素即為向量V的元素。diag(V)函數(shù)也有另一種形式diag(V,k),其功能是產(chǎn)生一個n×n(n=m+k)對角陣,其第k條對角線的元素即為向量V的元素。例先建立5×5矩陣A,然后將A的第一行元素乘以1,第二行乘以2,…,第五行乘以5。A=[17,0,1,0,15;23,5,7,14,16;4,0,13,0,22;10,12,19,2111,18,25,2,19];D=diag(1:5);D*A %用D左乘A,對A的每行乘以一個指定常數(shù)2.三角陣三角陣又進一步分為上三角陣和下三角陣,所謂上三角陣,即矩陣的對角線以下的元素全為0的一種矩陣,而下三角陣則是對角線以上的元素全為0的一種矩陣。上三角矩陣求矩陣A的上三角陣的MATLAB函數(shù)是triu(A)。triu(A)函數(shù)也有另一種形式triu(A,k),其功能是求矩陣A的第k條對角線以上的元素。例如,提取矩陣A的第2條對角線以上的元素,形成新的矩陣B。下三角矩陣在MATLAB中,提取矩陣A的下三角矩陣的函數(shù)是tril(A)和tril(A,k),其用法與提取上三角矩陣的函數(shù)triu(A)和

triu(A,k)完全相同?!?/p>

2.4.10矩陣分解處理各種矩陣的相關(guān)問題是,經(jīng)常會利用矩陣分解的方法。MATLAB中對各種經(jīng)典的矩陣分解都提供了相關(guān)的

函數(shù)。1、LU分解LU分解是把矩陣A分解為兩個矩陣的乘積,其中一個是下三角矩陣置換后的矩陣,另一個是上三角矩陣。MATLAB中通過函數(shù)lu可以實現(xiàn)矩陣的LU分解。(1)[L,U]=lu(A)把矩陣A分解為下三角矩陣的置換矩陣L和上三角矩陣U,滿足A=L*U;(2)[L,U,P]=lu(A)把矩陣A分解結(jié)果中,L是一個下三角矩陣,U是一個上三角矩陣,P是一個置換矩陣,滿足滿足L*U=P*A;·

2、Cholesky分解一個對稱正定矩陣,可以分解為一個下三角矩陣和一個上三角矩陣的乘積,這種分解稱為Cholesky分解。MATLAB中通過chol函數(shù)實現(xiàn)矩陣的Cholesky分解。R=chol9A)得到一個上三角矩陣,滿足R’*R=A。因為chol只能分解對稱正定矩陣,因此使用chol之前最好通過eig命令檢查矩陣A的所有特征值是否為正(矩陣是否正定)·

3、QR分解QR分解是把矩陣分解為一個正交矩陣和一個上三角矩陣的乘積。MATLAB中實現(xiàn)QR分解的命令是qr.[Q,R]=qr(A)把矩陣A分解為正交矩陣Q和上三角矩陣R,滿足A=Q*R.QR分解不僅適用于分解方陣,也可分解長方形矩陣。例如,對3*3隨機分布矩陣進行QR分解。A=rand(3)[Q,R]=qr(A)Q’*Q,Q*R·

4、SVD分解(奇異值分解)奇異值分解也是常用的矩陣分解之一。MATLAB中通過svd函數(shù)實現(xiàn)矩陣的奇異值分解。(1)s=svd[A],返回A的奇異值組成的列向量。[u,s,v]=svd(A)將矩陣分解為三個矩陣的乘積,即A=U*S*V’:其中U和V是正交矩陣,S是一個對角矩陣,其對角元素為矩陣A奇異值的降序排列?!?/p>

5、Schur分解MATLAB中實現(xiàn)Schur分解的命令是schur。其語法格式為:[U,T]=schur(A)其中U是一個正交矩陣,T是一個上三角矩陣,稱為A的schur矩陣,并且滿足A=U*T*U’.2.5矩陣的超越函數(shù)1、矩陣平方根sqrtmsqrtm(A)計算矩陣A的平方根。2、矩陣對數(shù)logmlogm(A)計算矩陣A的自然對數(shù)。此函數(shù)輸入?yún)?shù)的條件與輸出結(jié)果間的關(guān)系和函數(shù)sqrtm(A)完全一樣3、矩陣指數(shù)expm、expm1、expm2、expm3expm(A)、expm1(A)、expm2(A)、expm3(A)的功能都求矩陣指數(shù)eA。4、普通矩陣函數(shù)funmfunm(A,‘fun’)用來計算直接作用于矩陣A的由‘fun’指定的超越函數(shù)值。當(dāng)fun取sqrt時,funm(A,‘sqrt’)可以計算矩陣A的平方根,與sqrtm(A)的計算結(jié)果一樣。2.6

字符串在MATLAB中,字符串是用單撇號括起來的字符序列。

MATLAB將字符串當(dāng)作一個行向量,每個元素對應(yīng)一個字符,其標(biāo)識方法和數(shù)值向量相同。也可以建立多行字符串矩陣。2.6.1、單行字符串創(chuàng)建創(chuàng)建單行的字符串很方便,只需要把字符內(nèi)容用單引號(‘)括起來即可,還可以用方括號([])連接多個字符串組成的較長的字符串,或者用strcat函數(shù)降多個字符串橫向連接成更長的字符串。需要注意的是,用方括號連接的時候,字符串中所有的空格都會保留下來,而用strcat函數(shù)連接字符串的時候,被連接的每一個字符串最右邊的所有空格將被裁切?!?/p>

2.6.2、多行字符串創(chuàng)建·二維字符數(shù)組是最簡單的多行字符串,相當(dāng)于把多個字符串縱向連接起來。這種連接也可以用方括號,只是個航字符串之間要用分號分隔,而不再是橫向連接時用的逗號或者空格了?!ち硗猓琈ATLAB還提供了strvcat函數(shù)和char函數(shù)用于縱向連接多個字符串。用方括號縱向連接的每一行字符串,要求長度相等,否則必須換用函數(shù)方法連接?!?/p>

Strvcat函數(shù)連接多行字符串時,不要求每行長度相等,MATLAB會自動把非最長行的字符串最右邊補空格,使所有行和最長的字符串具有相同長度?!?/p>

2.6.3.字符串操作1、字符串比較(1)比較兩個字符串是否完全相同:strcmp(2)比較兩個字符串的前n個字符是否相同。strncmp(3)比較兩個字符串是否完全相同,不區(qū)分大小寫。Strcmpi兩個字符串還可以逐個字符的比較,MATLAB中用關(guān)系運算符等于(==)實現(xiàn)這一比較。需要注意的是,待比較的兩個字符串必須長度相等,或者其中之一為單個字符。在實際處理字符串時,經(jīng)常還會遇到確定字符串的某個字符屬于英文字母、數(shù)字還是空格等格式字符的問題。(1)isletter可以檢測字符串中的每一個字符是否屬于英文字母。(2)isspace可以檢測字符串中的字符是否屬于格式字符。(3)isstrprop函數(shù)可以逐個檢測字符是否屬于指定的范圍。·

2、字符串的替換和查找strrep(str1,str2,str3),它把str1中所有的str2子串str3來替換。需要注意的是,strrep對字母的大小寫敏感,只能替換str1中與str2完全一致的字符串。strfind(str,pattern),查找str中是否具有pattern子串返回子串出現(xiàn)的位置,沒有出現(xiàn)返回空數(shù)組。findstr(str1,str2),查找str1和str2中,較短字符串在長字符串中出現(xiàn)的位置。strmatch(pattern,str),檢查pattern是否和str最左側(cè)部分一致,加’exact’,是否完全一致,相當(dāng)于strcmpstrok(str,char),返回str中由char指定的字符前的部分和之后的部分·

3、其他blanks(n)創(chuàng)建由n個空格組成的字符串deblank(str)裁切字符串str的尾部空格strtrim(str)裁切字符串str的開頭和尾部的空格lower(str)將str中的字母全部轉(zhuǎn)換成小寫upper(str)將str中的字母全部轉(zhuǎn)換成大寫strjust(strarray,’right’),將字符數(shù)組starray的每行右對齊。strjust(strarray,’left’),將字符數(shù)組starray的每一左對齊。strjust(strarray,’center’),將字符數(shù)組starray的每行居中對齊,其他位置用空格補齊。Sort(str),按照字符的ASCII值對字符串str排序。字符串是以ASCII碼形式存儲的。abs和double函數(shù)都可以用來獲取字符串矩陣所對應(yīng)的ASCII碼數(shù)值矩陣。相反,char函數(shù)可以把ASCII碼矩陣轉(zhuǎn)換為字符串矩陣。例2-13建立一個字符串向量,然后對該向量做如下處理:取第1~5個字符組成的子字符串。將字符串倒過來重新排列。將字符串中的小寫字母變成相應(yīng)的大寫字母,其余字符不變。統(tǒng)計字符串中小寫字母的個數(shù)。命令如下:ch=‘ABc123d4e56Fg9’;subch=ch(1:5) %取子字符串revch=ch(end:-1:1) %將字符串倒排%找小寫字母的位置%將小寫字母變成相應(yīng)k=find(ch>=‘a(chǎn)’&ch<=‘z’);ch(k)=ch(k)-(‘a(chǎn)’-‘A’);的大寫字母char(ch)length(k) %統(tǒng)計小寫字母的個數(shù)與字符串有關(guān)的另一個重要函數(shù)是eval,其調(diào)用格式為:eval(t)其中t為字符串。它的作用是把字符串的內(nèi)容作為對應(yīng)的MATLAB語句來執(zhí)行。2.7

結(jié)構(gòu)數(shù)據(jù)和單元數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)矩陣的建立與引用結(jié)構(gòu)矩陣的元素可以是不同的數(shù)據(jù)類型,它能將一組具有不同屬性的數(shù)據(jù)納入到一個統(tǒng)一的變量名下進行管理。建立一個結(jié)構(gòu)矩陣可采用給結(jié)構(gòu)成員賦值的辦法。具體格式為:結(jié)構(gòu)矩陣名.成員名=表達式其中表達式應(yīng)理解為矩陣表達式。另外,可以采用struct函數(shù)創(chuàng)建結(jié)構(gòu)體。strarray=struct(‘field1’,val1,’field2’,val22.結(jié)構(gòu)成員的修改可以根據(jù)需要增加或刪除結(jié)構(gòu)的成員。例如要給結(jié)構(gòu)矩陣a增加一個成員x4,可給a中任意一個元素增加成員x4:a(1).x4=‘410075’;但其他成員均為空矩陣,可以使用賦值語句給它賦確定的值。要刪除結(jié)構(gòu)的成員,則可以使用rmfield函數(shù)來完成。例如,刪除成員x4:a=rmfield(a,‘x4’);3.關(guān)于結(jié)構(gòu)的函數(shù)除了一般的結(jié)構(gòu)數(shù)據(jù)的操作外,MATLAB還提供了部分函數(shù)來進行結(jié)構(gòu)矩陣的操作。deal,fieldnames,isfield

isstruct,rmfield,struct2cell2.7.2

單元數(shù)據(jù)單元矩陣的建立與引用建立單元矩陣和一般矩陣相似,只是矩陣元素用大括號括起來。可以用帶有大括號下標(biāo)的形式引用單元矩陣元素。例如b{3,3}。單元矩陣的元素可以是結(jié)構(gòu)或單元數(shù)據(jù)??梢允褂胏elldisp函數(shù)來顯示整個單元矩陣,如celldisp(b)還可以刪除單元矩陣中的某個元素。關(guān)于單元的函數(shù)MATLAB還提供了部分函數(shù)用于單元的操作。deal,cell,celldisp,cellplot,cell2struct,num2cell,is2.8稀疏矩陣矩陣存儲方式MATLAB的矩陣有兩種存儲方式:完全存儲方式和稀疏存儲方式。完全存儲方式完全存儲方式是將矩陣的全部元素按列存儲。以前講到的矩陣的存儲方式都是按這個方式存儲的,此存儲方式對稀疏矩陣也適用。2.稀疏存儲方式稀疏存儲方式僅存儲矩陣所有的非零元素的值及其位置,即行號和列號。在MATLAB中,稀疏存儲方式也是按列存儲的。注意,在講稀疏矩陣時,有兩個不同的概念,一是指矩陣的0元素較多,該矩陣是一個具有稀疏特征的矩陣,二是指采用稀疏方式存儲的矩陣。2.8.2

稀疏存儲方式的產(chǎn)生1.將完全存儲方式轉(zhuǎn)化為稀疏存儲方式函數(shù)A=sparse(S)將矩陣S轉(zhuǎn)化為稀疏存儲方式的矩陣A。當(dāng)矩陣S是稀疏存儲方式時,則函數(shù)調(diào)用相當(dāng)于A=S。sparse函數(shù)還有其他一些調(diào)用格式:sparse(m,n):生成一個m×n的所有元素都是0的稀疏矩陣。

sparse(u,v,S):u,v,S是3個等長的向量。S是要建立的稀疏矩陣的非0元素,u(i)、v(i)分別是S(i)的行和列下標(biāo),該函數(shù)建立一個max(u)行、max(v)列并以S為稀疏元素的稀疏矩陣。此外,還有一些和稀疏矩陣操作有關(guān)的函數(shù)。例如[u,v,S]=find(A):返回矩陣A中非0元素的下標(biāo)和元素。這里產(chǎn)生的u,v,S可作為sparse(u,v,S)的

溫馨提示

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

評論

0/150

提交評論