线性代数学习记录


主页      博客      矩阵的运算及其运算规则      矩阵运算与常用矩阵      矩阵运算     


学习线性代数主要是各种机器人坐标变换及图像处理数据矩阵运算要用;

本文主要是转载;

目录如下:

=======================================================================

6.5 矩阵的运算及其运算规则

转载自: http://www2.edu-edu.com.cn/lesson_crs78/self/j_4184/soft/ch0605.html

一、矩阵的加法与减法


  1、运算规则
  设矩阵
  则
     
  简言之,两个矩阵相加减,即它们相同位置的元素相加减!
  注意:只有对于两个行数、列数分别相等的矩阵(即同型矩阵),加减法运算才有意义,即加减运算是可行的.

  2、 运算性质 (假设运算都是可行的)
  满足交换律和结合律
  交换律 
  结合律 

二、矩阵与数的乘法


  1、 运算规则
  乘矩阵A,就是将数乘矩阵A中的每一个元素,记为
  特别地,称称为的负矩阵.
  2、 运算性质
  满足结合律和分配律
  结合律: (λμ)A=λ(μA) (λ+μ)A =λA+μA
  分配律: λ (A+B)=λA+λB

  典型例题
  例6.5.1 已知两个矩阵
  满足矩阵方程,求未知矩阵
   由已知条件知
    
    

三、矩阵与矩阵的乘法


  1、 运算规则
  设,则A与B的乘积是这样一个矩阵:
  (1) 行数与(左矩阵)A相同,列数与(右矩阵)B相同,即
  (2) C的第行第列的元素由A的第行元素与B的第列元素对应相乘,再取乘积之和.

  典型例题
  例6.5.2 设矩阵
  计算
   的矩阵.设它为
    

    
  想一想:设列矩阵,行矩阵的行数和列数分别是多少呢
  是3×3的矩阵,是1×1的矩阵,即只有一个元素.

  课堂练习
  1、设,求
  2、在第1道练习题中,两个矩阵相乘的顺序是A在左边,B在右边,称为A左乘B或B右乘A.如果交换顺序,让B在左边,A在右边,即A右乘B,运算还能进行吗?请算算试试看.并由此思考:两个矩阵应当满足什么条件,才能够做乘法运算.
  3、设列矩阵,行矩阵,求,比较两个计算结果,能得出什么结论吗?
  4、设三阶方阵,三阶单位阵为,试求,并将计算结果与A比较,看有什么样的结论.

  解:
  第1题
  第2题
  对于
  求是有意义的,而是无意义的.

  结论1 只有在下列情况下,两个矩阵的乘法才有意义,或说乘法运算是可行的:左矩阵的列数=右矩阵的行数.
  第3题
  矩阵,的矩阵.
         
           
    结论2 在矩阵的乘法中,必须注意相乘的顺序.即使在均有意义时,也未必有=成立.可见矩阵乘法不满足交换律.
  第4题
  计算得:
  结论3 方阵A和它同阶的单位阵作乘积,结果仍为A,即
  单位阵在矩阵乘法中的作用相当于数1在我们普通乘法中的作用.

  典型例题
  例6.5.3 设,试计算
   
      
      
    
      
      
    结论4 两个非零矩阵的乘积可以是零矩阵.由此若,不能得出的结论.

  例6.5.4 利用矩阵的乘法,三元线性方程组
  可以写成矩阵的形式
  若记系数、未知量和常数项构成的三个矩阵分别为
  则线性方程组又可以简写为矩阵方程的形式:

  2、 运算性质(假设运算都是可行的)
  (1) 结合律 
  (2) 分配律 (左分配律);
         (右分配律).
  (3) 
   3、 方阵的幂
  定义:设A是方阵,是一个正整数,规定
显然,记号表示个A的连乘积.

四、矩阵的转置


  1、 定义
  定义:将矩阵A的行换成同序号的列所得到的新矩阵称为矩阵A的转置矩阵,记作
  例如,矩阵的转置矩阵为
  2、运算性质(假设运算都是可行的)
  (1) 
  (2) 
  (3) 
  (4) 是常数.

  典型例题
  例6.5.5  利用矩阵
  验证运算性质:
   
  而
    
  所以
   

  定义:如果方阵满足,即,则称A为对称矩阵
  对称矩阵的特点是:它的元素以主对角线为对称轴对应相等.

五、方阵的行列式


  1、定义
  定义:由方阵A的元素所构成的行列式(各元素的位置不变),称为方阵A的行列式,记作

  2 、运算性质
  (1) (行列式的性质)
  (2) ,特别地:
  (3) 是常数,A的阶数为n)
  思考:设A为阶方阵,那么的行列式与A的行列式之间的关系为什么不是,而是

  不妨自行设计一个二阶方阵,计算一下
  例如,则
  于是,而
  思考:,有几种方法可以求
    方法一:先求矩阵乘法,得到一个二阶方阵,再求其行列式.
    方法二:先分别求行列式,再取它们的乘积.

=======================================================================
矩阵运算与常用矩阵

转载自: https://zhuanlan.zhihu.com/p/362082020

概念

由 m*n 个数排成的m行n列的数表称为m行n列的矩阵,简称 m*n 矩阵。记作:

\mathbf{A}=\begin{bmatrix} a_{11} & a_{12} & ... &a_{1n} \\ a_{21} & a_{22} & ... &a_{2n} \\ ... & ... & ... &... \\ a_{m1} & a_{m2} & ... &a_{mn} \end{bmatrix}

这 m*n 个数称为矩阵的元素,简称为元,数 a_{ij} 位于矩阵 \mathbf{A} 的第i行第j列,称为矩阵 \mathbf{A} 的 (i, j) 元。

元素是实数的矩阵称为实矩阵,元素是复数的矩阵称为复矩阵

若多个矩阵的行数和列数相同,我们称它们为同型矩阵

行数与列数都等于n的矩阵称为n阶矩阵或n阶方阵。若多个方阵的行数(行数=列数)相同,我们称它们为同阶矩阵

基本运算

矩阵的加减法和矩阵的数乘合称矩阵的线性运算

加法

只有同型矩阵之间才可以进行加法运算,将两个矩阵相同位置的元相加即可,m行n列的两个矩阵相加后得到一个新的m行n列矩阵,例如:

\begin{bmatrix} a_{11} & a_{12} & ... &a_{1n} \\ a_{21} & a_{22} & ... &a_{2n} \\ ... & ... & ... &... \\ a_{m1} & a_{m2} & ... &a_{mn} \end{bmatrix} + \begin{bmatrix} b_{11} & b_{12} & ... &b_{1n} \\ b_{21} & b_{22} & ... &b_{2n} \\ ... & ... & ... &... \\ b_{m1} & b_{m2} & ... &b_{mn} \end{bmatrix} = \begin{bmatrix} a_{11} + b_{11} & a_{12} + b_{12} & ... &a_{1n} + b_{1n} \\ a_{21} + b_{21} & a_{22} + b_{22} & ... &a_{2n} + b_{2n} \\ ... & ... & ... &... \\ a_{m1} + b_{m1} & a_{m2} + b_{m2} & ... &a_{mn} + b_{mn} \end{bmatrix}

\begin{bmatrix} 1 & 3 & 5 & 7 \\ 2 & 4 & 6 & 8 \end{bmatrix} + \begin{bmatrix} 4 & 3 & 1 & 4 \\ 5 & 3 & 1 & 6 \end{bmatrix} = \begin{bmatrix} 5 & 6 & 6 & 11 \\ 7 & 7 & 7 & 14 \end{bmatrix}

运算律

交换律: \mathbf{A} + \mathbf{B} = \mathbf{B} + \mathbf{A}

结合律: \left ( \mathbf{A} + \mathbf{B}\right ) + \mathbf{C} = \mathbf{A} + \left ( \mathbf{B} + \mathbf{C} \right )

减法

与加法类似,如下:

\begin{bmatrix} a_{11} & a_{12} & ... &a_{1n} \\ a_{21} & a_{22} & ... &a_{2n} \\ ... & ... & ... &... \\ a_{m1} & a_{m2} & ... &a_{mn} \end{bmatrix} - \begin{bmatrix} b_{11} & b_{12} & ... &b_{1n} \\ b_{21} & b_{22} & ... &b_{2n} \\ ... & ... & ... &... \\ b_{m1} & b_{m2} & ... &b_{mn} \end{bmatrix} = \begin{bmatrix} a_{11} - b_{11} & a_{12} - b_{12} & ... &a_{1n} - b_{1n} \\ a_{21} - b_{21} & a_{22} - b_{22} & ... &a_{2n} - b_{2n} \\ ... & ... & ... &... \\ a_{m1} - b_{m1} & a_{m2} - b_{m2} & ... &a_{mn} - b_{mn} \end{bmatrix}

\begin{bmatrix} 1 & 3 & 5 & 7 \\ 2 & 4 & 6 & 8 \end{bmatrix} - \begin{bmatrix} 4 & 3 & 1 & 4 \\ 5 & 3 & 1 & 6 \end{bmatrix} = \begin{bmatrix} -3 & 0 & 4 & 3 \\ -3 & 1 & 5 & 2 \end{bmatrix}

数乘

数乘即将矩阵乘以一个常量,矩阵中的每个元都与这个常量相乘,例如:

k * \begin{bmatrix} a_{11} & a_{12} & ... &a_{1n} \\ a_{21} & a_{22} & ... &a_{2n} \\ ... & ... & ... &... \\ a_{m1} & a_{m2} & ... &a_{mn} \end{bmatrix} = \begin{bmatrix} k * a_{11} & k * a_{12} & ... &k * a_{1n} \\k * a_{21} & k * a_{22} & ... &k * a_{2n} \\ ... & ... & ... &... \\ k * a_{m1} & k * a_{m2} & ... &k * a_{mn} \end{bmatrix}

5*\begin{bmatrix} 4 & 3 & -1 & 4 \\ 5 & -3 & 1 & 6 \end{bmatrix} = \begin{bmatrix} 20 & 15 & -5 & 20 \\ 25 & -15 & 5 & 30 \end{bmatrix}

运算律

k(v\mathbf{A}) = v(k\mathbf{A})

k(v\mathbf{A}) = (vk)\mathbf{A}

(k+v)\mathbf{A} = v\mathbf{A} + k\mathbf{A}

k(\mathbf{A} + \mathbf{B}) = k\mathbf{A} + k\mathbf{B}

转置

把矩阵 A 的行和列互相交换所产生的矩阵称为A的转置矩阵(标记为 A^T ),这一过程称为矩阵的转置。

\begin{bmatrix} a_{11} & a_{12} & ... &a_{1n} \\ a_{21} & a_{22} & ... &a_{2n} \\ ... & ... & ... &... \\ a_{m1} & a_{m2} & ... &a_{mn} \end{bmatrix}^{T} = \begin{bmatrix} a_{11} & a_{21} & ... &a_{m1} \\ a_{12} & a_{22} & ... &a_{m2} \\ ... & ... & ... &... \\ a_{1n} & a_{2n} & ... &a_{mn} \end{bmatrix}

\begin{bmatrix} 1 & 3 & 5 & 7 \\ 2 & 4 & 6 & 8 \end{bmatrix}^{T} = \begin{bmatrix} 1 & 2 \\ 3 & 4\\ 5 & 6\\ 7 & 8 \end{bmatrix}

运算律

(\mathbf{A}^{T})^{T}=\mathbf{A}

(k\mathbf{A})^{T}=k\mathbf{A}^{T}

(\mathbf{A}\mathbf{B})^{T}=\mathbf{B}^{T}\mathbf{A}^{T}

共轭

对于一个复数矩阵 \mathbf{A} ,我们对其做实部不变,虚部取负的操作即为共轭操作,记作 \bar{\mathbf{A}} 。例如

\mathbf{A}=\begin{bmatrix} 3+i & 5\\ 2-2i & i \end{bmatrix}

\bar{\mathbf{A}}=\begin{bmatrix} 3-i & 5\\ 2+2i & -i \end{bmatrix}

乘法

两个矩阵的乘法仅当第一个矩阵的列数和另一个矩阵的行数相等时才能定义,m×n 矩阵 \mathbf{A}n×p 矩阵 \mathbf{B} 相乘,会得到一个 m×p 矩阵 \mathbf{C} ,记为 \mathbf{C} = \mathbf{A}\mathbf{B}

\mathbf{C} 中第 i 行 j 列的元即为:

c_{ij} = a_{i1}b_{1j}+a_{i2}b_{2j}+\cdot \cdot \cdot +a_{in}b_{nj}=\sum_{r=1}^{n}a_{ir}b_{rj}

式子看着很复杂,其实很简单, \mathbf{C} 中第i行第j列的元素的值为: \mathbf{A} 中第i行所有元素 与 \mathbf{B} 中第j列的所有元素一一对应相乘,然后将相乘后的所有值相加

例如:

\begin{bmatrix} 1 & 3 & 5 \\ 2 & 4 & 6 \end{bmatrix} * \begin{bmatrix} 7 & 9 \\ 8 & 0 \\ -1 & 1 \end{bmatrix} = \begin{bmatrix} 1*7+3*8+5*-1 & 1*9+3*0+5*1 \\ 2*7+4*8+6*-1 & 2*9+4*0+6*1 \end{bmatrix} = \begin{bmatrix} 26 & 14 \\ 40 & 24 \end{bmatrix}

我们看结果中的第一行第二列 1*9+3*0+5*1,不就是前者的第一行1,3,5和后者的第二列9,0,1互相相乘然后相加。

运算律

(\mathbf{A}\mathbf{B})\mathbf{C} = \mathbf{A}(\mathbf{B}\mathbf{C})

(\mathbf{A}+\mathbf{B})\mathbf{C} = \mathbf{A}\mathbf{C}+\mathbf{B}\mathbf{C}

\mathbf{C}(\mathbf{A}+\mathbf{B}) = \mathbf{C}\mathbf{A} + \mathbf{C}\mathbf{B}

不满足交换律,即 \mathbf{A}\mathbf{B} \neq \mathbf{B}\mathbf{A}

例如1*3的矩阵乘以3*1的矩阵得到的是1*1的矩阵(每n行乘以每n列,左边只有一行,右边只有一列,向量的点乘就属于这种情况):

\begin{bmatrix} 1 & 3 & 5  \end{bmatrix} * \begin{bmatrix} 2\\4\\6 \end{bmatrix} = \begin{bmatrix} 1*2+3*4+5*6 \end{bmatrix} = \begin{bmatrix} 44 \end{bmatrix}

而把它们反过来,即3*1的矩阵乘以1*3的矩阵,就变成了3*3的矩阵:

\begin{bmatrix} 2\\4\\6 \end{bmatrix} *\begin{bmatrix} 1 & 3 & 5  \end{bmatrix} = \begin{bmatrix} 2*1&2*3&2*5\\4*1&4*3&4*5\\6*1&6*3&6*5 \end{bmatrix} = \begin{bmatrix} 2&6&10\\4&12&20\\6&18&30 \end{bmatrix}


矩阵与向量相乘

向量用矩阵表示的话,是属于一个n*1的矩阵,例如二维向量为 \begin{bmatrix} x\\ y \end{bmatrix} ,三维向量为 \begin{bmatrix} x\\ y\\ z \end{bmatrix}

因此一个 m * 2 的矩阵可以乘以一个二维向量,m * 3 的矩阵可以乘以一个三维向量。

这点对于向量的变换运算非常的重要,例如我们想要将向量 (x, y) 做一个y轴的对称操作,即变为 (-x, y) ,只需要用下面的矩阵乘以这个向量即可:

\begin{bmatrix} -1 & 0 \\ 0 & 1 \end{bmatrix} * \begin{bmatrix} x \\ y \end{bmatrix} =\begin{bmatrix} -x \\ y \end{bmatrix}

矩阵表示向量的点积

\vec{a} \cdot \vec{b} = \vec{a}^{T} \vec{b} = \begin{bmatrix} x_{a} & y_{a} & z_{a} \end{bmatrix} * \begin{bmatrix} x_{b} \\ y_{b} \\ z_{b} \end{bmatrix}= \begin{bmatrix} x_{a}x_{b}+y_{a}y_{b}+z_{a}z_{b} \end{bmatrix}

矩阵表示向量的叉积

\vec{a} \times \vec{b} = \begin{bmatrix} 0 & -z_{a} & y_{a}\\z_{a} & 0 & -x_{a}\\-y_{a} & x_{a} &0 \end{bmatrix} * \begin{bmatrix} x_{b} \\ y_{b} \\ z_{b} \end{bmatrix}= \begin{bmatrix} 0*x_{b}-z_{a}y_{b}+y_{a}z_{b}\\z_{a}x_{b}+0*y_{b}-x_{a}z_{b}\\-y_{a}x_{b}+x_{a}y_{b}+0*z_{b} \end{bmatrix}

至于左边这个矩阵怎么来的?可以看后续的三维旋转推导。

哈达玛积(Hadamard product)

矩阵还有一种运算叫作哈达玛积或者基本积,该运算类似于矩阵的加减法,将两个m*n的同阶矩阵 \mathbf{A}\mathbf{B} 的对应位置相乘得到一个m*n的新矩阵 \mathbf{C} ,常记作 \mathbf{C}=\mathbf{A}\ast\mathbf{B}\mathbf{C}=\mathbf{A}\circ\mathbf{B}

例如:

\begin{bmatrix} a_{11} & a_{12} & ... &a_{1n} \\ a_{21} & a_{22} & ... &a_{2n} \\ ... & ... & ... &... \\ a_{m1} & a_{m2} & ... &a_{mn} \end{bmatrix} \circ \begin{bmatrix} b_{11} & b_{12} & ... &b_{1n} \\ b_{21} & b_{22} & ... &b_{2n} \\ ... & ... & ... &... \\ b_{m1} & b_{m2} & ... &b_{mn} \end{bmatrix} = \begin{bmatrix} a_{11} * b_{11} & a_{12} * b_{12} & ... &a_{1n} * b_{1n} \\ a_{21} * b_{21} & a_{22} * b_{22} & ... &a_{2n} * b_{2n} \\ ... & ... & ... &... \\ a_{m1} * b_{m1} & a_{m2} * b_{m2} & ... &a_{mn} * b_{mn} \end{bmatrix}

\begin{bmatrix} 1 & 3 & 5 & 7 \\ 2 & 4 & 6 & 8 \end{bmatrix} \circ \begin{bmatrix} 4 & 3 & 1 & 4 \\ 5 & 3 & 1 & 6 \end{bmatrix} = \begin{bmatrix} 4 & 9 & 5 & 28 \\ 10 & 12 & 6 & 48 \end{bmatrix}

运算律

\mathbf{A} \circ 0 = 0

\mathbf{A} \circ \mathbf{B} = \mathbf{B} \circ \mathbf{A}

( \mathbf{A} + \mathbf{B}) \circ \mathbf{C} = (\mathbf{A} \circ\mathbf{C})+ ( \mathbf{B} \circ \mathbf{C} ) \


常用的特殊的矩阵

单位矩阵

单位矩阵是个方阵,从左上角到右下角的对角线(称为主对角线)上的元素均为1,除此以外全都为0,即

\left\{\begin{matrix} a_{ij}=1 &(i=j)\\  a_{ij}=0 &(i\ne j) \end{matrix}\right.

单位矩阵记为 \mathbf{I}_{n} 或者 \mathbf{E}_{n} ,通常用 \mathbf{I}\mathbf{E} 表示,例如:

I_{2} = \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix}

I_{3} = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix}

重要性质:任何矩阵 \mathbf{A} 乘以单位矩阵 \mathbf{I} ,或者单位矩阵 \mathbf{I} 乘以任何矩阵 \mathbf{A} 的结果都为 \mathbf{A} 。记作: \mathbf{A}\mathbf{I} = \mathbf{A}\mathbf{I}\mathbf{A} = \mathbf{A}


逆矩阵

\mathbf{A} 是一个n阶矩阵,若存在另一个n阶矩阵 \mathbf{B} ,使得: \mathbf{A}\mathbf{B} = \mathbf{B}\mathbf{A} = \mathbf{I}\mathbf{I} 为单位矩阵),则称方阵 \mathbf{A} 可逆,并称方阵 \mathbf{B}\mathbf{A} 的逆矩阵。

若矩阵 \mathbf{A} 可逆,则其的逆矩阵是唯一的,记为 \mathbf{A}^{-1} ,则 \mathbf{A}\mathbf{A}^{-1} = \mathbf{I}\mathbf{A}^{-1}\mathbf{A} = \mathbf{I}

一些性质:

\mathbf{A} 可逆,则 (\mathbf{A}^{-1})^{-1} = \mathbf{A}

\mathbf{A} 可逆,则其转置矩阵 \mathbf{A}^{T} 也可逆,且 (\mathbf{A}^{T})^{-1} = (\mathbf{A}^{-1})^{T}

\mathbf{A}\mathbf{B} 都可逆,则 (\mathbf{A}\mathbf{B})^{-1} = \mathbf{B}^{-1}\mathbf{A}^{-1}


对角矩阵

当一个方阵上所有非对角线上的元素均为0时,即 i \neq ja_{ij} = 0 ,该矩阵即为对角矩阵。例如:

\begin{bmatrix} 1 & 0 & 0 \\ 0 & 5 & 0 \\ 0 & 0 & 2 \end{bmatrix}

它可用于缩放变换,假如我们要将 (x, y) 分别缩放m倍和n倍,变为 (mx, ny) 那么就可以用下面矩阵来表达:

\begin{bmatrix} m & 0\\ 0 & n \end{bmatrix} * \begin{bmatrix} x\\ y \end{bmatrix} =\begin{bmatrix} m* x\\ n * y \end{bmatrix}

该对角矩阵也可称为缩放矩阵


正交矩阵

如果有个n阶实矩阵 \mathbf{A} ,它满足 \mathbf{A} \mathbf{A}^{T} = \mathbf{I}\mathbf{A}^{T} \mathbf{A} = \mathbf{I} ,则称 \mathbf{A} 为正交矩阵,正交矩阵常用字母 \mathbf{Q} 来表示。

我们可以发现这和逆矩阵的定义( \mathbf{A}\mathbf{A}^{-1} = \mathbf{I} )很像,因此正交矩阵的转置等于其逆矩阵,即 \mathbf{A}^{T} = \mathbf{A}^{-1}

除此之外, \mathbf{A}\mathbf{A}^{T}各行都是单位向量且两两正交,且各列也都是单位向量且两两正交

推导:

假设 \mathbf{A} = \begin{bmatrix} a & b \\ c & d \end{bmatrix} 为正交矩阵,那么 \mathbf{A}^{T} = \begin{bmatrix} a & c \\ b & d \end{bmatrix} ,可得:

\mathbf{A} \mathbf{A}^{T} = \begin{bmatrix} aa+bb & ac+bd \\ ca+db & cc+dd \end{bmatrix} = \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix}

可得 ac+bd=0,aa+bb=cc+dd=1。

若按照 \mathbf{A} 的行来取向量,我们可得到向量 \vec{i}=(a,b)\vec{j}=(c,d)

做点积得 \vec{i}\cdot \vec{j}=ac+bd ,前面已得到ac+bd=0,所以 \vec{i}\cdot \vec{j}=0 ,根据正交的定义可得,这两个向量正交。

然后再来取模,可得  | \vec{i} |=\sqrt{aa+bb} ,前面得到aa+bb=1,因此 \vec{i} 的模长为1,为单位向量, \vec{j} 同理为单位向量。

上面我们验证了 \mathbf{A} 中各行都是单位向量且两两正交,要验证每列也是这样的情况只需要使用 \mathbf{A}^{T} \mathbf{A} = \mathbf{I} 来推导即可。同样的在三维空间也可以用此方法来推导,用 3*3的矩阵相乘即可。


在坐标系中,我们x轴的单位向量为(1, 0, 0),y轴为(0, 1, 0),z轴为(0, 0, 1),那么他们所组成的矩阵即为:

 \begin{bmatrix} 1 & 0 & 0\\ 0 & 1& 0\\0& 0&1 \end{bmatrix}

它既是单位矩阵,又是正交矩阵。


=======================================================================
矩阵运算

转载自: https://blog.csdn.net/weixin_48524215/article/details/114497918

目录

1. 矩阵运算

矩阵运算包括矩阵分析、特征值求解、奇异值等

1.1 矩阵分析

1.1.0 向量和矩阵的范数运算


向量范数的函数

N=norm(x,p):对任意大于1的p值,返回向量x的p阶范数
N=norm(x):返回向量的2阶范数,相当于N=norm(x,2)
N=norm(x,inf):返回向量的 ∞ \infty 阶范数,相当于N=max(abs(x))
N=norm(x,-inf):返回向量的– ∞ \infty 阶范数,相当于N=min(abs(x))

矩阵范数的函数

N=norm(A):计算矩阵的2阶范数,也就是最大奇异值
N=norm(A,p):根据参数p的值不同,求不同阶的范数值
当p=1时,计算矩阵A的1阶范数,相当于max(sum(abs(A)))
当p=2时,计算矩阵A的2阶范数,相当于norm(A)
当p=inf时,计算矩阵A的 ∞ \infty 阶范数,相当于max(sum(abs(A’)))
当p=pro时,计算矩阵A的F范数(Frobenius范数),相当于sqrt(sum(diag(A’*A)))

求向量x的2阶范数范例:

当矩阵维数比较大时,会导致计算矩阵范数的时间比较长,并且当一个近似的范数值满足要求时,可以考虑用函数 normest( )来估计2阶范数值。
函数 normest( ) 最初是为了提供给稀疏矩阵(sparse matrix)使用的,同时它也能接受满矩阵的输入,一般在满矩阵维数比较大时使用

normest(S):估计矩阵S的2阶范数值
normest(S,tol):使用 tol 作为允许的相对误差

求矩阵的范式示例:

1.1.1 矩阵的秩

矩阵A中线性无关的列向量个数成为列秩线性无关的行向量个数称为行秩

rank(A):默认允许误差计算矩阵的秩
rank(A,tol):给定允许误差计算矩阵的秩,tol=max(size(A))*eps(norm(A))

求矩阵的秩示例:

1.1.2 矩阵的行列式

det(A):计算矩阵A的行列式


1.1.3 矩阵的迹

矩阵的迹定义为矩阵对角元素之和

trace(A):矩阵A的迹


1.1.4 矩阵的化零矩阵

Z=null(A):返回矩阵A的一个化零矩阵,如果化零矩阵不存在则返回空矩阵
z=null(A,‘r’):返回有理数形式的化零矩阵

求矩阵的化零矩阵范例:

1.1.5 矩阵的正交空间

矩阵A的正交空间Q具有Q’ ? \cdot ?Q=I的性质,并且Q的列矢量构成的线性空间与矩阵A的列矢量构成的线性空间相同,且正交空间Q与矩阵A具有相同的秩

orth(A):矩阵A的正交空间

1.1.6 矩阵的约化行阶梯形式

矩阵的约化行阶梯形式是高斯-约旦消去法解线性方程组的结果

R=rref(A):返回矩阵A的约化行阶梯形式R
[R,jb]=rref(A):返回矩阵A的约化行阶梯形式R,并返回1×r的向量jb
r为矩阵A的秩
A(:,jb)是矩阵A的列矢量构成的线性空间
R(1:r,jb)是r×r的单位矩阵
[R,jb]=rref(A,tol):以tol作为允许的相对误差计算矩阵A的秩

求矩阵A的约化行阶梯形式示例:

1.1.7 矩阵空间之间的夹角

矩阵空间之间的夹角代表两个矩阵线性相关的程度
如果夹角很小,它们之间的线性相关度就很高
反之,它们之间的线性相关度不大

theta=subspace(A,B):返回矩阵A和矩阵B之间的夹角

求矩阵A和B之间的夹角

1.2 矩阵分解

函数功能描述
cholCholesky分解
cholinc稀疏矩阵的不完全Cholesky分解
lu矩阵LU分解|
luinc稀疏矩阵的不完全LU分解
qr正交三角分解
svd奇异值分解
gsvd一般奇异值分解
schur舒尔分解

线性方程组的求解主要基于4种基本的矩阵分解

  1. Cholesky分解
  2. 一般方阵的高斯消去法分解
  3. 舒尔分解
  4. 矩形矩阵的正交分解

1.2.0 对称正定矩阵的Cholesky分解

R=chol(X):其中X为对称正定矩阵,R是上三角矩阵,使得X=R’ ? \cdot ?R
[R,p]=chol(X)
X是正定矩阵时,返回的上三角矩阵R满足X=R’ ? \cdot ?R,且p=0;
X是非正定矩阵时,返回值p是正整数,R是上三角矩阵,其阶数p-1,且满足X(1:p-1,1:p-1)=R’ ? \cdot ?R

考虑线性方程组 A x = b Ax=b Ax=b,其中A可以做Cholesky分解,使得 A = R ′ ? R A=R'\cdot R A=R?R,这样线性方程组就可以改写成 R ′ ? R ? x = b R'\cdot R\cdot x=b R?R?x=b,由于左除算符( \ )可以快速处理三角矩阵,因此得出: x = R \ ( R ′ \ b ) x=R\backslash (R'\backslash b) x=R\(R\b)如果A是方阵 n × n n×n n×n的方阵,则chol(A)的计算复杂度 O ( n 3 ) O(n^3) O(n3),而左除算符的计算复杂度只有 O ( n 2 ) O(n^2) O(n2)

利用chol进行矩阵分解范例:

在矩阵中,若数值为0的元素数目远远多于非0元素的数目,并且非0元素分布没有规律时,则称该矩阵为稀疏矩阵
与之相反,若非0元素数目占大多数时,则称该矩阵为稠密矩阵

对于稀疏矩阵,函数cholinc( )来做不完全Cholesky分解
函数cholinc( )的另一个优点是它可用于计算实半正定矩阵

R=cholinc(X,DROPTOL)
其中X和R的含义与函数chol( )中的变量相同,DROPTOL为不完全Cholesky分解的丢失容限。当DROPTOL设为0时,退化为完全Cholesky分解
R=cholinc(X,OPTS)
其中OPTS为结构体,它有3个属性,即DROPTOL、MICHOL、RDIAG
1.DROPTOL为不完全Cholesky分解的丢失容限
2.MICHOL为1时采用改进算法的不完全Cholesky分解,否则不采用改进算法
3.RDIAG为1时R的对角元素中的零值替换成为DROPTPL的平方根,R=0时不做此替换
R=cholinc(X,‘0’):完全Cholesky分解
[R,p]=cholinc(X,‘0’):返回两个参数,并且不会返回出错信息。
当X是正定矩阵时,返回的上三角矩阵R满足 X = R ′ ? R X=R'\cdot R X=R?R,且p=0;
当X是非正定矩阵时,返回值p是正整数,R是上三角矩阵其阶数p-1,且满足X(1:p-1,1:p-1)=R’ ? \cdot ?R
R=cholinc(X,‘inf’):采用Cholesky-Infinity分解。此种分解是基于Cholesky分解的,但它可以处理实半正定矩阵

在MATLABR2018a中函数cholinc已经被删除,用ichol()函数替换

稀疏矩阵Cholesky分解示例:

1.2.1 一般方阵的高斯消去法分解(LU分解)

LU分解可将任意一个方阵A分解为一个下三角矩阵L和一个上三角矩阵U的乘积,即 A = L U A=LU A=LU (Lower Matrix,Upper Matrix)

[L,U]=lu(X)
X是一个方阵,L是一个"心理"下三角矩阵,U为上三角矩阵,满足 X = L ? U X=L\cdot U X=L?U
[L,U,P]=lu(X)
X是一个方阵,L是一个下三角矩阵,U为上三角矩阵,P为置换矩阵,满足 P ? X = L ? U P\cdot X=L\cdot U P?X=L?U
Y=lu(X)
X是一个方阵,把上三角矩阵和下三角矩阵合并在矩阵Y中,矩阵Y的对角元素为上三角矩阵的对角元素,即 Y = L + U ? I Y=L+U-I Y=L+U?I,置换矩阵P的信息丢失

考虑线性方程组 A x = b Ax=b Ax=b其中对矩阵A可以做LU分解,使得 A = L ? U A=L\cdot U A=L?U这样的线性方程组可以写成 L ? U ? x = b L\cdot U\cdot x=b L?U?x=b,由于左除算符( \ )可以快速处理三角矩阵,因此可快速解出: x = U \ ( L \ b ) x=U\backslash (L\backslash b) x=U\(L\b)

利用LU分解来计算行列式的值和矩阵的逆

det(A)=det(L)*det(U)
inv(A)=inv(U)*inv(L)

进行LU分解示例:



对于稀疏矩阵,函数luinc( )来做不完全LU分解
(Incomplete LU decomposition)

[L,U]=luinc(X,DROPTPL)
其中X、L、U的含义与函数lu()中的变量相同,DROPTPL为不完全LU分解的丢失容限。当DROPTPL设为0时,退化为完全LU分解
[L,U]=luinc(X,OPTS)
其中OPTS为结构体有4个属性,即DROPTOL、MICHOL、RDIAG、THRESH
1.DROPTOL为不完全Cholesky分解的丢失容限
2.MICHOL为1时采用改进算法的不完全Cholesky分解,否则不采用改进算法
3.RDIAG为1时R的对角元素中的零值替换成为DROPTPL的平方根,R=0时不做此替换
4.THRESH是绕对角线旋转因子,其取值范围是[0,1],当THRESH为0时强制绕对角线旋转,THRESH默认值是1
[L,U,P]=luinc(X,‘0’):0级不完全LU分解
[L,U]=luinc(X,‘0’):0级不完全LU分解
Y=luinc(X,‘0’):0级完全LU分解

1.2.2 矩形矩阵的正交分解(QR分解)

QR分解把一个 m × n m×n m×n的矩阵A分解为一个正交矩阵Q和一个上三角矩阵R的乘积,即 A = Q ? R A=Q\cdot R A=Q?R

[Q,R]=qr(A):其中矩阵R为与矩阵A具有相同大小的上三角矩阵,Q为正交矩阵,它们满足 A = Q ? R A=Q\cdot R A=Q?R。该调用方式适用于满矩阵和稀疏矩阵
[Q,R]=qr(A,0):为"经济"方式的QR分解
设矩阵A是一个 m × n m×n m×n的矩阵
m > n m>n mn,则只计算矩阵Q的前n列元素,R为 n × n n×n n×n矩阵
m ≤ n m≤n mn,则与[Q,R]=qr(A)效果一致。该调用方式适用于满矩阵和稀疏矩阵
[Q,R,E]=qr(A):R是上三角矩阵,Q为正交矩阵,E为置换矩阵
三者满足的关系: A ? E = Q ? R A\cdot E=Q\cdot R A?E=Q?R
程序选择一个合适的矩阵E使得abs(diag( R ))是降序排列的。该调用方式适用于满矩阵
[Q,R,E]=qr(A,0):"经济"方式的QR分解,其中E是一个置换矢量。
它们满足A(:,E)= Q ? R Q\cdot R Q?R,该调用方式适用于满矩阵
R=qr(A):返回上三角矩阵R,这里R=chol( A ′ ? A A' \cdot A A?A)。该调用方式适用于稀疏矩阵
R=qr(A,0):以"经济"方式返回上三角矩阵R
[C,R]=qr(A,B)
其中矩阵B必须与矩阵A具有相同的行数,矩阵R是上三角矩阵, C = Q ′ ? B C=Q'\cdot B C=Q?B

通过QR分解分析矩阵的秩示例:

1.2.3 舒尔分解

舒尔分解定义式 A = U ? S ? U ′ A=U\cdot S\cdot U' A=U?S?U其中A必须是一个方阵(Square Matrix),
U是一个酉矩阵(或幺正矩阵)(图中共轭转置符号 ? \dagger ? dagger,匕首)
S是一个块对角化矩阵,由对角线上的1×1和2×2块组成
特征值(eigenvalue)可以由矩阵S的对角块给出,而矩阵U给出比特征向量更多的数值特征。
此外,对缺陷矩阵也可以进行舒尔分解

[U,S]=schur(A):返回酉矩阵U和块对角矩阵S
S=schur(A):仅返回块对角矩阵
schur(A,‘real’):返回的实特征值放在对角线上,而把复特征值放在对角线上的2×2块中
schur(A,‘complex’):返回的矩阵S是上三角矩阵,并且如果矩阵A有复特征值,则矩阵S是复矩阵(指的是元素中含有复数的矩阵)
rsf2csf( ):把实数形式的舒尔矩阵转换成复数形式的舒尔矩阵

1.3 特征值和特征向量

1.3.0 特征值和特征向量的定义

假设A是一个 n × n n×n n×n的矩阵,A的特征值问题就是找到下面方程组的解:
A ? V = λ ? V A\cdot V=\lambda\cdot V A?V=λ?V其中, λ \lambda λ为标量, V V V为矢量

若把矩阵A的n个特征值放在矩阵P的对角线上,相应的特征向量按照特征值对应的顺序排列,作为矩阵V的列,特征值问题可改写为: A ? V = V ? D A\cdot V=V\cdot D A?V=V?D如果 V V V是非奇异的,该问题可认为是一个特征值分解问题,关系式如下: A = V ? D ? V ? 1 A=V\cdot D\cdot V^{-1} A=V?D?V?1

广义特征值问题是指方程 A ? X = λ ? B ? x A\cdot X=\lambda\cdot B\cdot x A?X=λ?B?x的非平凡解问题,其中A、B都是 n × n n×n n×n的矩阵, λ \lambda λ是标量。满足此方程的 λ \lambda λ广义特征值,对应的向量 x x x广义特征向量
如果 X X X是一个列向量 a ? \vec{a} a 的特征向量的矩阵,并且它的秩为n,那么特征向量线性相关。
如果不是这样,则称矩阵为缺陷阵
如果 X ′ ? X = I X'\cdot X=I X?X=I,则特征向量正交,这对于对称矩阵是成立的

1.3.1 特征值和特征向量的相关函数

eig(A):求包含矩阵A的特征值的向量
[X,D]=eig(A):产生一个矩阵A的特征值在对角线上的对角矩阵D和矩阵X,它们的列是相应的特征向量,满足 A ? X = X ? D A\cdot X=X\cdot D A?X=X?D,为了得到有更好条件特征值的矩阵,要进行相似变换
[T,B]=balance(A):找到一个相似变换矩阵T和矩阵B,使得它们满足 B = T ? A ? T B=T-A\cdot T B=T?A?T,B是用balance命令求得的平衡矩阵
eig(A,‘nobalance’):不经过平衡处理求得矩阵A的特征值和特征向量,也就是不进行平衡相似变换
eigs(A):返回一个由矩阵A的部分特征值组成的向量,和eig命令一样,但不返回全部的特征值。如果不带有参量,则计算出最大的特征值,当计算所有特征值时,如果矩阵A的秩不小于6,则计算出6个特征值
eigs(f,n):求出矩阵A的部分特征值。在使用一个矩阵列的线性运算符时,字符串f中包含的是M文件的文件名,n指定问题的阶次。用这种方法来求特征值比开始就用运算符来求要快
eigs(A,B,k,sigma)
求矩阵A的部分特征值,矩阵B的大小和A相同;
如果没有给出B=eye(size(A)),那么k就是要计算的特征值的个数;
如果k没有给出,就用小于6的数或者A的秩
sigma是一个实数或复数的移位参数,或下列文本字符串中的一个
文本字符串指明的是特征值的属性:
lm:为最大的特征值
sm:为最小的特征值
lr:为最大的实数部分
sr:最小的实数部分
be:为同时求的最大和最小的实数部分
condeig(A):返回一个由矩阵A的特征值条件数组成的向量
[V,D,s]=condeig(A):返回[V,D]=eig(A)和s=condeig(A)

1.3.2 特征值和特征向量的计算