【回顾】 线性方程组的一般形式:
a
11
x
1
+
.
.
.
+
a
1
n
x
n
=
b
1
.
.
.
a
m
1
x
1
+
.
.
.
+
a
m
n
x
n
=
b
m
a_{11}x_1+...+a_{1n}x_n=b_1\\ ...\\ a_{m1}x_1+...+a_{mn}x_{n}=b_{m}
a11x1+...+a1nxn=b1...am1x1+...+amnxn=bm
其中的
a
i
j
,
b
i
a_{ij},b_i
aij,bi是已知常数;
x
j
x_j
xj是未知数。后来,我们引入了向量和矩阵的概念,并得到了更简洁的线性方程组表示形式:
A
x
=
b
\bold{Ax=b}
Ax=b
在本小节中,我们将探讨如何求解线性方程组,并给出一种求逆矩阵的算法。
一、特解和通解
为了说明此概念,我们考虑一个线性方程组:
[
1
0
8
−
4
0
1
2
12
]
[
x
1
x
2
x
3
x
4
]
=
[
42
8
]
{\left[ \begin{array}{cccc} 1&0&8&-4\\ 0&1&2&12 \end{array} \right]} {\left[ \begin{array}{ccc} x_1\\ x_2\\ x_3\\ x_4 \end{array} \right]} ={\left[ \begin{array}{ccc} 42\\8 \end{array} \right]}
[100182−412]⎣⎢⎢⎡x1x2x3x4⎦⎥⎥⎤=[428]
可以看出,这个线性方程组由两个等式和四个未知数构成。因此一个很直觉的事就是,这个线性方程组应该有无穷多个解。进一步观察,可以发现系数矩阵的前两列均仅有一个1和一个0。考察
b
\bold{b}
b的形式后,我们可以发现:
b
=
[
42
8
]
=
42
[
1
0
]
+
8
[
0
1
]
\bold{b}={\left[ \begin{array}{cccc} 42\\8 \end{array} \right]}=42 {\left[ \begin{array}{ccc} 1\\0 \end{array} \right]}+8 {\left[ \begin{array}{ccc} 0\\1 \end{array} \right]}
b=[428]=42[10]+8[01]
因此,我们可以快速地构建一个解:
[
42
,
8
,
0
,
0
]
T
[42,8,0,0]^T
[42,8,0,0]T,这个解就叫做特解。然而,这并不是这个线性方程组的唯一的解。为了获取所有的解,我们需要更加充分地考虑系数矩阵,而不是以一种简单、直觉的方式。而寻求全部解的一个非常直觉的想法就是:在特解的基础上加
0
\bold{0}
0,这样就可以使得线性方程组保持成立。按照这个思路求出的所有解,我们称作通解。
下面,我们开始考虑系数矩阵的第三列,将其用第一列和第二列的表示为:
[
8
2
]
=
8
[
1
0
]
+
2
[
0
1
]
{\left[ \begin{array}{cccc} 8\\2 \end{array} \right]}=8 {\left[ \begin{array}{ccc} 1\\0 \end{array} \right]}+2 {\left[ \begin{array}{ccc} 0\\1 \end{array} \right]}
[82]=8[10]+2[01]
据此,我们可以开始用系数矩阵的每一列来构建
0
\bold{0}
0,即:
[
0
0
]
=
8
[
1
0
]
+
2
[
0
1
]
−
1
[
8
2
]
+
0
[
−
4
12
]
{\left[ \begin{array}{cccc} 0\\0 \end{array} \right]}=8 {\left[ \begin{array}{ccc} 1\\0 \end{array} \right]}+2 {\left[ \begin{array}{ccc} 0\\1 \end{array} \right]}-1 {\left[ \begin{array}{ccc} 8\\2 \end{array} \right]}+0 {\left[ \begin{array}{ccc} -4\\12\end{array} \right]}
[00]=8[10]+2[01]−1[82]+0[−412]
而任何实数乘以
0
\bold0
0还是
0
\bold0
0。据此我们可以进一步地扩展解的范围(注意:虽然现在已经包含无穷多个解,但仍不是通解。因为还没有考虑到第四列系数矩阵对解的影响):
x
=
[
42
8
0
0
]
+
λ
1
[
8
2
−
1
0
]
,
λ
1
∈
R
\bold{x}= {\left[ \begin{array}{cccc} 42\\8\\0\\0 \end{array} \right]} +\lambda_1 {\left[ \begin{array}{ccc} 8\\2\\-1\\0 \end{array} \right]} ,\lambda_1\in\mathbb{R}
x=⎣⎢⎢⎡42800⎦⎥⎥⎤+λ1⎣⎢⎢⎡82−10⎦⎥⎥⎤,λ1∈R
同样地,我们考虑系数矩阵的第四列,其可以用第一列和第二列表示为:
[
−
4
12
]
=
−
4
[
1
0
]
+
12
[
0
1
]
{\left[ \begin{array}{cccc} -4\\12 \end{array} \right]}=-4 {\left[ \begin{array}{ccc} 1\\0 \end{array} \right]}+12 {\left[ \begin{array}{ccc} 0\\1 \end{array} \right]}
[−412]=−4[10]+12[01]
然后,利用上式构建
0
\bold0
0:
[
0
0
]
=
−
4
[
1
0
]
+
12
[
0
1
]
+
0
[
8
2
]
−
1
[
−
4
12
]
{\left[ \begin{array}{cccc} 0\\0 \end{array} \right]}=-4 {\left[ \begin{array}{ccc} 1\\0 \end{array} \right]}+12 {\left[ \begin{array}{ccc} 0\\1 \end{array} \right]}+0 {\left[ \begin{array}{ccc} 8\\2 \end{array} \right]}-1 {\left[ \begin{array}{ccc} -4\\12\end{array} \right]}
[00]=−4[10]+12[01]+0[82]−1[−412]
最后,再根据上式扩展线性方程组的解,就可以得到通解,如下:
x
=
[
42
8
0
0
]
+
λ
1
[
8
2
−
1
0
]
+
λ
2
[
−
4
12
0
−
1
]
,
λ
1
,
λ
2
∈
R
\bold{x}= {\left[ \begin{array}{cccc} 42\\8\\0\\0 \end{array} \right]} +\lambda_1 {\left[ \begin{array}{ccc} 8\\2\\-1\\0 \end{array} \right]} +\lambda_2 {\left[ \begin{array}{ccc} -4\\12\\0\\-1 \end{array} \right]} ,\lambda_1,\lambda_2\in\mathbb{R}
x=⎣⎢⎢⎡42800⎦⎥⎥⎤+λ1⎣⎢⎢⎡82−10⎦⎥⎥⎤+λ2⎣⎢⎢⎡−4120−1⎦⎥⎥⎤,λ1,λ2∈R
注意:这里得到了通解的原因是已经完全考虑了整个系数矩阵对解的影响。
现在,我们归纳整理一下解线性方程组的几个步骤:
- 找到 A x = b \bold{Ax=b} Ax=b的一组特解;
- 找到 A x = 0 \bold{Ax=0} Ax=0的所有可能解;
- 将上述两步寻得的解结合起来,就得到了线性方程组的通解。
注意:通解和特解都不是唯一的。
我们可以发现,解这个线性方程组是比较简单的。这是因为,系数矩阵的形式非常简单。而事实上,大多数的系数矩阵并不是如此简单,甚至可以说是非常复杂。因此,我们需要一种算法来将系数矩阵变换为简单形式,即:高斯消元法,而高斯消元法的关键是初等变换。因此,我们将先探讨关于初等变换的知识。
二、初等变换
解线性方程组的关键点就是初等变换。初等变换能够保持解集不变,但将线性方程组转换为更简单的形式,其包含:
- 【变换一】将线性方程组中任意两个等式的位置互换;
- 【变换二】用任意常数 λ ∈ R \lambda\in\mathbb{R} λ∈R同时乘以任意等式的两侧;
- 【变换三】将任意两个等式相加,并替换掉其中两个等式中的一个。
我们还是以一个线性方程组为例来进一步阐述:
−
2
x
1
+
4
x
2
−
2
x
3
−
x
4
+
4
x
5
=
−
3
4
x
1
−
8
x
2
+
3
x
3
−
3
x
4
+
x
5
=
2
x
1
−
2
x
2
+
x
3
−
x
4
+
x
5
=
0
x
1
−
2
x
2
−
3
x
4
+
4
x
5
=
a
-2x_1+4x_2-2x_3-x_4+4x_5=-3\\ 4x_1-8x_2+3x_3-3x_4+x_5=2\\ x_1-2x_2+x_3-x_4+x_5=0\\ x_1-2x_2-3x_4+4x_5=a
−2x1+4x2−2x3−x4+4x5=−34x1−8x2+3x3−3x4+x5=2x1−2x2+x3−x4+x5=0x1−2x2−3x4+4x5=a
【定义1.3.1-增广矩阵】 我们将线性方程组
A
x
=
b
\bold{Ax=b}
Ax=b中的系数矩阵
A
\bold{A}
A和偏置矩阵
b
\bold{b}
b合并为一个矩阵
[
A
∣
b
]
\bold{[A|b]}
[A∣b],这个矩阵就叫该线性方程组的增广矩阵。
根据定义,我们可以写出上述线性方程组的增广矩阵为:
[
−
2
4
−
2
−
1
4
∣
−
3
4
−
8
3
−
3
1
∣
2
1
−
2
1
−
1
1
∣
0
1
−
2
0
−
3
4
∣
a
]
{\left[ \begin{array}{cccc} -2&4&-2&-1&4&|&-3\\ 4&-8&3&-3&1&|&2\\ 1&-2&1&-1&1&|&0\\ 1&-2&0&-3&4&|&a \end{array} \right]}
⎣⎢⎢⎡−24114−8−2−2−2310−1−3−1−34114∣∣∣∣−320a⎦⎥⎥⎤
现在我们利用三条初等变换来化简该矩阵。为了方便说明,我们用
R
1
,
R
2
,
R
3
,
R
4
R_1,R_2,R_3,R_4
R1,R2,R3,R4来表示增广矩阵的四行。
【Step1】将
R
1
R_1
R1和
R
3
R_3
R3互换位置(变换一)
[
1
−
2
1
−
1
1
∣
0
4
−
8
3
−
3
1
∣
2
−
2
4
−
2
−
1
4
∣
−
3
1
−
2
0
−
3
4
∣
a
]
{\left[ \begin{array}{cccc} 1&-2&1&-1&1&|&0\\ 4&-8&3&-3&1&|&2\\ -2&4&-2&-1&4&|&-3\\ 1&-2&0&-3&4&|&a \end{array} \right]}
⎣⎢⎢⎡14−21−2−84−213−20−1−3−1−31144∣∣∣∣02−3a⎦⎥⎥⎤
【Step2】将
−
4
R
1
,
2
R
1
,
−
R
1
-4R_1,2R_1,-R_1
−4R1,2R1,−R1分别加到
R
2
,
R
3
,
R
4
R_2,R_3,R_4
R2,R3,R4上去(变换二、三)
[
1
−
2
1
−
1
1
∣
0
0
0
−
1
1
−
3
∣
2
0
0
0
−
3
6
∣
−
3
0
0
−
1
−
2
3
∣
a
]
{\left[ \begin{array}{cccc} 1&-2&1&-1&1&|&0\\ 0&0&-1&1&-3&|&2\\ 0&0&0&-3&6&|&-3\\ 0&0&-1&-2&3&|&a \end{array} \right]}
⎣⎢⎢⎡1000−20001−10−1−11−3−21−363∣∣∣∣02−3a⎦⎥⎥⎤
【Step3】将
−
R
2
−
R
3
-R_2-R_3
−R2−R3加到
R
4
R_4
R4上去(变换二、三)
[
1
−
2
1
−
1
1
∣
0
0
0
−
1
1
−
3
∣
2
0
0
0
−
3
6
∣
−
3
0
0
0
0
0
∣
a
+
1
]
{\left[ \begin{array}{cccc} 1&-2&1&-1&1&|&0\\ 0&0&-1&1&-3&|&2\\ 0&0&0&-3&6&|&-3\\ 0&0&0&0&0&|&a+1 \end{array} \right]}
⎣⎢⎢⎡1000−20001−100−11−301−360∣∣∣∣02−3a+1⎦⎥⎥⎤
【Step4】将
R
2
R_2
R2整体乘以-1,将
R
3
R_3
R3整体乘以-1/3(变换二)
[
1
−
2
1
−
1
1
∣
0
0
0
1
−
1
3
∣
−
2
0
0
0
1
−
2
∣
1
0
0
0
0
0
∣
a
+
1
]
{\left[ \begin{array}{cccc} 1&-2&1&-1&1&|&0\\ 0&0&1&-1&3&|&-2\\ 0&0&0&1&-2&|&1\\ 0&0&0&0&0&|&a+1 \end{array} \right]}
⎣⎢⎢⎡1000−20001100−1−11013−20∣∣∣∣0−21a+1⎦⎥⎥⎤