求解下列一元三次方程: { 2 x + 3 y + z = 6 x − y + 2 z = − 1 x + 2 y − z = 5 \begin{cases} &2x+3y+z=6 \\ &x-y+2z=-1\\ &x+2y-z=5 \end{cases} ⎩ ⎨ ⎧2x+3y+z=6x−y+2z=−1x+2y−z=5 式 3 3 3+式 1 1 1: 3 x + 5 y = 11 3x+5y=11 3x+5y=11记为式 4 4 4; 式 3 × 2 3\times2 3×2+式2: 3 x + 3 y = 9 3x+3y=9 3x+3y=9记为式 5 5 5; 式 4 4 4-式 5 5 5有: 2 y = 2 , y = 1 2y=2,y=1 2y=2,y=1,带入式 5 5 5有: 3 x = 6 , x = 2 3x=6,x=2 3x=6,x=2,再d代入式 1 1 1得, z = 6 − 2 × 2 − 3 × 1 = − 1 z=6-2\times2-3\times1=-1 z=6−2×2−3×1=−1,综上方程式的解为: { x = 2 y = 1 z = − 1 \begin{cases} &x=2\\ &y=1\\ &z=-1\\ \end{cases} ⎩ ⎨ ⎧x=2y=1z=−1 求解过程的主要思想就是:寻找两个容易消元的两个方程,消去其中的一个元,再利用不同于当前方程的两方程再消去同一个元,最后结合这两个消元的结果方程,若有解的话,必然能够求出其中一个元的具体数值,然后就是根据这个具体结果再求解剩余元数值。
二、一个近乎机械的方法求解(一)提到的消元方法,有一定的随意性,因为作为求解主体——人,需要权衡消元方便(没有分数运算等),计算机则需要固定的思路,而不是考虑“消元方便”,毕竟计算是计算机的特长。消元的目标是通过倍乘基准和待消行使得其指定系数为零,倍乘基准和待消行可以同时进行。
2.1 倍乘待消行倍乘待消行其策略是:
- 从上到下,以第一行为基准,消去基准行后,所有 x x x系数;
- 从上到下,以第二行为基准,消去基准行后,所有 y y y系数;
- 循环直至只剩一个未知数。
{ 2 x + 3 y + z = 6 x − y + 2 = − 1 x + 2 y − z = 5 (1) \begin{cases} 2x+3y+z=6\\ x-y+2=-1\\ x+2y-z=5\\ \end{cases} \tag{1} ⎩ ⎨ ⎧2x+3y+z=6x−y+2=−1x+2y−z=5(1) 消去2,3行的 x x x系数: { 2 x + 3 y + z = 6 0 x − 5 y + 3 = − 8 0 x + y − 3 z = 4 (2) \begin{cases} 2x+3y+z=6\\ 0x-5y+3=-8\\ 0x+y-3z=4\\ \end{cases} \tag{2} ⎩ ⎨ ⎧2x+3y+z=60x−5y+3=−80x+y−3z=4(2) 消去3行 y y y系数: { 2 x + 3 y + z = 6 0 x − 5 y + 3 = − 8 0 x + 0 y + 12 z = − 12 (3) \begin{cases} 2x+3y+z=6\\ 0x-5y+3=-8\\ 0x+0y+12z=-12\\ \end{cases} \tag{3} ⎩ ⎨ ⎧2x+3y+z=60x−5y+3=−80x+0y+12z=−12(3) 到了第三步,我们最终通过回代(Back substitution)的方法求出所有未知数。
2.2 倍乘基准行其实,计算机消元的时候有一些不一样,每一次通过倍乘基准行的方式而不是倍乘待消行来完成类似上述的消元过程。只观察其方程的系数: 2 3 1 6 1 − 1 2 − 1 1 2 − 1 5 \begin{matrix} 2&3&1&6\\ 1&-1&2&-1\\ 1&2&-1&5 \end{matrix} 2113−1212−16−15 消去 x x x系数: 2 3 1 6 0 − 5 2 3 2 − 4 0 1 2 − 3 2 2 \begin{matrix} 2&3&1&6\\ 0&-\frac{5}{2}&\frac{3}{2}&-4\\ 0&\frac{1}{2}&-\frac{3}{2}&2 \end{matrix} 2003−2521123−236−42 消去 y y y系数: 2 3 1 6 0 − 5 2 3 2 − 4 0 0 − 6 5 6 5 \begin{matrix} 2&3&1&6\\ 0&-\frac{5}{2}&\frac{3}{2}&-4\\ 0&0&-\frac{6}{5}&\frac{6}{5} \end{matrix} 2003−250123−566−456
三、矩阵消元倍乘待消去行。考虑以下方程: { 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 A A,等号的右边即为向量 b b b: A = [ 1 2 1 3 8 1 0 4 1 ] , b = [ 2 12 2 ] A=\begin{bmatrix} 1&2&1\\ 3&8&1\\ 0&4&1 \end{bmatrix}, b= \begin{bmatrix} 2\\ 12\\ 2 \end{bmatrix} A= 130284111 ,b= 2122 组合在一起则成为增广矩阵(augmented matrix)。
[ A , b ] = [ 1 2 1 2 3 8 1 12 0 4 1 2 ] [A,b] =\begin{bmatrix} 1&2&1&2\\ 3&8&1&12\\ 0&4&1&2\\ \end{bmatrix} [A,b]= 1302841112122
“增”指的是在系数矩阵 A A A上增加了一列 b b b。和前面提到的计算机消元法思路,有以下变换: [ A , b ] = [ 1 2 1 2 3 8 1 12 0 4 1 2 ] → r 21 , r 31 [ 1 2 1 2 0 2 − 2 6 0 4 1 2 ] → r 32 [ 1 2 1 2 0 2 − 2 6 0 0 5 − 10 ] (4) [A,b]=\begin{bmatrix} 1&2&1&2\\ 3&8&1&12\\ 0&4&1&2\\ \end{bmatrix} \xrightarrow{r21,r31} \begin{bmatrix} 1&2&1&2\\ 0&2&-2&6\\ 0&4&1&2\\ \end{bmatrix} \xrightarrow{r32} \begin{bmatrix} \boxed{1}&2&1&2\\ 0&\boxed{2}&-2&6\\ 0&0&\boxed{5}&-10\\ \end{bmatrix}\tag{4} [A,b]= 1302841112122 r21,r31 1002241−21262 r32 1002201−2526−10 (4) 上面的 r 21 r21 r21指的是,利用行变换 r r r消去2行1列的元素。方框内的元素称之为主元(pivot),主元不能为零(因为如果主元为零的话,无论你如何倍乘都无法继续消元),如果主元为零,消元是否可以继续?
答案是肯定的,方法是行交换(row exchange)。考虑下面例子: { 2 a + b = 0 4 a + 2 b + c = 5 2 a − b + c = 4 \begin{cases} \begin{aligned} 2a+b=0\\ 4a+2b+c=5\\ 2a-b+c=4\\ \end{aligned} \end{cases} ⎩ ⎨ ⎧2a+b=04a+2b+c=52a−b+c=4 [ A , b ] = [ 2 1 0 0 4 2 1 5 2 − 1 1 4 ] → r 21 , r 31 [ 2 1 0 0 0 0 1 5 0 − 2 1 4 ] [A,b]=\begin{bmatrix} 2&1&0&0\\ 4&2&1&5\\ 2&-1&1&4\\ \end{bmatrix} \xrightarrow{r21,r31} \begin{bmatrix} 2&1&0&0\\ 0&\boxed{0}&1&5\\ 0&-2&1&4\\ \end{bmatrix} [A,b]= 24212−1011054 r21,r31 20010−2011054 下一步是要消去位于 ( 3 , 2 ) (3,2) (3,2)的系数,主元的数值是零,无论我们如何倍乘基准行,都不能消去位于 ( 3 , 2 ) (3,2) (3,2)的系数。我们知道移动方程书写顺序并不会改变方程的解,所以行交换是有效的。 [ A , b ] = [ 2 1 0 0 0 0 1 5 0 − 2 1 4 ] → 交换行 2 与行 3 [ 2 1 0 0 0 − 2 1 4 0 0 1 5 ] [A,b]= \begin{bmatrix} 2&1&0&0\\ 0&\boxed{0}&1&5\\ 0&-2&1&4 \end{bmatrix} \xrightarrow{交换行2与行3} \begin{bmatrix} 2&1&0&0\\ 0&\boxed{-2}&1&4\\ 0&0&1&5 \end{bmatrix} [A,b]= 20010−2011054 交换行2与行3 2001−20011045 这个交换使得消元具有统一的形式,考虑系数矩阵 A A A: A = [ 2 1 0 0 − 2 1 0 0 1 ] A= \begin{bmatrix} 2&1&0\\ 0&-2&1\\ 0&0&1\\ \end{bmatrix} A= 2001−20011 三个主元将系数矩阵 A A A划分为有全零组三角和不全为零组。因为不全为零三角位于系数矩阵的右上角,所以 A A A也叫做(左)上三角(Upper triangle )矩阵,记作 U U U,原方程 A X = b AX=b AX=b变成了 U X = b ′ UX=b' UX=b′。
四、矩阵乘法与消元矩阵乘法一般指的是矩阵间的乘法。我们将从矩阵乘法的角度来考虑上述消元过程。
4.1 向量的线性组合解析几何中,向量的坐标表示是这样的: a = ( x 1 , x 2 , x 3 ) \boldsymbol{a}=({x1,x2,x3}) a=(x1,x2,x3),向量就是向量,矩阵就是矩阵,向量没有行和列,只有维数概念。向量有数乘运算: a = ( a 1 , a 2 , a 3 ) λ 1 a = ( λ 1 a 1 , λ 1 a 2 , λ 1 a 3 ) b = ( b 1 , b 2 , b 3 ) λ 2 b = ( λ 2 b 1 , λ 2 b 2 , λ 2 b 3 ) c = ( c 1 , c 2 , c 3 ) λ 3 c = ( λ 3 c 1 , λ 3 c 2 , λ 3 c 3 ) r = λ 1 a + λ 2 b + λ 3 c = ( λ 1 a 1 + λ 2 b 1 + λ 3 c 1 , λ 1 a 2 + λ 2 b 2 + λ 3 c 2 , λ 1 a 3 + λ 2 b 3 + λ 3 c 3 ) \begin{aligned} &\boldsymbol{a}=(a_1,a_2,a_3)\quad \lambda_1\boldsymbol{a}=(\lambda_1a_1,\lambda_1a_2,\lambda_1a_3)\\ &\boldsymbol{b}=(b_1,b_2,b_3)\quad \lambda_2\boldsymbol{b}=(\lambda_2b_1,\lambda_2b_2,\lambda_2b_3)\\ &\boldsymbol{c}=(c_1,c_2,c_3)\quad \lambda_3\boldsymbol{c}=(\lambda_3c_1,\lambda_3c_2,\lambda_3c_3)\\ \end{aligned}\\ \boldsymbol{r}= \lambda_1\boldsymbol{a}+ \lambda_2\boldsymbol{b}+ \lambda_3\boldsymbol{c} =(\lambda_1a_1+\lambda_2b_1+\lambda_3c_1,\lambda_1a_2+\lambda_2b_2+\lambda_3c_2,\lambda_1a_3+\lambda_2b_3+\lambda_3c_3) a=(a1,a2,a3)λ1a=(λ1a1,λ1a2,λ1a3)b=(b1,b2,b3)λ2b=(λ2b1,λ2b2,λ2b3)c=(c1,c2,c3)λ3c=(λ3c1,λ3c2,λ3c3)r=λ1a+λ2b+λ3c=(λ1a1+λ2b1+λ3c1,λ1a2+λ2b2+λ3c2,λ1a3+λ2b3+λ3c3)我们知道, r = λ 1 a + λ 2 b + λ 3 c \boldsymbol{r}=\lambda_1\boldsymbol{a}+ \lambda_2\boldsymbol{b}+ \lambda_3\boldsymbol{c} r=λ1a+λ2b+λ3c的结果仍然是一个向量。 λ 1 , λ 2 , λ 3 \lambda_1,\lambda_2,\lambda_3 λ1,λ2,λ3被看成向量组的 a , b , c \boldsymbol{a},\boldsymbol{b},\boldsymbol{c} a,b,c的组合系数。
4.2 向量角度理解矩阵乘法无论是矩阵 × \times ×列矩阵还是行矩阵 × \times ×矩阵,行、列矩阵都可理解为组合系数,矩阵则可以理解为多个向量。乘法的结果,可以看成是结果向量的坐标。
- 列矩阵 矩阵 × \times ×列矩阵,等效于以列矩阵元素组合矩阵列向量。
- 行矩阵 行矩阵 × \times ×矩阵,等效于以行矩阵元素组合矩阵行向量。
简单来说,就是看成向量的矩阵就是没看成向量矩阵的组合系数。
4.3 消元矩阵利用4.2中的思想,我们用矩阵乘法来表达消元过程。
方程(4)的过程 r 21 r21 r21,我们做了消元处理行系数: [ 1 2 1 2 3 8 1 12 0 4 1 2 ] → r 21 [ 1 2 1 2 0 2 − 2 6 0 4 1 2 ] \begin{bmatrix} 1&2&1&2\\ 3&8&1&12\\ 0&4&1&2\\ \end{bmatrix} \xrightarrow{r21} \begin{bmatrix} 1&2&1&2\\ 0&2&-2&6\\ 0&4&1&2\\ \end{bmatrix} 1302841112122 r21 1002241−21262
方程组的消元如何用矩阵来表达?答:左乘或者右乘一个矩阵。这矩阵的数值上等于相同的单位阵做一样的运算[1]。 矩阵应该与什么矩阵相乘得到右边的矩阵?是左乘还是右乘?
因为整个消元过程是通过系数矩阵行形式进行的,因此应该是左乘一个行矩阵,行矩阵的每一行是待消元矩阵的行线性组合。
逐行消元,利用的是消去行与基准行的和完成的。一个组合系数与矩阵的线性组合可以形成一个向量,这里我们需要找到3组系数组合依次形成右侧矩阵。结果向量 [ 1 2 1 2 ] \begin{bmatrix}1&2 &1& 2\end{bmatrix} [1212],左侧取第一个就行了,第一个行矩阵应该为 [ 1 0 0 ] \begin{bmatrix}1&0 &0\end{bmatrix} [100];最后一行,没有发生改变,因此只取这一行即可,即: [ 0 0 1 ] \begin{bmatrix}0&0 &1\end{bmatrix} [001],中间一行,是涉及到当前行和基准行的组合,取-3倍的第一行+当前行即可,即: [ − 3 1 0 ] \begin{bmatrix}-3&1 &0\end{bmatrix} [−310],组合成矩阵为: E 21 = [ 1 0 0 − 3 1 0 0 0 1 ] E_{21}= \begin{bmatrix} 1&0 &0\\ -3&1&0\\ 0&0&1 \end{bmatrix} E21= 1−30010001 这里的 E E E理解为Elimination消元或者Elementary初等矩阵。我们一共需要进行3次左乘消元矩阵的操作。 E 32 ( E 31 ( E 21 A ) ) = U (5) E_{32}(E_{31}(E_{21}A))=U\tag{5} E32(E31(E21A))=U(5) 因为矩阵具有结合律,可以令 E = E 32 E 31 E 21 E=E_{32}E_{31}E_{21} E=E32E31E21,(5)可以写成: E A = U (6) EA=U\tag{6} EA=U(6) 考虑矩阵交换情况。思考,如果一个矩阵 [ a b c d ] \begin{bmatrix} a&b\\c&d \end{bmatrix} [acbd] 需要一个什么矩阵与之相乘可以完成上下行交换呢? [ c d a b ] \begin{bmatrix} c&d\\a&b \end{bmatrix} [cadb] 根据前面的知识,容易有: [ 0 1 1 0 ] \begin{bmatrix} 0&1\\1&0 \end{bmatrix} [0110] 同理有列互换: [ a b c d ] [ 0 1 1 0 ] = [ b a d c ] \begin{bmatrix} a&b\\c&d \end{bmatrix}\begin{bmatrix} 0&1\\1&0 \end{bmatrix}= \begin{bmatrix} b&a\\d&c \end{bmatrix} [acbd][0110]=[bdac]
五、小结从三元一次方程出发,得出了求解的通用步骤;从矩阵的角度理解了消元的过程,一种是行倍乘运算,另一种是行交换。在本节里,所有的矩阵都是"好"矩阵,即所有的系数矩阵 A A A经过行变换都能变成上三角矩阵 U U U。其次提到了一个重要的思想,以向量的形式理解矩阵乘法。“行 × \times ×列”的行在左边,所有行变换都是“左”乘一个矩阵;列变换在右边,故列变换都是“右乘”一个矩阵;事实上行变换还包括当遇到主元为零的行交换,左 P P P(Permutation)。在最后总结以下整个矩阵消元的过程: E A = U EA=U EA=U
思考:消元过程 A A A矩阵通过左乘行变换矩阵 E E E完成了系数矩阵到上三角行列式 U U U的转换,如果我们需要将 U U U矩阵变回 A A A应该乘以什么矩阵?答:逆矩阵
[1] 没有进行证明,简单的试乘可以知道。如下: [ a b c d ] \begin{bmatrix} a&b\\c&d \end{bmatrix} [acbd] 根据矩阵乘法定义,所乘的矩阵若在左边,矩阵必须是列数等于2;所乘矩阵若在右边,矩阵的行数必须等于2。
我们要得到矩阵: [ a b 0 d − c d b ] \begin{bmatrix} a&b\\ 0&d-\frac{c}{d}b \end{bmatrix} [a0bd−dcb] 假如是在矩阵的左边,那么这个矩阵可以是: [ 1 0 − c a 1 ] \begin{bmatrix} 1&0\\ -\frac{c}{a}&1 \end{bmatrix} [1−ac01] 然而,在右边要想实现这样的矩阵却不能取得,说明行变换必须是左乘以一个单位阵的变形。