线性方程组?
线性方程:
a
1
x
1
+
a
2
x
2
+
a
3
x
3
+
⋯
+
a
n
x
n
=
b
a_1x_1+a_2x_2+a_3x_3+\cdots+a_nx_n = b
a1x1+a2x2+a3x3+⋯+anxn=b
其中的x不能是其他任何形式,如幂函数和指数函数或者带根号,都不行
线性方程组:
{
1
×
x
1
−
2
×
x
2
+
1
×
x
3
=
0
0
×
x
1
+
1
×
x
2
−
4
×
x
3
=
4
0
×
x
1
+
0
×
x
2
−
1
×
x
3
=
3
\begin{cases} 1\times x_1 &- \quad 2\times x_2 &+ \quad 1\times x_3 &= 0\\ 0 \times x_1 &+ \quad 1\times x_2 &- \quad 4\times x_3 &=4\\ 0\times x_1 &+ \quad 0\times x_2 &- \quad 1\times x_3 &=3 \end{cases}
⎩
⎨
⎧1×x10×x10×x1−2×x2+1×x2+0×x2+1×x3−4×x3−1×x3=0=4=3
为了让他们能够排版整齐===》发展为矩阵,用这种格式
- 若有解 : 线性相关
- 若无解 :线性无关
发展为系数矩阵:
[
1
−
2
1
0
1
−
4
0
0
1
]
\begin{bmatrix} 1&-2&1\\ 0&1&-4\\ 0&0&1 \end{bmatrix}
100−2101−41
发展为增广矩阵:
[
1
−
2
1
0
0
1
−
4
4
0
0
1
3
]
\begin{bmatrix} 1&-2&1&0\\ 0&1&-4&4\\ 0&0&1&3 \end{bmatrix}
100−2101−41043
比系数矩阵多了一列,即方程的右边常数
如何求解?
基本高斯消元法(顺序高斯消元法)
可以这么理解:
第一行是x1,要让第一行的第一列和第四列有值,其他为0
第二行是x2,要让第二行的第二列和第四列有值,其他为0
第三行是x3,要让第三行的第三列和第四列有值,其他为0
第四列就是代表现在这个xn的值。
我们将xn称之为主元,即完成高斯消元法之后的非零元素
我们将主元所在的列称之为主元列
关于高斯消元法的详细教程,位于
呈阶梯状分布
如下,下三角已经完成了,高斯消元法已经完成
[
1
−
2
1
0
0
1
−
4
4
0
0
1
3
]
\begin{bmatrix} 1&-2&1&0\\ 0&1&-4&4\\ 0&0&1&3 \end{bmatrix}
100−2101−41043
但是它的上三角还未完成,以下是解决方案:
反向操作(回代简化):
-
从第 3 行回代,将非零值简化为对角线上的单位矩阵形式。
-
消除第 2 行第 3 列:
第 2 行变为:
Row 2 = Row 2 − ( − 4 ) ⋅ Row 3 \text{Row}_2 = \text{Row}_2 - (-4) \cdot \text{Row}_3 Row2=Row2−(−4)⋅Row3
即:
[ 0 1 0 16 ] \begin{bmatrix} 0 & 1 & 0 & 16 \end{bmatrix} [01016] -
消除第 1 行第 3 列:
第 1 行变为:
Row 1 = Row 1 − Row 3 \text{Row}_1 = \text{Row}_1 - \text{Row}_3 Row1=Row1−Row3
即:
[ 1 − 2 0 − 3 ] \begin{bmatrix} 1 & -2 & 0 & -3 \end{bmatrix} [1−20−3] -
消除第 1 行第 2 列:
第 1 行变为:
Row 1 = Row 1 + 2 ⋅ Row 2 \text{Row}_1 = \text{Row}_1 + 2 \cdot \text{Row}_2 Row1=Row1+2⋅Row2
即:
[ 1 0 0 29 ] \begin{bmatrix} 1 & 0 & 0 & 29 \end{bmatrix} [10029]
- 最终的行最简矩阵:
[ 1 0 0 − 3 0 1 0 16 0 0 1 3 ] \begin{bmatrix} 1 & 0 & 0 & -3 \\ 0 & 1 & 0 & 16 \\ 0 & 0 & 1 & 3 \end{bmatrix} 100010001−3163
回带,因为此时右下角的主元除了主元列外都为零,因而而已逐一向上回带,得出答案.
思想
- (倍加变换) 把某一行换成它本身与另一行的倍数的和
- (对换变换) 把两行对换
- (倍乘变换) 把某一行的所有元素乘以同一个非零数
列元高斯消元法
因为在计算机中,当矩阵变大,基本高斯消元法的精度就会变的很低,浮点数运算中因误差累积带来的精度问题。
注意,高斯消元法都是从第一列开始消的。即格式化第一列之后才到第二列,因而我们无须关注行的前后关系。
思想
- 在每一列中选择绝对值最大的数作为主元,然后再进行基本高斯消元法。
全主元消除法
思想
- 在所有非零元素中选择绝对值最大的数作为主元,然后进行列和行的替换(如到第一行第一列),接着在基本高斯消元法
列主元与全主元对比
特性 | 列主元消元法 | 全主元消元法 |
---|---|---|
主元选择范围 | 当前列 | 当前子矩阵 |
是否交换列 | 否 | 是 |
数值稳定性 | 高 | 更高 |
操作复杂度 | 较低 | 较高 |
应用场景 | 一般数值计算场景 | 病态矩阵、高精度场景 |
拓展高斯-约当消元法
初始矩阵
给定增广矩阵:
[
2
1
−
1
8
−
3
−
1
2
−
11
−
2
1
2
−
3
]
\begin{bmatrix} 2 & 1 & -1 & 8 \\ -3 & -1 & 2 & -11 \\ -2 & 1 & 2 & -3 \end{bmatrix}
2−3−21−11−1228−11−3
每一列的目标是:让主对角线上为 1
,并将主元所在列的其他元素化为 0
。
第 1 步:第 1 列的主元归一化
-
第 1 行的第 1 列是主元。为了让主元为
1
,我们将 第 1 行除以 2:
R 1 → R 1 2 R_1 \to \frac{R_1}{2} R1→2R1得到:
[ 1 0.5 − 0.5 4 − 3 − 1 2 − 11 − 2 1 2 − 3 ] \begin{bmatrix} 1 & 0.5 & -0.5 & 4 \\ -3 & -1 & 2 & -11 \\ -2 & 1 & 2 & -3 \end{bmatrix} 1−3−20.5−11−0.5224−11−3 -
用第 1 行消去第 2 行和第 3 行的第 1 列元素:
- 第 2 行: R 2 → R 2 + 3 ⋅ R 1 R_2 \to R_2 + 3 \cdot R_1 R2→R2+3⋅R1
- 第 3 行: R 3 → R 3 + 2 ⋅ R 1 R_3 \to R_3 + 2 \cdot R_1 R3→R3+2⋅R1
计算后:
[ 1 0.5 − 0.5 4 0 0.5 0.5 1 0 2 1 5 ] \begin{bmatrix} 1 & 0.5 & -0.5 & 4 \\ 0 & 0.5 & 0.5 & 1 \\ 0 & 2 & 1 & 5 \end{bmatrix} 1000.50.52−0.50.51415
第 2 步:第 2 列的主元归一化
-
第 2 行的第 2 列是主元。为了让主元为
1
,我们将 第 2 行除以 0.5:
R 2 → R 2 0.5 R_2 \to \frac{R_2}{0.5} R2→0.5R2得到:
[ 1 0.5 − 0.5 4 0 1 1 2 0 2 1 5 ] \begin{bmatrix} 1 & 0.5 & -0.5 & 4 \\ 0 & 1 & 1 & 2 \\ 0 & 2 & 1 & 5 \end{bmatrix} 1000.512−0.511425 -
用第 2 行消去第 3 行和第 1 行的第 2 列元素:
- 第 1 行: R 1 → R 1 − 0.5 ⋅ R 2 R_1 \to R_1 - 0.5 \cdot R_2 R1→R1−0.5⋅R2
- 第 3 行: R 3 → R 3 − 2 ⋅ R 2 R_3 \to R_3 - 2 \cdot R_2 R3→R3−2⋅R2
计算后:
[ 1 0 − 1 3 0 1 1 2 0 0 − 1 1 ] \begin{bmatrix} 1 & 0 & -1 & 3 \\ 0 & 1 & 1 & 2 \\ 0 & 0 & -1 & 1 \end{bmatrix} 100010−11−1321
第 3 步:第 3 列的主元归一化
-
第 3 行的第 3 列是主元。为了让主元为
1
,我们将 第 3 行除以 -1:
R 3 → R 3 − 1 R_3 \to \frac{R_3}{-1} R3→−1R3得到:
[ 1 0 − 1 3 0 1 1 2 0 0 1 − 1 ] \begin{bmatrix} 1 & 0 & -1 & 3 \\ 0 & 1 & 1 & 2 \\ 0 & 0 & 1 & -1 \end{bmatrix} 100010−11132−1 -
用第 3 行消去第 1 行和第 2 行的第 3 列元素:
- 第 1 行: R 1 → R 1 + R 3 R_1 \to R_1 + R_3 R1→R1+R3
- 第 2 行: R 2 → R 2 − R 3 R_2 \to R_2 - R_3 R2→R2−R3
计算后:
[ 1 0 0 2 0 1 0 3 0 0 1 − 1 ] \begin{bmatrix} 1 & 0 & 0 & 2 \\ 0 & 1 & 0 & 3 \\ 0 & 0 & 1 & -1 \end{bmatrix} 10001000123−1
行最简形式和解
此时矩阵已经化为行最简形式:
[
1
0
0
2
0
1
0
3
0
0
1
−
1
]
\begin{bmatrix} 1 & 0 & 0 & 2 \\ 0 & 1 & 0 & 3 \\ 0 & 0 & 1 & -1 \end{bmatrix}
10001000123−1
对应的解为:
x
=
2
,
y
=
3
,
z
=
−
1
x = 2, \ y = 3, \ z = -1
x=2, y=3, z=−1
克拉默法则
克拉默法则(Cramer’s Rule)是一种利用行列式来解线性方程组的方法,适用于系数矩阵为方阵且行列式不为零的情况。
基本思想
对于一个 n × n n \times n n×n 的线性方程组:
A ⋅ X = B A \cdot X = B A⋅X=B
其中:
-
A A A 是系数矩阵:
A = [ a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋮ ⋮ ⋱ ⋮ a n 1 a n 2 ⋯ a n n ] A = \begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n1} & a_{n2} & \cdots & a_{nn} \end{bmatrix} A= a11a21⋮an1a12a22⋮an2⋯⋯⋱⋯a1na2n⋮ann -
X X X 是未知向量:
X = [ x 1 x 2 ⋮ x n ] X = \begin{bmatrix} x_1 \\ x_2 \\ \vdots \\ x_n \end{bmatrix} X= x1x2⋮xn -
B B B 是常数列向量:
B = [ b 1 b 2 ⋮ b n ] B = \begin{bmatrix} b_1 \\ b_2 \\ \vdots \\ b_n \end{bmatrix} B= b1b2⋮bn
克拉默法则的核心思想是:
- 解 x 1 , x 2 , … , x n x_1, x_2, \dots, x_n x1,x2,…,xn 的值时,将系数矩阵 A A A 的对应列替换为常数向量 B B B,然后通过行列式计算解。
公式如下:
x i = det ( A i ) det ( A ) , i = 1 , 2 , … , n x_i = \frac{\det(A_i)}{\det(A)}, \quad i = 1, 2, \dots, n xi=det(A)det(Ai),i=1,2,…,n
其中:
- det ( A ) \det(A) det(A) 是系数矩阵 A A A 的行列式。
- det ( A i ) \det(A_i) det(Ai) 是将 A A A 的第 i i i 列替换为常数向量 B B B 后的新矩阵的行列式。
公式展开
1. 行列式公式
标准公式:
det
(
A
)
=
∣
a
11
a
12
⋯
a
1
n
a
21
a
22
⋯
a
2
n
⋮
⋮
⋱
⋮
a
n
1
a
n
2
⋯
a
n
n
∣
\det(A) = \begin{vmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n1} & a_{n2} & \cdots & a_{nn} \end{vmatrix}
det(A)=
a11a21⋮an1a12a22⋮an2⋯⋯⋱⋯a1na2n⋮ann
2. 替换后的矩阵
若求
x
i
x_i
xi,将
A
A
A 的第
i
i
i 列替换为常数列向量
B
B
B:
A
i
=
[
a
11
a
12
⋯
b
1
⋯
a
1
n
a
21
a
22
⋯
b
2
⋯
a
2
n
⋮
⋮
⋱
⋮
⋱
⋮
a
n
1
a
n
2
⋯
b
n
⋯
a
n
n
]
A_i = \begin{bmatrix} a_{11} & a_{12} & \cdots & b_1 & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & b_2 & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots & \ddots & \vdots \\ a_{n1} & a_{n2} & \cdots & b_n & \cdots & a_{nn} \end{bmatrix}
Ai=
a11a21⋮an1a12a22⋮an2⋯⋯⋱⋯b1b2⋮bn⋯⋯⋱⋯a1na2n⋮ann
克拉默法则的适用条件
- 系数矩阵 A A A 必须是 方阵( n × n n \times n n×n 矩阵)。
- 系数矩阵 A A A 的行列式 det ( A ) ≠ 0 \det(A) \neq 0 det(A)=0,即 A A A 是非奇异矩阵。
如果不满足这些条件,则克拉默法则不适用,线性方程组可能无解或有无穷多个解。
克拉默法则的计算过程示例
示例:二元方程组
解以下方程组:
2
x
+
y
=
5
x
−
y
=
1
2x + y = 5 \\ x - y = 1
2x+y=5x−y=1
步骤 1:写出系数矩阵和常数向量
A
=
[
2
1
1
−
1
]
,
B
=
[
5
1
]
A = \begin{bmatrix} 2 & 1 \\ 1 & -1 \end{bmatrix}, \quad B = \begin{bmatrix} 5 \\ 1 \end{bmatrix}
A=[211−1],B=[51]
步骤 2:计算
det
(
A
)
\det(A)
det(A)
det
(
A
)
=
∣
2
1
1
−
1
∣
=
(
2
)
(
−
1
)
−
(
1
)
(
1
)
=
−
2
−
1
=
−
3
\det(A) = \begin{vmatrix} 2 & 1 \\ 1 & -1 \end{vmatrix} = (2)(-1) - (1)(1) = -2 - 1 = -3
det(A)=
211−1
=(2)(−1)−(1)(1)=−2−1=−3
步骤 3:构造替换矩阵
-
替换第 1 列求 x 1 x_1 x1 的矩阵:
A 1 = [ 5 1 1 − 1 ] A_1 = \begin{bmatrix} 5 & 1 \\ 1 & -1 \end{bmatrix} A1=[511−1]
行列式为:
det ( A 1 ) = ∣ 5 1 1 − 1 ∣ = ( 5 ) ( − 1 ) − ( 1 ) ( 1 ) = − 5 − 1 = − 6 \det(A_1) = \begin{vmatrix} 5 & 1 \\ 1 & -1 \end{vmatrix} = (5)(-1) - (1)(1) = -5 - 1 = -6 det(A1)= 511−1 =(5)(−1)−(1)(1)=−5−1=−6 -
替换第 2 列求 x 2 x_2 x2 的矩阵:
A 2 = [ 2 5 1 1 ] A_2 = \begin{bmatrix} 2 & 5 \\ 1 & 1 \end{bmatrix} A2=[2151]
行列式为:
det ( A 2 ) = ∣ 2 5 1 1 ∣ = ( 2 ) ( 1 ) − ( 5 ) ( 1 ) = 2 − 5 = − 3 \det(A_2) = \begin{vmatrix} 2 & 5 \\ 1 & 1 \end{vmatrix} = (2)(1) - (5)(1) = 2 - 5 = -3 det(A2)= 2151 =(2)(1)−(5)(1)=2−5=−3
步骤 4:求解
x
1
=
det
(
A
1
)
det
(
A
)
=
−
6
−
3
=
2
,
x
2
=
det
(
A
2
)
det
(
A
)
=
−
3
−
3
=
1
x_1 = \frac{\det(A_1)}{\det(A)} = \frac{-6}{-3} = 2, \quad x_2 = \frac{\det(A_2)}{\det(A)} = \frac{-3}{-3} = 1
x1=det(A)det(A1)=−3−6=2,x2=det(A)det(A2)=−3−3=1
克拉默法则的优缺点
优点
- 概念直观:克拉默法则直接利用行列式来计算变量,解的表达式明确。
- 适合手工计算:对于 2x2 或 3x3 的小型方程组,用克拉默法则求解较快且直观。
缺点
- 不适合大规模矩阵:行列式的计算复杂度较高,克拉默法则在 n ≥ 4 n \geq 4 n≥4 时效率低。
- 需满足特定条件:只有方阵且行列式非零时才能使用,无法处理病态矩阵或奇异矩阵。
- 对数值误差敏感:特别是在浮点数计算中,行列式的计算可能带来较大误差。
总结
- 克拉默法则适用于 小型线性方程组,特别是 n = 2 n = 2 n=2 或 n = 3 n = 3 n=3 时,可以快速求解。
- 方法基于行列式计算解,逻辑简单且公式直观。
- 对于更复杂的系统(大规模矩阵或不满足条件的方程组),推荐使用高斯消元法或矩阵分解方法。