使用消元法解线性方程组
{ x + 2 y + z = 2 3 x + 8 y + z = 12 + 4 y + z = 2 \begin{cases} x&+&2y&+&z&=2\\[2ex] 3x&+&8y&+&z&=12\\[2ex] &+&4y&+&z&=2 \end{cases} ⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧x3x+++2y8y4y+++zzz=2=12=2
省去繁琐的加减号和
x
y
z
xyz
xyz 等字母, 使用矩阵来表示线性方程组. 让我们对
A
A
A 进行消元操作(MATLAB就是先处理系数矩阵后再处理
b
\mathbf{b}
b ):
1
2
1
3
8
1
0
4
1
⟶
1
2
1
0
2
−
2
0
4
1
⟶
1
2
1
0
2
−
2
0
0
5
\begin{matrix} 1 & 2 & 1 \\ 3 & 8 & 1 \\ 0 & 4 & 1 \end{matrix}\longrightarrow \begin{matrix} 1 & 2 & 1 \\ 0 & 2 & -2 \\ 0 & 4 & 1 \end{matrix}\longrightarrow \begin{matrix} 1 & 2 & 1 \\ 0 & 2 & -2 \\ 0 & 0 & 5 \end{matrix}
130284111⟶1002241−21⟶1002201−25
最后一个矩阵称为
U
U
U , 也就是上三角矩阵, 每一行第一个非零元素称为主元(pivot).
讨论一下消元失效的情况
如果 0 0 0 占据了主元的位置, 使用行交换即可. 对于消元后主元变为 0 0 0 的情形, 只要下面不全是 0 0 0 , 都可以用行交换来解决.
如果某一行变成全 0 0 0 , 消元失效.
回代 Back Substitution
我们把对
A
A
A 的操作作用于
b
\mathbf{b}
b , 使用增广矩阵:
1
2
1
2
3
8
1
12
0
4
1
2
⟶
1
2
1
2
0
2
−
2
6
0
4
1
2
⟶
1
2
1
2
0
2
−
2
6
0
0
5
−
10
\begin{array}{ccc|c}1 & 2 & 1 & 2 \\3 & 8 & 1 & 12 \\0 & 4 & 1 & 2\end{array}\longrightarrow\begin{array}{ccc|c}1 & 2 & 1 & 2 \\0 & 2 & -2 & 6 \\0 & 4 & 1 & 2\end{array}\longrightarrow\begin{array}{ccc|c}1 & 2 & 1 & 2 \\0 & 2 & -2 & 6 \\0 & 0 & 5 & -10\end{array}
1302841112122⟶1002241−21262⟶1002201−2526−10
我们把向量
[
2
6
−
10
]
\begin{bmatrix}2\\6\\-10\end{bmatrix}
⎣⎡26−10⎦⎤ 称为
c
\mathbf{c}
c .
回代, 将得到的矩阵代回原方程组:
{
x
+
2
y
+
z
=
2
x
=
2
2
y
−
2
z
=
6
y
=
1
5
z
=
−
10
z
=
−
2
\begin{cases} x&+&2y&+&z&=2&&x=2\\[2ex] &&2y&-&2z&=6&&y=1\\[2ex] &&&&5z&=-10&&z=-2 \end{cases}
⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧x+2y2y+−z2z5z=2=6=−10x=2y=1z=−2
消元矩阵
回想一下本门课的big picture: 矩阵乘一个向量实际上是矩阵列的线性组合:
[ − − − − − − − − − ] [ 3 4 5 ] = 3 × col 1 + 4 × col 2 + 5 × col 3 \begin{bmatrix} -&-&-\\ -&-&-\\ -&-&- \end{bmatrix} \begin{bmatrix} 3\\4\\5 \end{bmatrix}= 3\times \text{col 1}+ 4\times \text{col 2}+ 5\times \text{col 3} ⎣⎡−−−−−−−−−⎦⎤⎣⎡345⎦⎤=3×col 1+4×col 2+5×col 3
同样使用向量乘矩阵就是矩阵行的线性组合:
[ 1 2 7 ] [ − − − − − − − − − ] = 1 × row 1 + 2 × row 2 + 7 × row 3 \begin{bmatrix} 1&2&7 \end{bmatrix} \begin{bmatrix} -&-&-\\-&-&-\\-&-&- \end{bmatrix}= \begin{matrix} 1\times \text{row 1}\\ +2\times \text{row 2}\\ +7\times \text{row 3} \end{matrix} [127]⎣⎡−−−−−−−−−⎦⎤=1×row 1+2×row 2+7×row 3
Step1:考虑我们首先需要从 row 2 \text{row 2} row 2 中减去三个 row 1 \text{row 1} row 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 4 1 ] \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} ⎣⎡1−30010001⎦⎤⎣⎡130284111⎦⎤=⎣⎡1002241−21⎦⎤
第一行的 1 0 0 \begin{matrix}1&0&0\end{matrix} 100 意味着取 [ 1 2 1 3 8 1 0 4 1 ] \begin{bmatrix} 1&2&1\\3&8&1\\0&4&1 \end{bmatrix} ⎣⎡130284111⎦⎤ 第一行的 1 1 1 倍, 同样第三行 0 0 1 \begin{matrix}0&0&1\end{matrix} 001 意味着取 [ 1 2 1 3 8 1 0 4 1 ] \begin{bmatrix} 1&2&1\\3&8&1\\0&4&1 \end{bmatrix} ⎣⎡130284111⎦⎤ 第三行的 1 1 1 倍, 而第二行的 − 3 1 0 \begin{matrix}-3&1&0\end{matrix} −310 就表示了取第一行的 − 3 -3 −3 倍加上第二行的 1 1 1 倍.
如何检验某一个元素的值?矩阵乘法得到的矩阵中的 i , j i,j i,j 元的值就是第一个矩阵的第 i i i 个行向量点乘第二个矩阵的第 j j j 个列向量.
我们称前边的矩阵 [ 1 0 0 − 3 1 0 0 0 1 ] \begin{bmatrix} 1&0&0\\-3&1&0\\0&0&1 \end{bmatrix} ⎣⎡1−30010001⎦⎤ 为初等矩阵 E E E , 记为 E 21 E_{21} E21 , 表示位置2,1上的变换.
Step2:同理, 从
row 3
\text{row 3}
row 3 中减去两倍
row 2
\text{row 2}
row 2 , 我们就需要左乘一个
E
32
E_{32}
E32 :
[
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
]
\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}
⎣⎡10001−2001⎦⎤⎣⎡1002241−21⎦⎤=⎣⎡1002201−25⎦⎤
矩阵消元到此结束, 每一步用一个初等矩阵:
E
32
(
E
21
A
)
=
U
E_{32}(E_{21}A)=U
E32(E21A)=U
矩阵乘法的一些性质
有没有一个矩阵可以让
A
A
A 直接得到
U
U
U :
?
‾
A
=
U
\underline{\ ?\ }\,A=U
? A=U
只要把初等矩阵放到一起就好了. 换言之, 矩阵乘法的"括号"是可以交换的, 这称作结合律. 这个"移动括号"定理将很常用.
还有一种初等矩阵, 用于交换两行: 置换矩阵 Permutation
交换
row 2
\text{row 2}
row 2 和
row 1
\text{row 1}
row 1 :
[
0
1
0
1
0
0
0
0
1
]
\begin{bmatrix} 0&1&0\\1&0&0\\0&0&1 \end{bmatrix}
⎣⎡010100001⎦⎤
如果我们要交换两列, 我们只需要右乘一个初等矩阵. 左乘意味着行变换, 而右乘意味着列变换. 这里也显而易见的可以看出矩阵乘法是不满足交换律的.
逆变换
如何把
U
U
U 变回
A
A
A ? 我们首先在第二行中减去了三倍第一行, 现在我们要找一个矩阵抵消掉这一步操作:
[
?
]
[
1
0
0
−
3
1
0
0
0
1
]
=
[
1
0
0
0
1
0
0
0
1
]
\begin{bmatrix} \\\ &?&\ \\\, \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}
⎣⎡ ? ⎦⎤⎣⎡1−30010001⎦⎤=⎣⎡100010001⎦⎤
显而易见, 在第二行中加上三倍第一行即可:
[
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
]
\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}
⎣⎡130010001⎦⎤⎣⎡1−30010001⎦⎤=⎣⎡100010001⎦⎤
其中
E
−
1
=
[
1
0
0
3
1
0
0
0
1
]
E^{-1}=\begin{bmatrix} 1&0&0\\3&1&0\\0&0&1 \end{bmatrix}
E−1=⎣⎡130010001⎦⎤ 就是
[
1
0
0
−
3
1
0
0
0
1
]
\begin{bmatrix} 1&0&0\\-3&1&0\\0&0&1 \end{bmatrix}
⎣⎡1−30010001⎦⎤ 的逆矩阵.