- MATLAB/Simulink權(quán)威指南:開(kāi)發(fā)環(huán)境、程序設(shè)計(jì)、系統(tǒng)仿真與案例實(shí)戰(zhàn)
- 徐國(guó)保 張冰 石麗梅 吳凡
- 2630字
- 2019-12-20 20:33:26
2.4 矩陣分析
矩陣是MATLAB語(yǔ)言的基本運(yùn)算單元。本節(jié)主要介紹矩陣分析與處理的常用函數(shù)和功能。
2.4.1 方陣的行列式
一個(gè)行數(shù)和列數(shù)相同的方矩陣可以看作一個(gè)行列式,而行列式是一個(gè)數(shù)值。MATLAB語(yǔ)言用D=det(A)函數(shù)求方矩陣的行列式的值。例如:
已知一個(gè)方矩陣A=[1 0 1;2 1 0;0 2 1],求行列式的值D。

2.4.2 矩陣的秩和跡
1.矩陣的秩
與矩陣線性無(wú)關(guān)的行數(shù)或者列數(shù)稱為矩陣的秩。MATLAB語(yǔ)言用r=rank(A)函數(shù)求矩陣的秩。例如:

2.矩陣的跡
一個(gè)矩陣的跡等于矩陣的對(duì)角線元素之和,也等于矩陣的特征值之和。MATLAB語(yǔ)言用t=trace(A)函數(shù)求矩陣的跡。例如:

2.4.3 矩陣的逆和偽逆
1.方陣的逆矩陣
對(duì)于一個(gè)方矩陣A,如果存在一個(gè)同階方矩陣B,使得A·B=B·A=I(其中I為單位矩陣),則稱B為A的逆矩陣,A也為B的逆矩陣。
在線性代數(shù)里用公式計(jì)算逆矩陣相對(duì)煩瑣,然而,在MATLAB語(yǔ)言里,用求逆矩陣的函數(shù)inv(A)求解卻很容易。例如:

顯然,A?B=B?A=I,故B與A是互逆矩陣。
2.矩陣的偽逆矩陣
如果矩陣A不是一個(gè)方陣,或者A為非滿秩矩陣,那么就不存在逆矩陣,但可以求廣義上的逆矩陣B,稱為偽逆矩陣,MATLAB語(yǔ)言用B=pinv(A)函數(shù)求偽逆矩陣。例如:

在線性代數(shù)中,可以用矩陣求逆的方法求解線性方程組的解。將設(shè)有n個(gè)未知數(shù),由n個(gè)方程構(gòu)成線性方程組,表示為

用矩陣表示為
Ax=b
其中:

線性方程組的解為
x=A﹣1b
所以,利用MATLAB求系數(shù)矩陣A的逆矩陣,可以求線性方程組的解。
【例2-3】 利用MATLAB求系數(shù)矩陣的逆矩陣方法,求如下線性方程組的解。

MATLAB命令程序如下:

2.4.4 矩陣的特征值和特征向量
矩陣的特征值與特征向量在科學(xué)計(jì)算中廣泛應(yīng)用。設(shè)A為n階方陣,使得等式Av=Dv成立,則D稱為A的特征值,向量v稱為A的特征向量。MATLAB語(yǔ)言用函數(shù)eig(A)求矩陣的特征值和特征向量,常用下面兩種格式:
(1)E=eig(A)求矩陣A的特征值,構(gòu)成向量E;
(2)[v,D]=eig(A)求矩陣A的特征值,構(gòu)成對(duì)角矩陣,并求A的特征向量v。
例如:

顯然,A?v=v?D,故D和v分別是A矩陣的特征值和特征向量。
特征值還可以應(yīng)用于求解一元多次方程的根,具體方法是,先將方程的多項(xiàng)式系數(shù)組成行向量a,然后用compan(a)函數(shù)構(gòu)造成伴隨矩陣A,最后再用eig(A)函數(shù)求A的特征值,特征值就是方程的根。
【例2-4】 用MATLAB求特征值的方法求解一元多次方程的根,方程如下:
x5﹣5x4+5x3+5x2﹣6x=0
MATLAB命令程序如下:

當(dāng)然,求一元多次方程的根還可以利用多項(xiàng)式函數(shù)roots。

顯然,用這兩種不同方法求解一元多次方程的根,結(jié)果是一樣的。
2.4.5 矩陣的分解
矩陣有多種分解方法,常見(jiàn)的有對(duì)稱正定矩陣分解(Cholesky)、高斯消去法分解(LU)、正交分解(QR)和矩陣的奇異值分解(SVD)。
1.對(duì)稱正定矩陣分解
MATLAB語(yǔ)言中的對(duì)稱正定矩陣Cholesky分解用函數(shù)chol(A),函數(shù)語(yǔ)法格式如下:

其中,分解后的R滿足R′?R=A。若A是n階對(duì)稱正定矩陣,則R為實(shí)數(shù)的非奇異上三角矩陣;若A是非正定矩陣,則產(chǎn)生錯(cuò)誤信息。

其中,分解后的R滿足R′?R=A。若A是n階對(duì)稱正定矩陣,則R為實(shí)數(shù)的非奇異上三角矩陣,p=0;若A是非正定矩陣,則p為正整數(shù)。
例如,已知A=[1 1 1;1 2 3;1 3 6],求該矩陣的Cholesky分解。
MATLAB語(yǔ)言程序代碼及結(jié)果如下:

由結(jié)果可知,Cholesky分解得到的R矩陣是一個(gè)實(shí)數(shù)的非奇異上三角矩陣,且滿足R′?R=A。
當(dāng)A為非正定矩陣時(shí),用Cholesky分解,錯(cuò)誤信息如下:

2.矩陣的高斯消去法分解
高斯消去法分解是在線性代數(shù)中矩陣分解的一種重要方法,主要應(yīng)用在數(shù)值分析中,用來(lái)解線性方程及計(jì)算行列式。矩陣的高斯消去法分解又稱為三角分解,是將一個(gè)一般方矩陣分解成一個(gè)下三角矩陣L和一個(gè)上三角矩陣U,且滿足A=LU,故稱為L(zhǎng)U分解。MATLAB語(yǔ)言用lu(A)函數(shù)實(shí)現(xiàn)LU分解。函數(shù)語(yǔ)法格式如下:

其中,L為下三角矩陣或其變換形式,U為上三角矩陣,且滿足LU=A。

其中,L為下三角矩陣,U為上三角矩陣,P為單位矩陣的行變換矩陣,且滿足LU=PA。
例如,已知A=[1 2 3;4 5 6;7 8 9],求該矩陣的LU分解。
MATLAB語(yǔ)言程序代碼及結(jié)果如下:

由上述結(jié)果可知,LU分解得到的L是一個(gè)下三角變換矩陣,U是一個(gè)上三角矩陣,且滿足L?U=A。
同樣的矩陣A,若用另一種LU分解,結(jié)果如下:

由上述結(jié)果可知,LU分解得到的L是一個(gè)下三角矩陣,U是一個(gè)上三角矩陣,P為單位矩陣的行變換矩陣,且滿足L?U=P?A。
3.矩陣的正交分解
矩陣的正交分解是將一個(gè)一般矩陣A分解成一個(gè)正交矩陣Q和一個(gè)上三角矩陣R的乘積,且滿足A=QR,故稱為QR分解。
MATLAB語(yǔ)言用qr(A)函數(shù)實(shí)現(xiàn)QR分解。函數(shù)語(yǔ)法格式如下:

其中,Q為正交矩陣,R為上三角矩陣,且滿足QR=A。

其中,Q為正交矩陣,R為對(duì)角元素按大小降序排列的上三角矩陣,E為單位矩陣的變換形式,且滿足QR=AE。
例如,已知A=[1 2 3;4 5 6;7 8 9],求該矩陣的QR分解。
MATLAB語(yǔ)言程序代碼及結(jié)果如下:

由上述結(jié)果可知,QR分解得到的Q是一個(gè)正交矩陣,R是一個(gè)上三角矩陣,且滿足Q?R=A。
同樣的矩陣A,若用另一種QR分解,結(jié)果如下:

由上述結(jié)果可知,QR分解得到的Q為正交矩陣,R為對(duì)角元素按大小降序排列的上三角矩陣,E為單位矩陣的變換形式,且滿足Q?R=A?E。
4.矩陣的奇異值分解
奇異值分解(Singular Value Decomposition)是線性代數(shù)中一種重要的矩陣分解方法,可以應(yīng)用在信號(hào)處理和統(tǒng)計(jì)學(xué)等領(lǐng)域。矩陣的奇異值分解是將一個(gè)一般矩陣A分解成一個(gè)與A同大小的對(duì)角矩陣S,兩個(gè)酉矩陣U和V,且滿足A=U?S?V'。
MATLAB語(yǔ)言用svd(A)函數(shù)實(shí)現(xiàn)奇異值分解。函數(shù)語(yǔ)法格式如下:
s=svd(A)產(chǎn)生矩陣A的奇異值向量。
[U,S,V]=svd(A)產(chǎn)生一個(gè)與A同大小的對(duì)角矩陣S、兩個(gè)酉矩陣U和V,且滿足A=U?S?V'。若A為m×n陣,則U為m×m陣,V為n×n陣。奇異值在S的對(duì)角線上,非負(fù)且按降序排列。
例如,已知A=[1 2 3;4 5 6],求該矩陣的奇異值分解。
MATLAB語(yǔ)言程序代碼及結(jié)果如下:

由上述結(jié)果可知,奇異值分解得到的一個(gè)與A同大小的對(duì)角矩陣S、兩個(gè)酉矩陣U和V,且滿足A=U?S?V'。
2.4.6 矩陣的信息獲取函數(shù)
MATLAB語(yǔ)言提供了很多函數(shù)以獲取矩陣的各種屬性信息,包括矩陣的大小、矩陣的長(zhǎng)度和矩陣元素的個(gè)數(shù)等。
1.size
MATLAB語(yǔ)言可以用size(A)函數(shù)來(lái)獲取矩陣A的行和列的數(shù)。函數(shù)的調(diào)用格式如下:
D=size(A)返回一個(gè)行和列數(shù)構(gòu)成兩個(gè)元素的行向量;
[M,N]=size(A)返回矩陣A的行數(shù)為M,列數(shù)為N。
例如,已知A=[1 2 3;4 5 6],求該矩陣的行數(shù)和列數(shù)。
MATLAB語(yǔ)言程序代碼及結(jié)果如下:

2.length
MATLAB語(yǔ)言可以用length(A)函數(shù)來(lái)獲取矩陣A的行數(shù)和列數(shù)的較大者,即length(A)=max(size(A))。函數(shù)的調(diào)用格式如下:
d=length(A)返回矩陣A的行數(shù)和列數(shù)的較大者。
例如:

3.numel
MATLAB語(yǔ)言可以用numel(A)函數(shù)來(lái)獲取矩陣A的元素的總個(gè)數(shù)。函數(shù)的調(diào)用格式如下:
n=numel(A)返回矩陣A的元素的總個(gè)數(shù)。
例如:

- Dreamweaver CS3 Ajax網(wǎng)頁(yè)設(shè)計(jì)入門(mén)與實(shí)例詳解
- Canvas LMS Course Design
- PowerShell 3.0 Advanced Administration Handbook
- 模型制作
- PHP開(kāi)發(fā)手冊(cè)
- 工業(yè)機(jī)器人入門(mén)實(shí)用教程(KUKA機(jī)器人)
- 西門(mén)子S7-200 SMART PLC實(shí)例指導(dǎo)學(xué)與用
- Windows內(nèi)核原理與實(shí)現(xiàn)
- Arduino &樂(lè)高創(chuàng)意機(jī)器人制作教程
- 樂(lè)高機(jī)器人—槍械武器庫(kù)
- Linux服務(wù)與安全管理
- 工業(yè)機(jī)器人安裝與調(diào)試
- Mastering Geospatial Analysis with Python
- 基于敏捷開(kāi)發(fā)的數(shù)據(jù)結(jié)構(gòu)研究
- 渲染王3ds Max三維特效動(dòng)畫(huà)技術(shù)