矩陣變換、矩陣求值


對一個矩陣進行某種運算和操作,其結果還是一個矩陣。

對角陣 

三角陣 

矩陣的轉置 

矩陣的旋轉 

矩陣的翻轉 

矩陣求逆等等

 

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的逆矩陣。

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'

 

 

隨着階數的增加,希爾伯特矩陣的條件數不斷增大,矩陣性能變差。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM