线性代数复习(2)------矩阵消元
消元变换
解方程
先看一个方程组:
{
x
+
2
y
+
z
=
2
3
x
+
8
y
+
z
=
12
4
y
+
z
=
2
egin{cases}x+2y+z=2\3x+8y+z=12\4y+z=2\end{cases}
⎩⎪⎨⎪⎧x+2y+z=23x+8y+z=124y+z=2
我们使用消元法来对其进行求解,其核心在于等式两边的同加同减,但是以方程组的形式很难处理,我们把它变成矩阵形式。
[ 1 2 1 3 8 1 0 4 1 ] egin{bmatrix}1 & 2 & 1 \3 & 8 & 1\0 & 4 & 1 \end{bmatrix} ⎣⎡130284111⎦⎤ [ x y z ] egin{bmatrix}x \y\z \end{bmatrix} ⎣⎡xyz⎦⎤= [ 2 12 2 ] egin{bmatrix}2 \12\2 \end{bmatrix} ⎣⎡2122⎦⎤
取出这两个矩阵:
[ 1 2 1 3 8 1 0 4 1 ] egin{bmatrix}1 & 2 & 1 \3 & 8 & 1\0 & 4 & 1 \end{bmatrix} ⎣⎡130284111⎦⎤与 [ 2 12 2 ] egin{bmatrix}2 \12\2 \end{bmatrix} ⎣⎡2122⎦⎤
我们分开进行变换
消元
这里我们只希望获取一个上三角矩阵。
上三角矩阵:主对角以下元素为0,用U来表示
下三角矩阵:主对角以上元素为0,用L来表示
[ 1 2 1 0 2 − 2 0 4 1 ] egin{bmatrix}1 & 2 & 1 \0 & 2 & -2\0 & 4 & 1 \end{bmatrix} ⎣⎡1002241−21⎦⎤ [ 2 6 2 ] egin{bmatrix}2 \6\2 \end{bmatrix} ⎣⎡262⎦⎤ row2-row1*3
[ 1 2 1 0 2 − 2 0 0 5 ] egin{bmatrix}1 & 2 & 1 \0 & 2 & -2\0 & 0 & 5 \end{bmatrix} ⎣⎡1002201−25⎦⎤ [ 2 6 − 10 ] egin{bmatrix}2 \6\-10 \end{bmatrix} ⎣⎡26−10⎦⎤ row3-row2*2
这里的比较简单,有些复杂的可能还需要变换行与行的位置,比如在变换中出现主元为0的情况时(主对角线上出现了0),出现0后我们应考虑该行之后的元素有没有非0的如果有则进行行交换,如果没有那么就是方程无解了。
回代
回代就很简单了,就是由下往上解未知数,这里的5z=10;z=2;在带回2y-2z=6求y,在这不再赘述。
增广矩阵
上面的矩阵也可以合并在一起有:
[
1
2
1
2
3
8
1
12
0
4
1
2
]
left[ egin{array} {c c c | c} 1 & 2 & 1 & 2\ 3 & 8 & 1 & 12\ 0 & 4 & 1 & 2 \ end{array}
ight]
⎣⎡1302841112122⎦⎤
直线左边的是矩阵A,直线右边的是b,在处理时可以作为一个整体的矩阵进行处理。
上面处理之后的矩阵就长这样了:
[
1
2
1
2
0
2
−
2
6
0
0
5
−
10
]
left[ egin{array} {c c c | c} 1 & 2 & 1 & 2\ 0 & 2 & -2 & 6\ 0 & 0 & 5 & -10 \ end{array}
ight]
⎣⎡1002201−2526−10⎦⎤
矩阵A变成了上三角矩阵U,右边的b也发生了变化标为c吧,就是这样:[U,C]
矩阵变换
行运算
[ 1 2 1 ] egin{bmatrix}1 & 2 & 1 end{bmatrix} [121] [ 1 2 1 3 8 1 0 4 1 ] = egin{bmatrix}1 & 2 & 1 \3 & 8 & 1\0 & 4 & 1 \end{bmatrix}= ⎣⎡130284111⎦⎤= 1 ∗ [ 1 2 1 ] + 1*egin{bmatrix}1 & 2 & 1 end{bmatrix}+ 1∗[121]+ 2 ∗ [ 3 8 1 ] + 2*egin{bmatrix}3 & 8 & 1 end{bmatrix}+ 2∗[381]+ 1 ∗ [ 0 4 1 ] = 1*egin{bmatrix}0 & 4 & 1 end{bmatrix}= 1∗[041]= [ 7 22 4 ] egin{bmatrix}7 & 22 & 4 end{bmatrix} [7224]
列运算
[ 1 2 1 3 8 1 0 4 1 ] egin{bmatrix}1 & 2 & 1 \3 & 8 & 1\0 & 4 & 1 \end{bmatrix} ⎣⎡130284111⎦⎤ [ 1 2 1 ] = egin{bmatrix}1 \2\1 \end{bmatrix}= ⎣⎡121⎦⎤= [ 1 3 0 ] ∗ 1 + egin{bmatrix}1 \3\0 \end{bmatrix}*1+ ⎣⎡130⎦⎤∗1+ [ 2 8 4 ] ∗ 2 + egin{bmatrix}2 \8\4 \end{bmatrix}*2+ ⎣⎡284⎦⎤∗2+ [ 1 1 1 ] ∗ 1 = egin{bmatrix}1 \1\1 \end{bmatrix}*1= ⎣⎡111⎦⎤∗1= [ 6 20 9 ] egin{bmatrix}6 \20\9\end{bmatrix} ⎣⎡6209⎦⎤
运算描述
我们把上面的矩阵变换改写成矩阵运算的形式:
[
1
2
1
3
8
1
0
4
1
]
egin{bmatrix}1 & 2 & 1 \3 & 8 & 1\0 & 4 & 1 \end{bmatrix}
⎣⎡130284111⎦⎤ row2-row1*3
行1行3不变,将行2减去三倍的行一作为行2,于是有:
[
1
0
0
−
3
1
0
0
0
1
]
[
1
2
1
3
8
1
0
4
1
]
egin{bmatrix}1 & 0 & 0 \-3 & 1 & 0\0 & 0 & 1 \end{bmatrix} egin{bmatrix}1 & 2 & 1 \3 & 8 & 1\0 & 4 & 1 \end{bmatrix}
⎣⎡1−30010001⎦⎤⎣⎡130284111⎦⎤
验证一下:
第一行有:
1
∗
[
1
2
1
]
+
0
∗
[
3
8
1
]
+
0
∗
[
0
4
1
]
=
[
1
2
1
]
1*egin{bmatrix}1 & 2 & 1 end{bmatrix}+0*egin{bmatrix}3 & 8 & 1 end{bmatrix}+0*egin{bmatrix}0 & 4 & 1 end{bmatrix}=egin{bmatrix}1 & 2 & 1 end{bmatrix}
1∗[121]+0∗[381]+0∗[041]=[121]
第二行有:
−
3
∗
[
1
2
1
]
+
1
∗
[
3
8
1
]
+
0
∗
[
0
4
1
]
=
[
0
2
−
2
]
-3*egin{bmatrix}1 & 2 & 1 end{bmatrix}+1*egin{bmatrix}3 & 8 & 1 end{bmatrix}+0*egin{bmatrix}0 & 4 & 1 end{bmatrix}=egin{bmatrix}0 & 2 & -2 end{bmatrix}
−3∗[121]+1∗[381]+0∗[041]=[02−2]
第三行有:
0
∗
[
1
2
1
]
+
0
∗
[
3
8
1
]
+
1
∗
[
0
4
1
]
=
[
0
4
1
]
0*egin{bmatrix}1 & 2 & 1 end{bmatrix}+0*egin{bmatrix}3 & 8 & 1 end{bmatrix}+1*egin{bmatrix}0 & 4 & 1 end{bmatrix}=egin{bmatrix}0 & 4 & 1 end{bmatrix}
0∗[121]+0∗[381]+1∗[041]=[041]
最终结果为:
[
1
2
1
0
2
−
2
0
4
1
]
egin{bmatrix}1 & 2 & 1 \0 & 2 & -2\0 & 4 & 1 \end{bmatrix}
⎣⎡1002241−21⎦⎤ 与上面一致。
再看之后的变换:
[
1
2
1
0
2
−
2
0
4
1
]
egin{bmatrix}1 & 2 & 1 \0 & 2 & -2\0 & 4 & 1 \end{bmatrix}
⎣⎡1002241−21⎦⎤ row3-row2*2
行1行2不变,行3减去两倍的行2,于是就是这样的:
[
1
0
0
0
1
0
0
−
2
1
]
[
1
2
1
0
2
−
2
0
4
1
]
egin{bmatrix}1 & 0 & 0 \0 & 1 & 0\0 & -2 & 1 \end{bmatrix}egin{bmatrix}1 & 2 & 1 \0 & 2 & -2\0 & 4 & 1 \end{bmatrix}
⎣⎡10001−2001⎦⎤⎣⎡1002241−21⎦⎤
验证一下:
第一行有:
1
∗
[
1
2
1
]
+
0
∗
[
0
2
−
2
]
+
0
∗
[
0
4
1
]
=
[
1
2
1
]
1*egin{bmatrix}1 & 2 & 1 end{bmatrix}+0*egin{bmatrix}0 & 2 & -2 end{bmatrix}+0*egin{bmatrix}0 & 4 & 1 end{bmatrix}=egin{bmatrix}1 & 2 & 1 end{bmatrix}
1∗[121]+0∗[02−2]+0∗[041]=[121]
第二行有:
0
∗
[
1
2
1
]
+
1
∗
[
0
2
−
2
]
+
0
∗
[
0
4
1
]
=
[
0
2
−
2
]
0*egin{bmatrix}1 & 2 & 1 end{bmatrix}+1*egin{bmatrix}0 & 2 & -2 end{bmatrix}+0*egin{bmatrix}0 & 4 & 1 end{bmatrix}=egin{bmatrix}0 & 2 & -2 end{bmatrix}
0∗[121]+1∗[02−2]+0∗[041]=[02−2]
第三行有:
0
∗
[
1
2
1
]
+
(
−
2
)
∗
[
0
2
−
2
]
+
1
∗
[
0
4
1
]
=
[
0
0
5
]
0*egin{bmatrix}1 & 2 & 1 end{bmatrix}+(-2)*egin{bmatrix}0 & 2 & -2 end{bmatrix}+1*egin{bmatrix}0 & 4 & 1 end{bmatrix}=egin{bmatrix}0 & 0 & 5 end{bmatrix}
0∗[121]+(−2)∗[02−2]+1∗[041]=[005]
最终结果为:
[
1
2
1
0
2
−
2
0
0
5
]
egin{bmatrix}1 & 2 & 1 \0 & 2 & -2\0 & 0 & 5 \end{bmatrix}
⎣⎡1002201−25⎦⎤ 与上面一致。
最后矩阵的变换就变成了这样:
[
1
0
0
0
1
0
0
−
2
1
]
[
1
0
0
−
3
1
0
0
0
1
]
[
1
2
1
3
8
1
0
4
1
]
=
[
1
2
1
0
2
−
2
0
0
5
]
egin{bmatrix}1 & 0 & 0 \0 & 1 & 0\0 & -2 & 1 \end{bmatrix}egin{bmatrix}1 & 0 & 0 \-3 & 1 & 0\0 & 0 & 1 \end{bmatrix} egin{bmatrix}1 & 2 & 1 \3 & 8 & 1\0 & 4 & 1 \end{bmatrix}=egin{bmatrix}1 & 2 & 1 \0 & 2 & -2\0 & 0 & 5 \end{bmatrix}
⎣⎡10001−2001⎦⎤⎣⎡1−30010001⎦⎤⎣⎡130284111⎦⎤=⎣⎡1002201−25⎦⎤
初等矩阵
单位矩阵:这个矩阵的行列数量相同,除了主对角线以外的部分的值都为0,主对角线上的值全为1.
[
1
0
0
0
1
0
0
0
1
]
egin{bmatrix}1 & 0 & 0 \0 & 1 & 0\0 & 0 & 1 \end{bmatrix}
⎣⎡100010001⎦⎤
初等矩阵:就是在单位矩阵的基础上进行一次行与行或者列与列之间变换形成的,这种变换包含三种形式(这三种形式为矩阵的初等变换)
矩阵每进行一次初等变化就相当与乘上一个初等矩阵。
行(列)间先乘常数后相加
我们以
E
i
j
E_{ij}
Eij来表示i行j列的元素,其实际在变换中的意义由初等矩阵的运算位置决定。
假如初等矩阵左乘一个矩阵,那么初等矩阵对这一矩阵进行行变换,
E
i
j
E_{ij}
Eij 表示第i行元素对第j行元素进行的运算,以上面的矩阵为例:
[
1
0
0
0
1
0
0
−
2
1
]
A
egin{bmatrix}1 & 0 & 0 \0 & 1 & 0\0 & -2 & 1 \end{bmatrix}A
⎣⎡10001−2001⎦⎤A
E 32 E_{32} E32值为-2就表示第3行(i)元素对第2行(j)元素进行减运算,减去(-2是负值)的值为第二行元素的两倍。
如果是右乘某个矩阵则是进行列变换。
A
[
1
0
0
0
1
0
0
−
2
1
]
Aegin{bmatrix}1 & 0 & 0 \0 & 1 & 0\0 & -2 & 1 \end{bmatrix}
A⎣⎡10001−2001⎦⎤
E
32
E_{32}
E32值为-2就表示第3列(i)元素对第2列(j)元素进行减运算,减去(-2是负值)的值为第二列元素的两倍。
常数乘以某行(列)
除此之外还有 E i j E_{ij} Eij中i与j相等的情况,其意义是扩大i(j)行(列)(左乘为行右乘为列,左行右列)元素至原先的 E i j E_{ij} Eij倍。
交换行(列)
置换矩阵:这个矩阵的特点是每行每列都有一个1,剩下的元素都是0。这就限制了该矩阵必须为方阵(行列数量相同)。
举几个例子:
单位矩阵 如:
[
1
0
0
0
1
0
0
0
1
]
egin{bmatrix}1 & 0 & 0 \0 & 1 & 0\0 & 0 & 1 \end{bmatrix}
⎣⎡100010001⎦⎤最简单的置换
交换行或列 如:
[
0
0
1
0
1
0
1
0
0
]
egin{bmatrix}0 & 0 & 1 \0 & 1 & 0\1 & 0 & 0 \end{bmatrix}
⎣⎡001010100⎦⎤、
[
0
1
0
1
0
0
0
0
1
]
egin{bmatrix}0 & 1 & 0 \1 & 0 & 0\0 & 0 & 1 \end{bmatrix}
⎣⎡010100001⎦⎤、
[
1
0
0
0
0
1
0
1
0
]
egin{bmatrix}1 & 0 & 0 \0 & 0 & 1\0 & 1 & 0 \end{bmatrix}
⎣⎡100001010⎦⎤
还有交换不止一次的 如:
[
0
1
0
0
0
1
1
0
0
]
egin{bmatrix}0 & 1 & 0 \0 & 0 & 1\1 & 0 & 0 \end{bmatrix}
⎣⎡001100010⎦⎤、
[
0
0
1
1
0
0
0
1
0
]
egin{bmatrix}0 & 0 & 1 \1 & 0 & 0\0 & 1 & 0 \end{bmatrix}
⎣⎡010001100⎦⎤这样的虽然是置换矩阵,但是由于变换了不止一次,所以不是初等矩阵。
逆矩阵(引子)
对于之前的变化,如果我们要将其还原的话应该怎么做呢?
还原行(列)间先乘常数后相加
把原来的减换成加就好了,加上多少就减去多少,比如
[
1
0
0
0
1
0
0
−
2
1
]
A
egin{bmatrix}1 & 0 & 0 \0 & 1 & 0\0 & -2 & 1 \end{bmatrix}A
⎣⎡10001−2001⎦⎤A
要还原的话就直接这样运算:
[
1
0
0
0
1
0
0
2
1
]
[
1
0
0
0
1
0
0
−
2
1
]
A
=
A
egin{bmatrix}1 & 0 & 0 \0 & 1 & 0\0 & 2 & 1 \end{bmatrix}egin{bmatrix}1 & 0 & 0 \0 & 1 & 0\0 & -2 & 1 \end{bmatrix}A=A
⎣⎡100012001⎦⎤⎣⎡10001−2001⎦⎤A=A
就相当于:
[
1
0
0
0
1
0
0
2
1
]
[
1
0
0
0
1
0
0
−
2
1
]
A
=
[
1
0
0
0
1
0
0
0
1
]
A
egin{bmatrix}1 & 0 & 0 \0 & 1 & 0\0 & 2 & 1 \end{bmatrix}egin{bmatrix}1 & 0 & 0 \0 & 1 & 0\0 & -2 & 1 \end{bmatrix}A=egin{bmatrix}1 & 0 & 0 \0 & 1 & 0\0 & 0 & 1 \end{bmatrix}A
⎣⎡100012001⎦⎤⎣⎡10001−2001⎦⎤A=⎣⎡100010001⎦⎤A
于是有:
[
1
0
0
0
1
0
0
2
1
]
[
1
0
0
0
1
0
0
−
2
1
]
=
[
1
0
0
0
1
0
0
0
1
]
egin{bmatrix}1 & 0 & 0 \0 & 1 & 0\0 & 2 & 1 \end{bmatrix}egin{bmatrix}1 & 0 & 0 \0 & 1 & 0\0 & -2 & 1 \end{bmatrix}=egin{bmatrix}1 & 0 & 0 \0 & 1 & 0\0 & 0 & 1 \end{bmatrix}
⎣⎡100012001⎦⎤⎣⎡10001−2001⎦⎤=⎣⎡100010001⎦⎤
还原常数乘以某行(列)
原来是乘以某个常数,现在只要乘以对应的倒数即可,比如:
[
1
0
0
0
1
0
0
0
2
]
A
egin{bmatrix}1 & 0 & 0 \0 & 1 & 0\0 & 0 & 2 \end{bmatrix}A
⎣⎡100010002⎦⎤A
要还原的话即:
[
1
0
0
0
1
0
0
0
1
2
]
[
1
0
0
0
1
0
0
0
2
]
A
=
A
egin{bmatrix}1 & 0 & 0 \0 & 1 & 0\0 & 0 & frac 12 \end{bmatrix}egin{bmatrix}1 & 0 & 0 \0 & 1 & 0\0 & 0 & 2 \end{bmatrix}A=A
⎣⎡1000100021⎦⎤⎣⎡100010002⎦⎤A=A
同样有:
[
1
0
0
0
1
0
0
0
1
2
]
[
1
0
0
0
1
0
0
0
2
]
A
=
[
1
0
0
0
1
0
0
0
1
]
A
egin{bmatrix}1 & 0 & 0 \0 & 1 & 0\0 & 0 & frac 12 \end{bmatrix}egin{bmatrix}1 & 0 & 0 \0 & 1 & 0\0 & 0 & 2 \end{bmatrix}A=egin{bmatrix}1 & 0 & 0 \0 & 1 & 0\0 & 0 & 1 \end{bmatrix}A
⎣⎡1000100021⎦⎤⎣⎡100010002⎦⎤A=⎣⎡100010001⎦⎤A
即:
[
1
0
0
0
1
0
0
0
1
2
]
[
1
0
0
0
1
0
0
0
2
]
=
[
1
0
0
0
1
0
0
0
1
]
egin{bmatrix}1 & 0 & 0 \0 & 1 & 0\0 & 0 & frac 12 \end{bmatrix}egin{bmatrix}1 & 0 & 0 \0 & 1 & 0\0 & 0 & 2 \end{bmatrix}=egin{bmatrix}1 & 0 & 0 \0 & 1 & 0\0 & 0 & 1 \end{bmatrix}
⎣⎡1000100021⎦⎤⎣⎡100010002⎦⎤=⎣⎡100010001⎦⎤
还原交换行(列)
我们只看交换一次的,就相当于再同样的操作一次换回来:
[
0
0
1
0
1
0
1
0
0
]
A
egin{bmatrix}0 & 0 & 1 \0 & 1 & 0\1 & 0 & 0 \end{bmatrix}A
⎣⎡001010100⎦⎤A
要换回来就再同样的运行一次:
[
0
0
1
0
1
0
1
0
0
]
[
0
0
1
0
1
0
1
0
0
]
A
=
A
egin{bmatrix}0 & 0 & 1 \0 & 1 & 0\1 & 0 & 0 \end{bmatrix}egin{bmatrix}0 & 0 & 1 \0 & 1 & 0\1 & 0 & 0 \end{bmatrix}A=A
⎣⎡001010100⎦⎤⎣⎡001010100⎦⎤A=A
同样的有:
[
0
0
1
0
1
0
1
0
0
]
[
0
0
1
0
1
0
1
0
0
]
=
[
1
0
0
0
1
0
0
0
1
]
egin{bmatrix}0 & 0 & 1 \0 & 1 & 0\1 & 0 & 0 \end{bmatrix}egin{bmatrix}0 & 0 & 1 \0 & 1 & 0\1 & 0 & 0 \end{bmatrix}=egin{bmatrix}1 & 0 & 0 \0 & 1 & 0\0 & 0 & 1 \end{bmatrix}
⎣⎡001010100⎦⎤⎣⎡001010100⎦⎤=⎣⎡100010001⎦⎤
若两个矩阵的乘积为(同阶的)单位矩阵的话,则两个矩阵互为逆矩阵。
逆矩阵皆为方阵,只有方阵才可能有逆矩阵。
矩阵记为A,逆矩阵记为
A
−
1
A^{-1}
A−1,
A
A
−
1
=
E
AA^{-1}=E
AA−1=E,E为单位矩阵。
再看看交换不只一次的:
虽然
[
0
1
0
0
0
1
1
0
0
]
[
0
1
0
0
0
1
1
0
0
]
egin{bmatrix}0 & 1 & 0 \0 & 0 & 1\1 & 0 & 0 \end{bmatrix}egin{bmatrix}0 & 1 & 0 \0 & 0 & 1\1 & 0 & 0 \end{bmatrix}
⎣⎡001100010⎦⎤⎣⎡001100010⎦⎤相乘不为单位矩阵,但是与其转置相乘的结果确实单位矩阵
[
0
1
0
0
0
1
1
0
0
]
[
0
0
1
1
0
0
0
1
0
]
=
[
1
0
0
0
1
0
0
0
1
]
egin{bmatrix}0 & 1 & 0 \0 & 0 & 1\1 & 0 & 0 \end{bmatrix}egin{bmatrix}0 & 0 & 1 \1 & 0 & 0\0 & 1 & 0 \end{bmatrix}=egin{bmatrix}1 & 0 & 0 \0 & 1 & 0\0 & 0 & 1 \end{bmatrix}
⎣⎡001100010⎦⎤⎣⎡010001100⎦⎤=⎣⎡100010001⎦⎤
置换矩阵的转置矩阵与逆矩阵相同。(
P
−
1
=
P
T
P^{-1}=P^T
P−1=PT)
转置矩阵交换了行列位置,再与原矩阵相乘时对角线上的元素相当于某行(列)元素的平方和,由于置换矩阵的每行列中仅有一个1,其余为0,所以主对角线上元素全为1,剩下的元素全为0为单位矩阵。