矩阵消元
实例方程组
{ 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 = [ 1 2 1 3 8 1 0 4 1 ] X = [ x y z ] A= \begin{bmatrix} 1 & 2 & 1 \\ 3 & 8 & 1 \\ 0 & 4 & 1 \end{bmatrix} \\ X= \begin{bmatrix} x\\y\\z \end{bmatrix} A= 130284111 X= xyz
B = [ 2 12 2 ] B= \begin{bmatrix} 2\\12\\2 \end{bmatrix} B= 2122
消元
[ 1 2 1 3 8 1 0 4 1 ] ⟶ ( 2 , 1 ) [ 1 2 1 0 2 − 2 0 4 1 ] ⟶ ( 3 , 2 ) [ 1 2 1 0 2 − 2 0 0 5 ] \begin{bmatrix} 1 & 2 & 1 \\ 3 & 8 & 1 \\ 0 & 4 & 1 \end{bmatrix} \stackrel{(2,1)}{\longrightarrow} \begin{bmatrix} 1 & 2 & 1 \\ 0 & 2 & -2 \\ 0 & 4 & 1 \end{bmatrix} \stackrel{(3,2)}\longrightarrow \begin{bmatrix} 1 & 2 & 1 \\ 0 & 2 & -2\\ 0 & 0 & 5 \end{bmatrix} 130284111 ⟶(2,1) 1002241−21 ⟶(3,2) 1002201−25
回代
[ 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{bmatrix} 2 \\ 12 \\ 2 \end{bmatrix} \stackrel{row_2-3row_1}\longrightarrow \begin{bmatrix} 2 \\ 6 \\ 2 \end{bmatrix} \stackrel{row_3-2row_2}\longrightarrow \begin{bmatrix} 2 \\ 6 \\-10 \end{bmatrix} 2122 ⟶row2−3row1 262 ⟶row3−2row2 26−10
求解
[ 1 2 1 0 2 − 2 0 0 5 ] [ x y z ] = [ 2 6 − 10 ] \begin{bmatrix} 1 & 2 & 1\\ 0 & 2 & -2\\ 0 & 0 & 5 \\ \end{bmatrix} \begin{bmatrix} x \\ y \\z \end{bmatrix} =\begin{bmatrix} 2 \\ 6 \\ -10 \end{bmatrix} 1002201−25 xyz = 26−10
结果
[ x y z ] = [ 2 1 − 2 ] \begin{bmatrix} x \\y \\z \end{bmatrix}= \begin{bmatrix} 2\\1 \\ -2 \end{bmatrix} xyz = 21−2
将上述消元的过程变为矩阵相乘的形式。
向量式思考
矩阵乘列向量
[ . . . . . . . . . ] [ x y z ] = [ x ∗ c o l 1 + y ∗ c o l 2 + z ∗ c o l 3 ] \begin{bmatrix} . & . & .\\ . & . & .\\ . & . & . \end{bmatrix} \begin{bmatrix}\ x \\ y\\ z \end{bmatrix}= \begin{bmatrix} x*col1 +y*col2 +z*col3 \end{bmatrix} ......... xyz =[x∗col1+y∗col2+z∗col3]
行向量乘矩阵
[ x y z ] [ . . . . . . . . . ] = [ x ∗ r o w 1 + y ∗ r o w 2 + z ∗ r o w 3 ] \begin{bmatrix}\ x \ y\ z \end{bmatrix} \begin{bmatrix} . & . & .\\ . & . & .\\ . & . & . \end{bmatrix}= \begin{bmatrix} x*row1 \\+\\y*row2 \\+\\z*row3 \end{bmatrix} [ x y z] ......... = x∗row1+y∗row2+z∗row3
一个矩阵左边乘一个单位矩阵并不改变其值
A = [ 1 2 1 3 8 1 0 4 1 ] = [ 1 0 0 0 1 0 0 0 1 ] [ 1 2 1 3 8 1 0 4 1 ] A= \begin{bmatrix} 1 & 2 & 1\\ 3 & 8 & 1\\ 0 & 4 & 1 \end{bmatrix}= \begin{bmatrix} 1 & 0 & 0\\ 0 & 1 & 0\\ 0 & 0 & 1\\ \end{bmatrix} \begin{bmatrix} 1 & 2 & 1\\ 3 & 8 & 1\\ 0 & 4 & 1 \end{bmatrix} A= 130284111 = 100010001 130284111
而做行的加减则可以
A = [ 1 2 1 3 8 1 0 4 1 ] A ′ = [ 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 4 1 ] A= \begin{bmatrix} 1 & 2 & 1\\ 3 & 8 & 1\\ 0 & 4 & 1 \end{bmatrix}\\ A'= \begin{bmatrix} 1 & 0 &0\\ -3 & 1 & 0\\ 0 &0 & 1 \end{bmatrix} \begin{bmatrix} 1 & 2 & 1\\ 3 & 8 & 1\\ 0 & 4 &1 \end{bmatrix}=\\ \begin{bmatrix} 1 & 2 &1 \\ 0 & 2 & -2\\ 0& 4 & 1 \end{bmatrix} A= 130284111 A′= 1−30010001 130284111 = 1002241−21
实际上这个过程就是,我们在之前的消元过程中的第二行减去三倍第一行的过程。我们继续下去将这个矩阵对角化。
A ′ ′ = [ 1 0 0 0 1 0 0 − 2 1 ] A ′ = [ 1 0 0 0 1 0 0 − 2 1 ] [ 1 2 1 0 2 − 2 0 4 1 ] = [ 1 2 1 0 2 − 2 0 0 5 ] A''= \begin{bmatrix} 1 & 0 & 0\\ 0 & 1 & 0\\ 0 & -2 & 1 \end{bmatrix} A'\\= \begin{bmatrix} 1 & 0 & 0\\ 0 & 1 & 0\\ 0 & -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} A′′= 10001−2001 A′= 10001−2001 1002241−21 = 1002201−25
我们令最后的上三角矩阵为
U = [ 1 2 1 0 2 − 2 0 0 5 ] U=\begin{bmatrix} 1 & 2 & 1\\ 0 & 2 & -2\\ 0 & 0 & 5 \end{bmatrix} U= 1002201−25
两个变换矩阵为
E 21 = [ 1 0 0 − 3 1 0 0 0 1 ] E 32 = [ 1 0 0 0 1 0 0 − 2 1 ] E_{21}=\begin{bmatrix} 1 & 0 &0\\ -3 & 1 & 0\\ 0 &0 & 1 \end{bmatrix} \\ E_{32}=\begin{bmatrix} 1 & 0 & 0\\ 0 & 1 & 0\\ 0 & -2 & 1 \end{bmatrix} E21= 1−30010001 E32= 10001−2001
则 E 32 ( E 21 A ) = U E_{32}(E_{21}A)=U E32(E21A)=U
而矩阵乘法满足结合律证明即
E 32 E 21 A = E 32 ( E 21 A ) E_{32}E_{21}A=E_{32}(E_{21}A) E32E21A=E32(E21A)
所以最终消元的过程变成了寻找矩阵E的过程
E = E 32 E 21 E=E_{32}E_{21} E=E32E21
这一过程。
在上述的消元矩阵中,我们并没有进行列的交换。那么如何进行交换呢?
我们知道在原矩阵基础左边乘单位矩阵,矩阵不会发生变化。
A = [ 1 2 3 4 ] = [ 1 0 0 1 ] [ 1 2 3 4 ] A= \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix}=\ \begin{bmatrix} 1 & 0\\ 0 & 1 \end{bmatrix} \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix} A=[1324]= [1001][1324]
如何交换两行呢,将单位矩阵变形
A ′ = [ 0 1 1 0 ] [ 1 2 3 4 ] = [ 3 4 1 2 ] A'= \begin{bmatrix} 0 & 1 \\ 1 & 0 \end{bmatrix} \begin{bmatrix} 1 & 2\\ 3 & 4 \end{bmatrix}= \begin{bmatrix} 3 & 4\\ 1 & 2 \end{bmatrix} A′=[0110][1324]=[3142]
推广到多行
A = [ 1 2 3 4 5 6 7 8 9 ] A= \begin{bmatrix} 1 & 2 & 3\\ 4 & 5 & 6\\ 7 & 8 & 9 \end{bmatrix} A= 147258369
所以交换任意两行,只需将单位矩阵中对应行 1 1 1的位置进行交换。
在矩阵左边乘是对原矩阵行变换,而在矩阵右边则是列变换
交换矩阵两列
A = [ 1 2 3 4 ] A ′ = [ 1 2 3 4 ] [ 0 1 1 0 ] = [ 2 1 4 3 ] A= \begin{bmatrix} 1 & 2\\ 3 & 4 \end{bmatrix} \\ A'= \begin{bmatrix} 1 & 2\\ 3 & 4 \end{bmatrix} \begin{bmatrix} 0 & 1\\ 1 & 0 \end{bmatrix}= \begin{bmatrix} 2 & 1\\ 4 & 3 \end{bmatrix} A=[1324]A′=[1324][0110]=[2413]
交换多列也是一样的效果
交换第 1 1 1第 2 2 2列
A = [ 1 2 3 4 5 6 7 8 9 ] A ′ = [ 1 2 3 4 5 6 7 8 9 ] [ 0 1 0 1 0 0 0 0 1 ] = [ 2 1 3 5 4 6 8 7 9 ] A= \begin{bmatrix} 1 & 2 & 3\\ 4 & 5 & 6\\ 7 & 8 & 9\\ \end{bmatrix} \\ A'= \begin{bmatrix} 1 & 2 & 3\\ 4 & 5 & 6\\ 7 & 8 & 9\\ \end{bmatrix} \begin{bmatrix} 0 & 1 & 0\\ 1 & 0 & 0\\ 0 & 0 & 1\\ \end{bmatrix}= \begin{bmatrix} 2 & 1 & 3\\ 5 & 4 & 6\\ 8 & 7 & 9\\ \end{bmatrix} A= 147258369 A′= 147258369 010100001 = 258147369
所以交换任意两列,只需将单位矩阵中对应行 1 1 1的位置进行交换。
与行交换的不同地方在于,矩阵乘的在右边了。
A = [ 1 0 0 − 3 1 0 0 0 1 ] A − 1 = [ 1 0 0 3 1 0 0 0 1 ] A − 1 A = [ 1 0 0 3 1 0 0 0 1 ] [ 1 0 0 − 3 1 0 0 0 1 ] = [ 1 0 0 0 1 0 0 0 1 ] A= \begin{bmatrix} 1 & 0 & 0\\ -3 & 1 &0\\ 0 & 0 & 1 \end{bmatrix}\\ A^{-1}= \begin{bmatrix} 1 & 0 & 0\\ 3 & 1 & 0\\ 0 & 0 & 1\\ \end{bmatrix}\\ A^{-1}A= \begin{bmatrix} 1 & 0 & 0\\ 3 & 1 & 0\\ 0 & 0 & 1\\ \end{bmatrix} \begin{bmatrix} 1 & 0 & 0\\ -3 & 1 &0\\ 0 & 0 & 1 \end{bmatrix}= \begin{bmatrix} 1 & 0 & 0\\ 0 & 1 &0\\ 0 & 0 & 1 \end{bmatrix} A= 1−30010001 A−1= 130010001 A−1A= 130010001 1−30010001 = 100010001