对于求解方程,我们来说说消元法,这也是计算机程序常用的方法。谈谈何时消元法可以用消元,何时不行。
1.两个等价的方程组
{ x + 2 y + z = 2 3 x + 8 y + z = 12 4 y + z = 2 ⟺ { x + 2 y + z = 2 2 y − 2 z = 6 5 z = − 10 A x = b ⟺ U x = c \left\{\begin{array}{c}x+2y+z=2\\3x+8y+z=12\\4y+z=2 \end{array}\right.\Longleftrightarrow \left\{\begin{array}{c}x+2y+z=2\\ 2y-2z=6\\5z=-10 \end{array} \right. \\Ax=b \Longleftrightarrow Ux=c ⎩⎨⎧x+2y+z=23x+8y+z=124y+z=2⟺⎩⎨⎧x+2y+z=22y−2z=65z=−10Ax=b⟺Ux=c
这里记第1个方程的系数矩阵为A [ 1 2 1 3 8 1 0 4 1 ] \begin{bmatrix}1&2&1\\3&8&1\\0&4&1 \end{bmatrix} ⎣⎡130284111⎦⎤,方程右侧构成向量b [ 2 12 2 ] \begin{bmatrix}2\\12\\2 \end{bmatrix} ⎣⎡2122⎦⎤,记第二个方程的系数矩阵为U [ 1 2 1 0 2 − 2 0 0 5 ] \begin{bmatrix}1&2&1\\0&2&-2\\0&0&5 \end{bmatrix} ⎣⎡1002201−25⎦⎤,方程右侧构成向量 [ 2 6 − 10 ] \begin{bmatrix}2\\6\\-10 \end{bmatrix} ⎣⎡26−10⎦⎤。
显然,通过消元,我们可以看出上面给出的两个方程组是等价的。对于第一个方程,我们难以直接看出方程的解,而对于第二个方程我们可以通过“回代"的方法依次求解z、y、x。
可见当方程的系数矩阵呈矩阵U这种“上三角型”(矩阵对角线以下的元素都为0)时,我们可以通过回代的方法求解方程。其实消元的过程就对于者系数矩阵的变化过程,那第一个方程的系数矩阵A [ 1 2 1 3 8 1 0 4 1 ] \begin{bmatrix}1&2&1\\3&8&1\\0&4&1 \end{bmatrix} ⎣⎡130284111⎦⎤是怎么变换成U [ 1 2 1 0 2 − 2 0 0 5 ] \begin{bmatrix}1&2&1\\0&2&-2\\0&0&5 \end{bmatrix} ⎣⎡1002201−25⎦⎤的呢?
- 利用乘法进行消元的过程(将系数矩阵变换为上三角矩阵),
[ 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{bmatrix}1&2&1\\3&8&1\\0&4&1 \end{bmatrix}\Rightarrow\begin{bmatrix}1&2&1\\0&2&-2\\0&4&1 \end{bmatrix}\Rightarrow\begin{bmatrix}1&2&1\\0&2&-2\\0&0&5 \end{bmatrix} ⎣⎡130284111⎦⎤⇒⎣⎡1002241−21⎦⎤⇒⎣⎡1002201−25⎦⎤
第一步:(ROW2 = ROW2 - 3*ROW1;ROW3= ROW3 - 0*ROW1)
第二步:(ROW3=ROW3-2*ROW2)
我们把变换出来的上三角矩阵的对角线上的元素称为主元,从第一行到最后一行,我们确定每一行的主元,并通过消元法将主元正下方的元素置0,当每一行的主元都确定后(矩阵也变换为上三角矩阵),我们再从最后一行开始,依次解得一个未知数。
变换结束时,我们得到上三角矩阵意味着对角线上的元素不能为0(每一行的主元不能为0)否则回代求解时不能得到确定的解。
- 当消元的过程遇到主元为0(先判断是否可以交换该行和该行下面的某行来使主元非0)
[ 1 2 1 3 6 1 0 4 1 ] ⇒ [ 1 2 1 0 0 − 2 0 4 1 ] ⇒ [ 1 2 1 0 4 1 0 0 − 2 ] \begin{bmatrix}1&2&1\\3&6&1\\0&4&1 \end{bmatrix}\Rightarrow\begin{bmatrix}1&2&1\\0&0&-2\\0&4&1 \end{bmatrix}\Rightarrow\begin{bmatrix}1&2&1\\0&4&1\\0&0&-2 \end{bmatrix} ⎣⎡130264111⎦⎤⇒⎣⎡1002041−21⎦⎤⇒⎣⎡10024011−2⎦⎤
交换行对应于交换方程组中方程的顺序,不会影响方程的解,所以我们可以利用这个性质进行行交换。
- 当消元过程主元为0(且无法交换行使主元非0)
[ 1 2 1 3 8 1 0 4 − 4 ] ⇒ [ 1 2 1 0 2 − 2 0 4 − 4 ] ⇒ [ 1 2 1 0 2 − 2 0 0 0 ] \begin{bmatrix}1&2&1\\3&8&1\\0&4&-4 \end{bmatrix}\Rightarrow\begin{bmatrix}1&2&1\\0&2&-2\\0&4&-4 \end{bmatrix}\Rightarrow\begin{bmatrix}1&2&1\\0&2&-2\\0&0&0\end{bmatrix} ⎣⎡13028411−4⎦⎤⇒⎣⎡1002241−2−4⎦⎤⇒⎣⎡1002201−20⎦⎤
这时我们无法通过交换使最后一行的主元非0,故此时不能从最后一行进行回代求解方程,此时方程没有唯一解,且我们称之该方程的系数矩阵为不可逆矩阵。
- 当可以系数矩阵化为上三角矩阵,进行回代求解
[ 1 2 1 ∣ 2 3 8 1 ∣ 12 0 4 1 ∣ 2 ] ⇒ [ 1 2 1 ∣ 2 0 2 − 2 ∣ 6 0 0 5 ∣ − 10 ] \begin{bmatrix}1&2&1&|&2\\3&8&1&|&12\\0&4&1&|&2 \end{bmatrix}\Rightarrow\begin{bmatrix}1&2&1&|&2\\0&2&-2&|&6\\0&0&5&|&-10\end{bmatrix} ⎣⎡130284111∣∣∣2122⎦⎤⇒⎣⎡1002201−25∣∣∣26−10⎦⎤
我们引入增广矩阵 [ A b ] \begin{bmatrix}A&b\end{bmatrix} [Ab](在系数矩阵A的右边加上一列b,即方程等号右边的值),同 系 数 矩 阵 ⇒ 上 三 角 矩 阵 : A ⇒ U 系数矩阵\Rightarrow 上三角矩阵:A\Rightarrow U 系数矩阵⇒上三角矩阵:A⇒U进行的行变换增广矩阵 [ A b ] \begin{bmatrix}A&b\end{bmatrix} [Ab]进行同样的行变换使 [ A b ] ⇒ [ U c ] \begin{bmatrix}A&b\end{bmatrix}\Rightarrow \begin{bmatrix}U&c\end{bmatrix} [Ab]⇒[Uc].
然后我们就可以从最后一行开始进行回代依次求解z、y、x了。
2.矩阵描述A->U
上面我们通过变换系数矩阵来求解方程,这时我们应如何用来描述矩阵的变化呢?
- 矩阵与向量的乘法的本质:向量的线性结合。
- 矩阵乘列向量:矩阵列向量的线性结合
[ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ] [ 3 4 5 ] = 3 ∗ c o l u m 1 + 4 ∗ c o l u m 2 + 5 ∗ c o l u m 3 \begin{bmatrix}*&*&*\\ *& *&*\\ *&*&* \end{bmatrix}\begin{bmatrix}3\\4\\5\end{bmatrix}=3*colum1+4*colum2+5*colum3 ⎣⎡∗∗∗∗∗∗∗∗∗⎦⎤⎣⎡345⎦⎤=3∗colum1+4∗colum2+5∗colum3
如第1节提到的矩阵乘向量可以看成矩阵列向量的线性结合从而得到一个新的列向量。
- 行向量乘矩阵:矩阵行向量的线性结合
[ 3 4 5 ] [ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ] = 3 ∗ r o w 1 + 4 ∗ r o w 2 + 5 ∗ r o w 3 \begin{bmatrix}3&4&5\end{bmatrix}\begin{bmatrix}*&*&*\\ *& *&*\\ *&*&* \end{bmatrix}=3*row1+4*row2+5*row3 [345]⎣⎡∗∗∗∗∗∗∗∗∗⎦⎤=3∗row1+4∗row2+5∗row3
类似的,行向量乘矩阵其实就是将矩阵的行向量进行线性结合得到一个新的行向量。
- 矩阵乘矩阵的本质:矩阵的行变换或列变换
基于前面面条性质,矩阵A乘矩阵B可以有两种视角
- 看成矩阵A分别乘以矩阵B中的列向量
- 看成矩阵A中的行向量分别乘以矩阵B
-
之前的例子是将矩阵A进行变换为U,下面让我们看看A都可以进行哪些变换
( [ 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{bmatrix}1&2&1\\3&8&1\\0&4&1 \end{bmatrix}\Rightarrow\begin{bmatrix}1&2&1\\0&2&-2\\0&4&1 \end{bmatrix}\Rightarrow\begin{bmatrix}1&2&1\\0&2&-2\\0&0&5 \end{bmatrix} ⎣⎡130284111⎦⎤⇒⎣⎡1002241−21⎦⎤⇒⎣⎡1002201−25⎦⎤)
-
[ 1 0 0 0 1 0 0 0 1 ] [ 1 2 1 3 8 1 0 4 1 ] = [ 1 2 1 3 8 1 0 4 1 ] \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}=\begin{bmatrix}1&2&1\\3&8&1\\0&4&1\end{bmatrix} ⎣⎡100010001⎦⎤⎣⎡130284111⎦⎤=⎣⎡130284111⎦⎤
可以看出,当左乘一个单位矩阵,矩阵A不做任何改变
-
(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⎦⎤
(2) [ 1 0 0 0 0 1 0 1 0 ] [ 1 2 1 3 8 1 0 4 1 ] = [ 1 2 1 0 4 1 3 8 1 ] \begin{bmatrix}1&0&0\\0&0&1\\0&1&0\end{bmatrix}\begin{bmatrix}1&2&1\\3&8&1\\0&4&1\end{bmatrix}=\begin{bmatrix}1&2&1\\0&4&1\\3&8&1\end{bmatrix} ⎣⎡100001010⎦⎤⎣⎡130284111⎦⎤=⎣⎡103248111⎦⎤
可以看出,当左乘一个单位矩阵,可能(1)矩阵A的i行加上j行的k倍或者
(2)交换矩阵A的i行和j行。
这里我们把(1)中左乘的初等矩阵记为 E 21 E_{21} E21
-
[ 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⎦⎤
将(1)得到的矩阵再左乘一个初等矩阵,消元结束(得到一个上三角矩阵),
我们记左乘的这个初等矩阵为 E 32 E_{32} E32。
- 类比:思考一下矩阵A的列变换与右乘一个矩阵的关系
-
-
A->U:n次初等变换或一次变换
至此,我们知道了A变为U可以经过有限次初等变换,即依次左乘有限个初等矩阵,前面的例子可写成 E 32 E 21 A = U E_{32}E_{21}A=U E32E21A=U,那么A可以进行一次变换就为U吗?
答案是肯定的,因为矩阵乘法满足结合率(但不满足交换率),计算出有限个初等矩阵的乘积(这里为 E 32 E 21 E_{32}E_{21} E32E21),我们就得到了一击致命的消元矩阵!
但我并不想这么做,因为有更好的方法。不是关于A怎么变成U,而是U怎么变成A.
逆变换
你知道了A变为U与矩阵乘法的关系,那U怎么可以变成A呢?留给你思考,下一讲见