使用消元法解线性方程组
{x+2y+z=23x+8y+z=12+4y+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
省去繁琐的加减号和 xyzxyzxyz 等字母, 使用矩阵来表示线性方程组. 让我们对 AAA 进行消元操作(MATLAB就是先处理系数矩阵后再处理 b\mathbf{b}b ):
121381041⟶12102−2041⟶12102−2005
\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
最后一个矩阵称为 UUU , 也就是上三角矩阵, 每一行第一个非零元素称为主元(pivot).
讨论一下消元失效的情况
如果 000 占据了主元的位置, 使用行交换即可. 对于消元后主元变为 000 的情形, 只要下面不全是 000 , 都可以用行交换来解决.
如果某一行变成全 000 , 消元失效.
回代 Back Substitution
我们把对 AAA 的操作作用于 b\mathbf{b}b , 使用增广矩阵:
1212381120412⟶121202−260412⟶121202−26005−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
我们把向量 [26−10]\begin{bmatrix}2\\6\\-10\end{bmatrix}⎣⎡26−10⎦⎤ 称为 c\mathbf{c}c .
回代, 将得到的矩阵代回原方程组:
{x+2y+z=2x=22y−2z=6y=15z=−10z=−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: 矩阵乘一个向量实际上是矩阵列的线性组合:
[−−−−−−−−−][345]=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
同样使用向量乘矩阵就是矩阵行的线性组合:
[127][−−−−−−−−−]=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 , 我们要构造一个矩阵:
[100−310001][121381041]=[12102−2041] \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⎦⎤
第一行的 100\begin{matrix}1&0&0\end{matrix}100 意味着取 [121381041]\begin{bmatrix} 1&2&1\\3&8&1\\0&4&1 \end{bmatrix}⎣⎡130284111⎦⎤ 第一行的 111 倍, 同样第三行 001\begin{matrix}0&0&1\end{matrix}001 意味着取 [121381041]\begin{bmatrix} 1&2&1\\3&8&1\\0&4&1 \end{bmatrix}⎣⎡130284111⎦⎤ 第三行的 111 倍, 而第二行的 −310\begin{matrix}-3&1&0\end{matrix}−310 就表示了取第一行的 −3-3−3 倍加上第二行的 111 倍.
如何检验某一个元素的值?矩阵乘法得到的矩阵中的 i,ji,ji,j 元的值就是第一个矩阵的第 iii 个行向量点乘第二个矩阵的第 jjj 个列向量.
我们称前边的矩阵 [100−310001]\begin{bmatrix} 1&0&0\\-3&1&0\\0&0&1 \end{bmatrix}⎣⎡1−30010001⎦⎤ 为初等矩阵 EEE , 记为 E21E_{21}E21 , 表示位置2,1上的变换.
Step2:同理, 从 row 3\text{row 3}row 3 中减去两倍 row 2\text{row 2}row 2 , 我们就需要左乘一个 E32E_{32}E32 :
[1000100−21][12102−2041]=[12102−2005]
\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⎦⎤
矩阵消元到此结束, 每一步用一个初等矩阵:
E32(E21A)=U
E_{32}(E_{21}A)=U
E32(E21A)=U
矩阵乘法的一些性质
有没有一个矩阵可以让 AAA 直接得到 UUU :
? ‾ A=U
\underline{\ ?\ }\,A=U
? A=U
只要把初等矩阵放到一起就好了. 换言之, 矩阵乘法的"括号"是可以交换的, 这称作结合律. 这个"移动括号"定理将很常用.
还有一种初等矩阵, 用于交换两行: 置换矩阵 Permutation
交换 row 2\text{row 2}row 2 和 row 1\text{row 1}row 1 :
[010100001]
\begin{bmatrix}
0&1&0\\1&0&0\\0&0&1
\end{bmatrix}
⎣⎡010100001⎦⎤
如果我们要交换两列, 我们只需要右乘一个初等矩阵. 左乘意味着行变换, 而右乘意味着列变换. 这里也显而易见的可以看出矩阵乘法是不满足交换律的.
逆变换
如何把 UUU 变回 AAA ? 我们首先在第二行中减去了三倍第一行, 现在我们要找一个矩阵抵消掉这一步操作:
[ ? ][100−310001]=[100010001]
\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⎦⎤
显而易见, 在第二行中加上三倍第一行即可:
[100310001][100−310001]=[100010001]
\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=[100310001]E^{-1}=\begin{bmatrix}
1&0&0\\3&1&0\\0&0&1
\end{bmatrix}E−1=⎣⎡130010001⎦⎤ 就是 [100−310001]\begin{bmatrix}
1&0&0\\-3&1&0\\0&0&1
\end{bmatrix}⎣⎡1−30010001⎦⎤ 的逆矩阵.