Young87

当前位置:首页 >个人收藏

线性代数--矩阵消元

消元(elimination)

示例:
{ x + 2 y + z = 2 3 x + 8 y + z = 12 4 y + z = 2 \begin{cases} x+2y+z=2\\ 3x+8y+z=12 \\ 4y+z=2 \end{cases} x+2y+z=23x+8y+z=124y+z=2
A x = b Ax=b Ax=b
对应矩阵:
∣ [ 1 ] 2 1 3 [ 8 ] 1 0 4 [ 1 ] ∣ \begin{vmatrix} [1] & 2 &1 \\ 3 & [8] & 1 \\ 0 & 4 & [1] \end{vmatrix} [1]302[8]411[1]

  • 首先消除第二行主元[1]
    ∣ [ 1 ] 2 1 3 [ 8 ] 1 0 4 [ 1 ] ∣ r o w 2 − 3 ∗ r o w 1 → ∣ [ 1 ] 2 1 0 [ 2 ] − 2 0 4 [ 1 ] ∣ \begin{vmatrix} [1] & 2 &1 \\ 3 & [8] & 1 \\ 0 & 4 & [1] \end{vmatrix} \underrightarrow{row2 - 3 * row 1} \begin{vmatrix} [1] & 2 &1 \\ 0 & [2] & -2 \\ 0 & 4 & [1] \end{vmatrix} [1]302[8]411[1] row23row1[1]002[2]412[1]
    • 第三行主元[1]已被消除,无需消元
    • 接下来,消除第三行主元[2]
      ∣ [ 1 ] 2 1 0 [ 2 ] − 2 0 4 [ 1 ] ∣ r o w 3 − 2 ∗ r o w 2 → ∣ [ 1 ] 2 1 0 [ 2 ] − 2 0 0 [ 5 ] ∣ \begin{vmatrix} [1] & 2 &1 \\ 0 & [2] & -2 \\ 0 & 4 & [1] \end{vmatrix} \underrightarrow{row3- 2 * row 2} \begin{vmatrix} [1] & 2 &1 \\ 0 & [2] & -2 \\ 0 & 0 & [5] \end{vmatrix} [1]002[2]412[1] row32row2[1]002[2]012[5]
  • 引入向量b(增广矩阵)进行消元,步骤与上面一致:
    ∣ 2 12 2 ∣ r o w 2 − 3 ∗ r o w 1 → ∣ 2 6 2 ∣ r o w 3 − 2 ∗ r o w 2 → ∣ 2 6 − 10 ∣ \begin{vmatrix} 2\\ 12\\ 2 \end{vmatrix} \underrightarrow{row2- 3 * row 1} \begin{vmatrix} 2\\ 6\\ 2 \end{vmatrix} \underrightarrow{row3- 2 * row 2} \begin{vmatrix} 2\\ 6\\ -10 \end{vmatrix} 2122 row23row1262 row32row22610
    最终消元结果为:
    ∣ [ 1 ] 2 1 0 [ 2 ] − 2 0 0 [ 5 ] ∣ ∗ x = ∣ 2 6 − 10 ∣ \begin{vmatrix} [1] & 2 &1 \\ 0 & [2] & -2 \\ 0 & 0 & [5] \end{vmatrix} *x= \begin{vmatrix} 2\\ 6\\ -10 \end{vmatrix} [1]002[2]012[5]x=2610
    U x = c Ux=c Ux=c

注:主元必须不为零,但如果0占据了主元位置,则需要交换行使主元不为0,前提需要主元所在下行位置不能为0。如果主元为0,且无法与下行交换使之不为0,则矩阵不可逆,即消元失效。
此处主元分别为 [1] [8] [1],如果主元为[1] [8] [-4],则消元最终结果为:
∣ [ 1 ] 2 1 0 [ 2 ] − 2 0 0 [ 0 ] ∣ \begin{vmatrix} [1] & 2 &1 \\ 0 & [2] & -2 \\ 0 & 0 & [0] \end{vmatrix} [1]002[2]012[0]

矩阵不可逆

回代(back substitution)

将以上消元的结果代入方程组:
{ x + 2 y + z = 2 2 y − 2 z = 6 5 z = − 10 \begin{cases} x+2y+z=2\\ 2y-2z=6\\ 5z=-10 \end{cases} x+2y+z=22y2z=65z=10
得到
{ x = 2 y = 1 z = − 2 \begin{cases} x=2\\ y=1\\ z=-2 \end{cases} x=2y=1z=2

消元矩阵

回顾上一节末尾提到矩阵运算(列运算):
[ c o l 1 c o l 2 c o l 3 ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ] ∗ [ a b c ] = [ a ∗ c o l 1 + b ∗ c o l 2 + c ∗ c o l 3 ⋯ ⋯ ] (1) \begin{bmatrix} col1&col2&col3 \\ \cdots&\cdots&\cdots\\ \cdots&\cdots&\cdots \end{bmatrix} * \begin{bmatrix} a \\ b \\ c \end{bmatrix}= \begin{bmatrix} a *col1+b*col2+c*col3\\ \cdots\\ \cdots \end{bmatrix} \tag{1} col1col2col3abc=acol1+bcol2+ccol3(1)
以行的形式进行矩阵消元:
[ a b c ] ∗ [ r o w 1 ⋯ ⋯ r o w 2 ⋯ ⋯ r o w 3 ⋯ ⋯ ] = [ a ∗ r o w 1 + b ∗ r o w 2 + c ∗ r o w 3 ⋯ ⋯ ] (2) \begin{bmatrix} a&b&c \end{bmatrix} * \begin{bmatrix} row1&\cdots&\cdots\\ row2&\cdots&\cdots\\ row3&\cdots&\cdots \end{bmatrix}= \begin{bmatrix} a*row1+b*row2+c*row3&\cdots&\cdots \end{bmatrix} \tag{2} [abc]row1row2row3=[arow1+brow2+crow3](2)

核心:
矩阵乘以一列,结果为一列(示例1),行向量乘以矩阵,结果为一行(示例2)。

回到文章开始提到的矩阵试图消除主元:
[ E 21 ] ∗ [ 1 2 1 3 ⏟ 消 除 8 1 0 4 1 ] = [ 1 2 1 0 2 − 2 0 4 1 ] \begin{bmatrix} &&\\ &E_{21}&\\ && \end{bmatrix} * \begin{bmatrix} 1 & 2 &1 \\ \underbrace{3}_{消除} & 8 & 1 \\ 0 & 4 & 1 \end{bmatrix}= \begin{bmatrix} 1 & 2 &1 \\ 0 & 2 & -2 \\ 0 & 4 & 1 \end{bmatrix} E211 30284111=100224121
下面以行的形式拆分求解:
[ 1 0 0 ] ∗ [ 1 2 1 3 8 1 0 4 1 ] = [ 1 2 1 ] (1) \begin{bmatrix} 1&0&0 \end{bmatrix} * \begin{bmatrix} 1 & 2 &1 \\ 3 & 8 & 1 \\ 0 & 4 & 1 \end{bmatrix}= \begin{bmatrix} 1 & 2 &1 \end{bmatrix} \tag{1} [100]130284111=[121](1)
[ − 3 1 0 ] ∗ [ 1 2 1 3 8 1 0 4 1 ] = [ 0 2 − 2 ] (2) \begin{bmatrix} -3&1&0 \end{bmatrix} * \begin{bmatrix} 1 & 2 &1 \\ 3 & 8 & 1 \\ 0 & 4 & 1 \end{bmatrix}= \begin{bmatrix} 0 & 2 &-2 \end{bmatrix} \tag{2} [310]130284111=[022](2)
[ 0 0 1 ] ∗ [ 1 2 1 3 8 1 0 4 1 ] = [ 0 4 1 ] (3) \begin{bmatrix} 0&0&1 \end{bmatrix} * \begin{bmatrix} 1 & 2 &1 \\ 3 & 8 & 1 \\ 0 & 4 & 1 \end{bmatrix}= \begin{bmatrix} 0 & 4 &1 \end{bmatrix} \tag{3} [001]130284111=[041](3)
综合以上:
[ 1 0 0 − 3 1 0 0 0 1 ] ⏟ E 21 ∗ [ 1 2 1 3 8 1 0 4 1 ] = [ 1 2 1 0 2 − 2 0 4 ⏟ 消 除 1 ] (4) \underbrace{ \begin{bmatrix} 1&0&0\\ -3&1&0\\ 0&0&1 \end{bmatrix} }_{E_{21}} * \begin{bmatrix} 1 & 2 &1 \\ 3 & 8 & 1 \\ 0 & 4 & 1 \end{bmatrix}= \begin{bmatrix} 1 & 2 &1 \\ 0 & 2 & -2 \\ 0 & \underbrace{4}_{消除} & 1 \end{bmatrix} \tag{4} E21 130010001130284111=10022 4121(4)
最后需要消除式(4)中右侧矩阵主元:
[ 1 0 0 0 1 0 0 − 2 1 ] ⏟ E 32 ∗ [ 1 2 1 0 2 − 2 0 4 1 ] = [ 1 2 1 0 2 − 2 0 0 5 ] ⏟ U \underbrace{ \begin{bmatrix} 1&0&0\\ 0&1&0\\ 0&-2&1 \end{bmatrix} }_{E_{32}} * \begin{bmatrix} 1 & 2 &1 \\ 0 & 2 & -2 \\ 0 & 4 & 1 \end{bmatrix}= \underbrace{ \begin{bmatrix} 1& 2 &1 \\ 0 & 2& -2 \\ 0 & 0 & 5 \end{bmatrix} }_{U} E32 100012001100224121=U 100220125
整个矩阵运算:
E 32 ∗ ( E 21 ∗ A ) = U E_{32}*(E_{21}*A)=U E32(E21A)=U

重要性质:
矩阵相乘同样适用结合律但不适用交换律
( E 32 ∗ E 21 ) ∗ A = U (E_{32}*E_{21})*A=U (E32E21)A=U

[ 1 0 0 0 1 0 0 − 2 1 ] ⏟ E 32 ∗ [ 1 0 0 − 3 1 0 0 0 1 ] ⏟ E 21 = [ 1 0 0 − 3 1 0 − 6 − 2 1 ] ⏟ E \underbrace{ \begin{bmatrix} 1&0&0\\ 0&1&0\\ 0&-2&1 \end{bmatrix} }_{E_{32}} * \underbrace{ \begin{bmatrix} 1&0&0\\ -3&1&0\\ 0&0&1 \end{bmatrix} }_{E_{21}}= \underbrace{ \begin{bmatrix} 1&0&0\\ -3&1&0\\ -6&-2&1 \end{bmatrix} }_{E} E32 100012001E21 130010001=E 136012001
[ 1 0 0 − 3 1 0 − 6 − 2 1 ] ∗ [ 1 2 1 0 2 − 2 0 4 1 ] = [ 1 2 1 0 2 − 2 0 0 5 ] \begin{bmatrix} 1&0&0\\ -3&1&0\\ -6&-2&1 \end{bmatrix} * \begin{bmatrix} 1 & 2 &1 \\ 0 & 2 & -2 \\ 0 & 4 & 1 \end{bmatrix}= \begin{bmatrix} 1& 2 &1 \\ 0 & 2& -2 \\ 0 & 0 & 5 \end{bmatrix} 136012001100224121=100220125
E ∗ A = U E*A=U EA=U

置换矩阵(permutation matrix)

行交换(消元中需要用到):
[ 0 1 1 0 ] ⏟ 置 换 矩 阵 ∗ [ a b c d ] = [ c d a b ] \underbrace{ \begin{bmatrix} 0&1\\ 1&0\\ \end{bmatrix} }_{置换矩阵} * \begin{bmatrix} a &b \\ c & d \end{bmatrix}= \begin{bmatrix} c & d \\ a &b \end{bmatrix} [0110][acbd]=[cadb]
列交换(不重要,此处仅尝试)
[ a b c d ] ∗ [ 0 1 1 0 ] ⏟ 置 换 矩 阵 = [ b a d c ] \begin{bmatrix} a &b \\ c & d \end{bmatrix} * \underbrace{ \begin{bmatrix} 0&1\\ 1&0\\ \end{bmatrix} }_{置换矩阵}= \begin{bmatrix} b & a \\ d &c \end{bmatrix} [acbd] [0110]=[bdac]

注意到,行变换利用左乘,列变换用到右乘

可逆矩阵(inverses matrix)

[ 1 0 0 3 1 0 0 0 1 ] ⏟ E − 1 ∗ [ 1 0 0 − 3 1 0 0 0 1 ] ⏟ E = [ 1 0 0 0 1 0 0 0 1 ] ⏟ I \underbrace{ \begin{bmatrix} 1&0&0\\ 3&1&0\\ 0&0&1 \end{bmatrix} }_{E^{-1}} * \underbrace{ \begin{bmatrix} 1&0&0\\ -3&1&0\\ 0&0&1 \end{bmatrix} }_{E}= \underbrace{ \begin{bmatrix} 1&0&0\\ 0&1&0\\ 0&0&1 \end{bmatrix} }_{I} E1 130010001E 130010001=I 100010001

上式中E矩阵行二减去三倍行一,逆步骤为E矩阵行二加上三倍行一


下节详述可逆矩阵

除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog

上一篇: SunlightChain 区块链宣言

下一篇: 基于Tensorflow的Facenet 人脸识别实现

精华推荐