對一個矩陣進行某種運算和操作,其結果還是一個矩陣。
對角陣
三角陣
矩陣的轉置
矩陣的旋轉
矩陣的翻轉
矩陣求逆等等
1.對角陣
對角陣:只有對角線上有非零元素的矩陣。
數量矩陣:對角線上的元素相等的對角矩陣。
單位矩陣:對角線上的元素都為1的對角矩陣。
(1) 提取矩陣的對角線元素
diag(A):提取矩陣A主對角線元素,產生一個列向量。
diag(A,k):提取矩陣A第k條對角線的元素,產生一個列向量。
對角線如下:
(2) 構造對角陣
diag(V):以向量 V為主對角線元素,產生對角矩陣。
diag(V,k):以向量 V為第k條對角線元素,產生對角矩陣。
例子:先建立5×5矩陣A,然后將A的第一行元素乘以1,第二行乘以2,…,第五行乘以5。
>> A=[7,0,1,0,5;3,5,7,4,1;4,0,3,0,2;1,1,9,2,3;1,8,5,2,9]
A = 7 0 1 0 5
3 5 7 4 1
4 0 3 0 2
1 1 9 2 3
1 8 5 2 9
>> D=diag(1:5); //對角線元素為12345
>> D*A //對角陣左乘一個矩陣時,即矩陣對角線的第一個元素,乘以該矩陣的第一行。
ans = 7 0 1 0 5
6 10 14 8 2
12 0 9 0 6
4 4 36 8 12
5 40 25 10 45
要將A的各列元素分別乘以對角陣的對角線元素,如何實現?——對角陣右乘矩陣A
要將A的各列元素分別乘以對角陣的對角線元素,可以用一個對角陣右乘矩陣A。
>> A=[7,0,1,0,5;3,5,7,4,1;4,0,3,0,2;1,1,9,2,3;1,8,5,2,9]
A = 7 0 1 0 5
3 5 7 4 1
4 0 3 0 2
1 1 9 2 3
1 8 5 2 9
>> D=diag(1:5);
>> A*D
ans =7 0 3 0 25
3 10 21 16 5
4 0 9 0 10
1 2 27 8 15
1 16 15 8 45
2.三角陣
上三角陣:矩陣的對角線以下的元素全為零的矩陣。
下三角陣:對角線以上的元素全為零的矩陣。
(1)上三角矩陣
triu(A):提取矩陣A的主對角線及以上的元素。
triu(A,k):提取矩陣A的第k條對角線及以上的元素。
>> triu(ones(4),-1) //ones產生四階全1矩陣
ans =1 1 1 1
1 1 1 1
0 1 1 1
0 0 1 1
(2) 下三角矩陣
在MATLAB中,提取矩陣A的下三角矩陣的函數是tril,其用法與triu函
數完全相同。
3.矩陣的轉置
原矩陣的第一行變成目標矩陣的第一列,以此類推。
轉置運算符是小數點后面接單引號(.')。
共軛轉置,其運算符是單引號('),它在轉置的基礎上還要取每個數的復共軛。
>> A=[1,3;3+4i,1-2i]
A = 1.0000 + 0.0000i 3.0000 + 0.0000i
3.0000 + 4.0000i 1.0000 - 2.0000i
>> A.'
ans =1.0000 + 0.0000i 3.0000 + 4.0000i
3.0000 + 0.0000i 1.0000 - 2.0000i
>> A'
ans =1.0000 + 0.0000i 3.0000 - 4.0000i
3.0000 + 0.0000i 1.0000 + 2.0000i
矩陣的轉置:把源矩陣的第一行變成 目標矩陣的第一列,第二行變成第二 列,…,依此類推。
如果矩陣的元素是實數,那么轉置和共軛轉置的結果是一樣的。
4.矩陣的旋轉
rot90(A,k):將矩陣A逆時針方向旋轉90º的k倍,當k為1時可省略。
>> A=[1,3,2;-3,2,1;4,1,2]
A = 1 3 2
-3 2 1
4 1 2
>> rot90(A)
ans =2 1 2
3 2 1
1 -3 4
>> rot90(A,2)
ans =2 1 4
1 2 -3
2 3 1
5.矩陣的翻轉
對矩陣實施左右翻轉是將原矩陣的第一列和最后一列調換,第二列和倒數第二列調換,…,依此類推。
fliplr(A):對矩陣A實施左右翻轉。
flipud(A):對矩陣A實施上下翻轉。 //將原矩陣的第一行和最后一行調換,第二行和倒數第二行調換,…,依此類推。
例2 驗證魔方陣的主對角線、副對角線元素之和相等。
>> A=magic(5);
>> D1=diag(A); //提取A的主對角線生成D1
>> sum(D1)
ans = 65
>> B=flipud(A); //上下翻轉 副對角線變成主對角線
>> D2=diag(B);
>> sum(D2)
ans = 65
對矩陣A實施上下翻轉得到矩陣B,這樣A的副對角線就移到了B的主對角線
5階魔方陣的主對角線、副對角線元素之和相等,都為65。
6.矩陣的求逆
l 對於一個方陣A,如果存在一個與其同階的方陣B,使得AB=BA=I (I為單位矩陣),則稱B為A的逆矩陣,當然,A也是B的逆矩陣。
l inv(A):求方陣A的逆矩陣。
例3 用求逆矩陣的方法解線性方程組。
在線性方程組Ax=b兩邊各左乘A-1,得x=A-1b。
>> A=[1,2,3;1,4,9;1,8,27];
>> b=[5;-2;6];
>> x=inv(A)*b
x = 23.0000 -14.5000 3.6667
>> x=A\b //利用左除求線性方程組
x = 23.0000 -14.5000 3.6667
2.3矩陣求值
矩陣的行列式值 矩陣的秩 矩陣的跡 矩陣的范數 矩陣的條件數
1.方陣的行列式
把一個方陣看作一個行列式,並對其按行列式的規則求值,這個值就稱為所對應的行列式的值。
det(A):求方陣A所對應的行列式的值。
例1 驗證det(A-1)=1/det(A)。
>> format rat
>> A=[1,3,2;-3,2,1;4,1,2]
A =
1 3 2
-3 2 1
4 1 2
>> det(inv(A))
ans =1/11
>> 1/det(A)
ans = 1/11
2.矩陣的秩
矩陣線性無關的行數或列數稱為矩陣的秩。
rank(A):求矩陣A的秩。
例2 求3~20階魔方陣的秩。
for n=3:20
r(n)=rank(magic(n)); //每循環一次產生魔方陣並求秩
end
bar(r) //繪制直方圖
grid on
axis([2,21,0,20])
[3:20;r(3:20)]
分為三類:
奇數階魔方陣秩為n,即奇數階魔方陣是滿秩矩陣。
一重偶數階魔方陣秩為n/2+2(n是2的倍數,但非4的倍數)。
雙重偶數階魔方陣秩均為3 (階數是4的倍數)。
3.矩陣的跡
矩陣的跡等於矩陣的對角線元素之和,也等於矩陣的特征值之和。
trace(A):求矩陣A的跡。
>> A=[1,3,2;-3,2,1;4,1,2]
A =1 3 2
-3 2 1
4 1 2
>> b = trace(A) //求矩陣的跡
b = 5
>> t = sum(diag(A)) //提取主對角線元素在求和
t = 5
4.向量和矩陣的范數
矩陣或向量的范數用來度量矩陣或向量在某種意義下的長度。
(1)向量的3種常用范數
設向量v含有n個元素。
在MATLAB中,求向量范數的函數為:
norm(V)或norm(V,2):計算向量V的2—范數。
norm(V,1):計算向量V的1—范數。
norm(V,inf):計算向量V的∞—范數。
(2)矩陣的范數
從屬於3中向量范數,矩陣的范數計算公式如下:
MATLAB提供了求3種矩陣范數的函數,其函數調用格式與求向量的范數的函數完全相同。
>> x=[2 0 1;-1 1 0;-3 3 0]
x = 2 0 1
-1 1 0
-3 3 0
>> n = norm(x) //二范數
n = 4.7234
>> n = norm(x,1) //一范數
n = 6
5.矩陣的條件數——描述矩陣性能
矩陣A的條件數等於A的范數與A的逆矩陣的范數的乘積。
條件數>1,條件數越接近於1,矩陣的性能越好,反之,矩陣的性能越差。
在MATLAB中,計算矩陣A的3種條件數的函數是:
cond(A,1):計算A的1—范數下的條件數。
cond(A)或cond(A,2):計算A的2—范數數下的條件數。
cond(A,inf):計算A的∞—范數下的條件數。
例3 求2~10階希爾伯特矩陣的條件數。
for n=2:10
c(n)=cond(hilb(n));
end
format long
c'
隨着階數的增加,希爾伯特矩陣的條件數不斷增大,矩陣性能變差。