matlab矩陣代數學習筆記

矩陣分析

  • 行列式
    • MATLAB中求解矩陣行列式的函數是det。
    • MATLAB中可以通過函數inv求解矩陣的逆。
      • 矩陣的逆在求解線性方程組時是重要的,對於一般的給定線性方程組A*X=b,其解就可以通過X=inv(A)*b求得。
      • 需要注意的是,對於嚴重病態的矩陣或奇異矩陣,inv求解時會出現警告提示,因爲這時候其逆矩陣本來就不存在,或者非常容易受擾動而使得求解不精確。
      • 對於一般的長方形矩陣A,A*X=I和X*A=I中至少有一個沒有解,因此長方形矩陣A沒有逆矩陣。但MATLAB中可以用pinv函數求解長方形矩陣A的僞逆矩陣B=pinv(A),B一定滿足B*A=I或A*B=I中的一個等式。
    • MATLAB中求解矩陣秩的函數是rank。
  • 矩陣的範數和條件數
    • 矩陣條件數是用來刻畫矩陣病態程度的關鍵表徵量。矩陣的條件數越大,代表矩陣病態程度越嚴重。線性方程組A*X=b中,如果係數矩陣A嚴重病態,其精確求解將是很困難的。
      • (1)1-範數norm(A,1)實際上返回矩陣A列向元素和的最大值max(sum(abs(A)))。
      • (2)2-範數norm(A,2)返回矩陣A的最大奇異值max(svd(A))。
      • (3)無窮範數norm(A,inf)返回矩陣A行向元素和的最大值max(sum(abs(A’)))
      • norm(A)相當於norm(A,2),求解矩陣A的2-範數。
    • MATLAB中求解矩陣條件數的函數是cond。
      • 一個矩陣和它的逆矩陣一定具有相同的條件數。另外,對於秩爲0或非常接近0的奇異矩陣,其條件數會非常大,即矩陣病態程度很嚴重。
  • 矩陣的特徵值、特徵向量和特徵多項式
    • (1)d=eig(A)返回n*n矩陣A的n個特徵值。
    • (2)[V,D]=eig(A)返回以矩陣A的特徵向量爲列的矩陣V和以矩陣A的特徵值爲對角元素的矩陣D。
    • poly(A)生成矩陣A的特徵多項式,即det(λ*I-A)這一λ的n階多項式。矩陣A的特徵多項式的根,實際上就是矩陣A的特徵值。
  • 矩陣的標準正交基
    • 這樣的最少個數的一組基向量稱爲該空間的基,如果這些向量正好長度爲1,彼此正交,則稱爲標準正交基。
    • 在MATLAB中,可以通過orth函數產生矩陣A的線性空間的一組標準正交基,即若B=orth(A),則B的列向量組成了矩陣A的線性空間的一組標準正交基,於是B’*B=eye(rank(A))。
  • 矩陣分解
    • LU分解
      • LU分解,是把矩陣A分解爲兩個矩陣的乘積,其中一個是下三角矩陣置換後的矩陣,另一個是上三角矩陣。MATLAB中通過函數lu可以實現矩陣的LU分解。
        • (1)[L,U]=lu(A)把矩陣A分解爲下三角矩陣的置換矩陣L和上三角矩陣U,滿足A=L*U。
        • (2)[L,U,P]=lu(A)的分解結果中L是一個下三角矩陣,U是一個上三角矩陣,P是一個置換矩陣,滿足LU = PA。
    • Cholesky分解
      • 一個對稱正定矩陣,可以分解爲一個下三角矩陣和一個上三角矩陣的乘積,這種分解稱爲Cholesky分解。MATLAB中通過chol函數實現矩陣的Cholesky分解。
      • R=chol(A)得到一個上三角矩陣,滿足R’*R=A。
      • 因爲chol只能分解對稱正定矩陣,因此使用chol之前最好通過eig命令檢查矩陣A的所有特徵值是否爲正(即矩陣是否正定)。
    • QR分解
      • QR分解是把矩陣分解爲一個正交矩陣和一個上三角矩陣的乘積。MATLAB中實現QR分解的命令是qr。
      • [Q,R]=qr(A)把矩陣A分解爲正交矩陣Q和上三角矩陣R,滿足A=Q*R。
      • QR分解不僅適用於分解方陣,也可以分解長方形矩陣。
    • SVD分解(奇異值分解)
      • 奇異值分解也是常用的矩陣分解之一。MATLAB中通過svd函數實現矩陣的奇異值分解。
        • (1)s=svd[A]返回矩陣A的奇異值組成的列向量。
        • (2)[U,S,V]=svd(A)將矩陣A分解爲3個矩陣的乘積,即A=USV’:其中U和V是正交矩陣,S是一個對角矩陣,其對角元素爲矩陣A奇異值的降序排列。
    • Schur分解
      • MATLAB中實現Schur分解的命令是schur。其語法格式爲:
      • 其中,U是一個正交矩陣,T是一個上三角矩陣,稱爲A的Schur矩陣,並且滿足A=UTU’。
  • 矩陣的對角元素操作
    • MATLAB中支持的對矩陣對角元素的操作包括:提取對角元素,求矩陣對角元素的和(矩陣的跡),提取矩陣的上三角或下三角部分。
      • (1)函數diag提取矩陣的對角元素爲一個向量。
      • (2)函數trace計算矩陣的跡。
      • (3)函數tril提取矩陣的下三角部分。
      • (4)函數triu提取矩陣的上三角部分。
  • 矩陣分析函數總結
    總結圖片

線性方程組

  • 線性方程組的表示和種類
    • (1)當方程個數等於未知數個數,即係數矩陣A是一個方陣而且滿秩時,即rank(A)=m=n,此線性方程組具有唯一解,稱爲恰定方程組
    • (2)當方程個數小於未知數個數,即m< n時,線性方程組有無窮多個可能的解,稱爲欠定方程組。
    • (3)當有效方程個數(線性無關的方程個數)大於未知數個數時(一般m>n都對應這種情況),線性方程組肯定沒有精確解,稱爲超定方程組。
  • 線性方程組的MATLAB求解
    • 高斯消元法
      • 求解線性方程組可以通過高斯消元法,即將擴展矩陣[A b]通過行方向的線性運算變形爲[D nb]形式,其中D和A尺寸相同且其最左上部分是一個單位矩陣。
      • (1)對於恰定方程組,D是和A同尺寸的單位矩陣,此時方程組的解的每一個分量可以通過X(i)=nb(i)/D(i,i)計算得到。
      • (2)對於欠定方程組,D的左上部是一個比A小的k*k的單位矩陣,這時候把i>k的X(i)置爲0,i<=k的X(i)就可以通過X(i)=nb(i)/D(i,i)計算得到。
      • (3)對於超定方程組,高斯消元后只能看出該方程組沒有解。
    • 矩陣除法求解
      • 求解線性方程組最簡單的辦法是用矩陣的除法。AX=b的解可以由X=A\b得到,XA =b的解可以由X=b/A得到,注意,這裏應用左除和右除對應的方程組形式的不同。
      • 矩陣除法求解線性方程組,不會返回方程組類型的信息,即無論哪種類型的方程組,MATLAB矩陣除法都會返回一個計算結果。對於恰定方程組,這個結果就是其唯一解;對於欠定方程組,此結果是其一個特解;對於超定方程組,計算結果是方程組最小二乘意義上的解。
    • 矩陣求逆求解
      • 求解線性方程組也可以通過逆矩陣的方法。對於方程組A*X=b:
      • (1)當A是方陣時,X=inv(A)*b。
      • (2)當A不是方陣時,X=pinv(A)*b。
  • 特殊矩陣
    • 特殊矩陣生成函數
      特殊矩陣生成函數
    • 稀疏矩陣
      • 在通常情況下,MATLAB中順序存儲普通矩陣的各個元素。但在有些應用領域,矩陣中零元素非常多,在龐大的矩陣中只有非常有限的非零元素,這時候如果還用順序存儲方式,會耗費很多不必要的內存空間,而且對於矩陣運算、處理也帶來了不必要的複雜性。針對這種情況,MATLAB中可以採用稀疏矩陣提高存儲、運算效率。
      • MATLAB存儲稀疏矩陣時,只存儲矩陣中的非零元素及其位置索引。這對於大規模的零元素居多的數組存儲是非常高效的。
      • MATLAB通過3個數組來存儲一個m行n列的稀疏矩陣的信息。
        • 第一個數組是浮點類型,存儲了稀疏矩陣中所有非零元素的值(例如k個)。
        • 第二個數組是整型,存儲了這k個非零元素的行索引。
        • 第三個數組是整型,存儲了原來的m行n列元素中每一列第一個非零元素在前兩個數組中的位置,以及第n列最後一個非零元素在前兩個數組中的位置。
    • 稀疏矩陣的創建
      • MATLAB中可以通過sparse函數把普通矩陣轉換成稀疏矩陣,也可以通過full函數把稀疏矩陣轉換爲對應的普通矩陣。
    • 稀疏矩陣函數
      稀疏矩陣常用函數
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章