• .线性代数02.矩阵消元


    本篇为MIT公开课——线性代数 笔记。

    下面我们要用矩阵语言描述消元法。核心的概念是“矩阵变换”.

    举例

    三未知数三方程

    [x+2y+z=2\ 3x+8y+z=12\ 4y+z=2 ]

    方程组矩阵形式为 (A X=b)

    它们的系数矩阵 (A) 为3x3矩阵

    [A=left( egin{array}{ccc} 1 & 2 & 1 \ 3 & 8 & 1 \ 0 & 4 & 1 \ end{array} ight) ]

    消元

    首先明确一个概念:主元(pivot element),一种变元。指在消去过程中起主导作用的元素。
    主元就是在矩阵消去过程中,每列的要保留的非零元素,用它可以把该列其他元素消去。

    主元行就是主元所在的行。

    主元的确定是一种递归思想。

    对于 3X3 矩阵:

    主元1是第一行第一个元素,依次乘以对应数值对第二行和第三行进行消元;

    主元2是第二行第二个元素,对第三行进行消元;

    主元3是第三行第三个元素,到达边界。

    • 第一步:((2,1))消元

    第一行中第一个元素是我们主元1。

    利用它我们可以消去第二行中的第一个元素,也就是我们可以消去方程2中的 (x) 分量。

    我们将第一行乘以3,然后用第二行减去它,主元行1不变,减法的结果在第二行显示,用矩阵形式:

    [left( egin{array}{ccc} 1 & 2 & 1 \ 3 & 8 & 1 \ 0 & 4 & 1 \ end{array} ight) o left( egin{array}{ccc} 1 & 2 & 1 \ 0 & 2 & -2 \ 0 & 4 & 1 \ end{array} ight) ]

    这里消元的位置是 ((2,1)) 位置,行二列一。 ((2,1)) 位置得到 (0),因此用 ((2,1)) 作为这一步的代号。

    • 第二步:((3,1))消元

    把这一列最下面元素也变成0,所以这一步代号是 ((3,1)) ,行三列1,不过这个位置已经是0了,所以第一行乘以0,再用第三行减去,还是得到原来数值.

    • 第三步:((3,2))消元

    现在我们方程消去了 (x) 分量,只剩下 (y、z) 分量

    接下来是主元2,它是第二行的第二个元素。

    利用它我们可以消去第三行中的 (y) 分量。

    我们将主元行2乘以2,用第三行减去,可以得到

    [left( egin{array}{ccc} 1 & 2 & 1 \ 0 & 2 & -2 \ 0 & 4 & 1 \ end{array} ight) o left( egin{array}{ccc} 1 & 2 & 1 \ 0 & 2 & -2 \ 0 & 0 & 5 \ end{array} ight) ]

    消元结果

    此时,我们通过对矩阵 (A) ,就得到了我们三个主元:(1,2,5),它们构成的矩阵,记为 (U) .即

    [U=left( egin{array}{ccc} 1 & 2 & 1 \ 0 & 2 & -2 \ 0 & 0 & 5 \ end{array} ight) ]

    (U) 表示上三角矩阵:主对角线以下都是零的方阵称为上三角矩阵。我们这里消元的目的就是为了得到 (U) .

    强调一点:主元永远不会是 0.

    消元失效情况

    失效指的是不能得到三个主元。

    失效情况:

    消元过程中,遇到主元是0,解决方法是:行交换。

    注意点:

    1. 因为主元永远不可能是0。所以如果0占了主元位置,这时就需要进行行交换,只要该列下面存在非0元素,就可以在下面的行中找寻适当的主元。如果下面也是0就没办法了。
    2. 注定失效情况:系数矩阵 (A) 中第三行第三列元素,使得消元后结果为0.这样使得主元不存在,矩阵不可逆,消元失效。
    3. 行交换可以解决主元为0的“暂时性失效”,但当底下的行中没有非0元素时,消元就彻底失效。

    回代

    在解线性方程组时,把系数矩阵主对角线下方元素消零属于消元;把系数矩阵主对角线上方元素消零属于回代。

    这里我们就需要引入增广矩阵。

    在原本的系数矩阵 (A) 右边引入右侧向量

    [left( egin{array}{cccc} 1 & 2 & 1 & 2 \ 3 & 8 & 1 & 12 \ 0 & 4 & 1 & 2 \ end{array} ight) ]

    这就是”增广矩阵“。

    对增广矩阵按照我们上面例子消元,可以得到

    [left( egin{array}{cccc} 1 & 2 & 1 & 2 \ 0 & 2 & -2 & 6 \ 0 & 0 & 5 & -10 \ end{array} ight) ]

    (left( egin{array}{c} 2 \ 6 \ -10 \ end{array} ight)) 记为 (c) .(c)(b) 的最终结果。

    将矩阵化为方程组形式:

    [x+2y+z=2\ 2y-2z=6\ 5z=-10 ]

    可以计算出,(z=-2,y=1,x=2) ,这就是回代:它是反向求解方程的简单步骤。

    回顾乘法

    1.从矩阵列角度考虑,矩阵与向量的乘法运算就是”矩阵列的线性组合“。

    例如

    [left( egin{array}{ccc} 1 & 2 & 3 \ 1 & 2 & 3 \ 1 & 2 & 1 \ end{array} ight)*left( egin{array}{c} 3 \ 4 \ 5 \ end{array} ight)= 3* ext{col$\_1$}+ 4* ext{col$\_2$}+5* ext{col$\_3$} ]

    矩阵乘以一列,结果是一列。

    2.从矩阵行角度,就是矩阵行的线性组合。

    举例

    [left( egin{array}{ccc} 1 & 2 & 7 \ end{array} ight) *left( egin{array}{ccc} 1 & 2 & 3 \ 1 & 2 & 3 \ 1 & 2 & 1 \ end{array} ight)= 1* ext{row$\_1$}+ 2 * ext{row$\_2$}+7 * ext{row$\_3$} ]

    矩阵乘以一行,结果是一行。

    矩阵乘以两行,结果就是两行。依此类推。

    注意,进行行变换和列变换,乘法中待变换矩阵乘以的矩阵位置是不同的。放在后面表示列变换,前面是行变换。

    消元矩阵

    虽然我们之前也在用矩阵,但是计算步骤都没有用到矩阵表示。所以我们要做的就是把消元过程用矩阵表示。

    回到第一个例子的第一步开始,取系数矩阵 (A)

    [A=left( egin{array}{ccc} 1 & 2 & 1 \ 3 & 8 & 1 \ 0 & 4 & 1 \ end{array} ight) ag1 ]

    现在对其进行消元操作。

    1.对 ((2,1)) 消元过程用矩阵描述

    这里问题就是,我们需要一个什么样的矩阵,得到行2减去3倍行1的结果,并且保持行1和行3不变?

    [left( egin{array}{ccc} ext{?} & ext{?} & ext{?} \ ext{?} & ext{?} & ext{?} \ ext{?} & ext{?} & ext{?} \ end{array} ight)left( egin{array}{ccc} 1 & 2 & 1 \ 3 & 8 & 1 \ 0 & 4 & 1 \ end{array} ight) =left( egin{array}{ccc} 1 & 2 & 1 \ 0 & 2 & -2 \ 0 & 4 & 1 \ end{array} ight) ]

    根据矩阵行的乘法运算,

    保持行1不变,就是取1个行1,0个行2,0个行3,即矩阵乘以向量 ((1 0 0)) ,得到右侧矩阵行1;(矩阵拆分为向量)

    同样的,保持行3不变,就是取0个行1,0个行2,1个行3,即矩阵乘以向量 ((0 0 1)) ,得到右侧矩阵行2;

    中间我们需要进行行2减去3倍行1,就是取 (-3) 倍行1,1个行2,0个行3,即矩阵乘以向量 ((-3 1 0)),得到右侧矩阵行3;

    我们可以得到结论:

    [left( egin{array}{ccc} ext{1} & ext{0} & ext{0} \ ext{-3} & ext{1} & ext{0} \ ext{0} & ext{0} & ext{1} \ end{array} ight)left( egin{array}{ccc} 1 & 2 & 1 \ 3 & 8 & 1 \ 0 & 4 & 1 \ end{array} ight) = left( egin{array}{ccc} 1 & 2 & 1 \ 0 & 2 & -2 \ 0 & 4 & 1 \ end{array} ight) ag2 ]

    如果要检验特定元素,比如检验第二行第三列元素正确性。

    只需要看左侧前矩阵行2和后矩阵列3即可,点积,(-3*1+1*1+1*0=-2)。可将左侧中右边看成矩阵,左边看成向量,这样就和讲过的乘法一样。

    我们将系数矩阵乘以的这个矩阵叫做“初等矩阵”记作 “E”。因为表示位置 ((2,1)) 上变换,所以记作 (E_{21}) .

    2.对 ((3,2)) 消元过程用矩阵描述

    这里我们问题就是,需要一个什么样的矩阵,将式子(2)的结果,用行3减去2倍行2,并且保持行1和行2不变?

    不再累述。这个矩阵我们记为 (E_{32})

    [left( egin{array}{ccc} ext{1} & ext{0} & ext{0} \ ext{0} & ext{1} & ext{0} \ ext{0} & ext{-2} & ext{1} \ end{array} ight)left( egin{array}{ccc} 1 & 2 & 1 \ 0 & 2 & -2 \ 0 & 4 & 1 \ end{array} ight) =left( egin{array}{ccc} 1 & 2 & 1 \ 0 & 2 & -2 \ 0 & 0 & 5 \ end{array} ight) ]

    矩阵消元到此结束。

    综合以上内容,我们可以将矩阵消元简单表示为:

    [E_{32}*(E_{21}*A)=U ]

    改变乘法顺序,就能得到一次性解决问题的矩阵。矩阵相乘满足结合律。

    [(E_{32}*E_{21})*A=U ]

    置换矩阵

    假设我们有个2X2矩阵,我们想要交换它的行顺序,其实理解上面的计算,我们就能求出这个矩阵是什么,例如

    [left( egin{array}{cc} 0 & 1 \ 1 & 0 \ end{array} ight) left( egin{array}{cc} a & b \ c & d \ end{array} ight)=left( egin{array}{cc} c & d \ a & b \ end{array} ight) ]

    我们将(left( egin{array}{cc} 0 & 1 \ 1 & 0 \ end{array} ight))记为 (P) ,代表Permutation(置换)。

    如果想交换列顺序,就把矩阵 (P) 放在后面相乘。

    [ left( egin{array}{cc} a & b \ c & d \ end{array} ight) left( egin{array}{cc} 0 & 1 \ 1 & 0 \ end{array} ight)=left( egin{array}{cc} b & a \ d & c \ end{array} ight) ]

    行变换是矩阵左乘,列变换时矩阵右乘。“左行右列”。

    矩阵相乘顺序不能改变。矩阵相乘不满足交换律。

    逆矩阵

    如果我们想要取消某次消元,回归到原来矩阵,怎么做?

    假设原矩阵(left( egin{array}{ccc} ext{1} & ext{0} & ext{0} \ ext{-3} & ext{1} & ext{0} \ ext{0} & ext{0} & ext{1} \ end{array} ight)) ,记作 (E) ,右侧是单位矩阵,记作 (I).

    [left( egin{array}{ccc} 1 & 0 & 0 \ 3 & 1 & 0 \ 0 & 0 & 1 \ end{array} ight) left( egin{array}{ccc} ext{1} & ext{0} & ext{0} \ ext{-3} & ext{1} & ext{0} \ ext{0} & ext{0} & ext{1} \ end{array} ight)=left( egin{array}{ccc} 1 & 0 & 0 \ 0 & 1 & 0 \ 0 & 0 & 1 \ end{array} ight) ]

    在(2,1)消元中,我们把方程2减去3倍方程1,过程反过来,就是方程2加上3倍方程1。

    (left( egin{array}{ccc} 1 & 0 & 0 \ 3 & 1 & 0 \ 0 & 0 & 1 \ end{array} ight))就是我们要的逆矩阵,记作 (E^{-1})

  • 相关阅读:
    黑客术语1
    leetcode笔记--3 Niim game
    台湾ML笔记--1.2 formalize the learning probelm
    台湾ML笔记--1.1什么时候适合使用ML
    leetcode笔记--2 reverse string
    leetcode笔记--1 two-sum
    数据挖掘导论笔记1
    python基础----ipython快捷键
    记录新的开始
    编译器错误消息: CS1617: 选项“6”对 /langversion 无效
  • 原文地址:https://www.cnblogs.com/ckk-blog/p/13340439.html
Copyright © 2020-2023  润新知