1. 克莱姆法则原理
对于 n 个未知数的线性方程组:
{
a
11
x
1
+
a
12
x
2
+
⋯
+
a
1
n
x
n
=
b
1
a
21
x
1
+
a
22
x
2
+
⋯
+
a
2
n
x
n
=
b
2
⋮
a
n
1
x
1
+
a
n
2
x
2
+
⋯
+
a
n
n
x
n
=
b
n
\begin{cases} a_{11}x_1 + a_{12}x_2 + \cdots + a_{1n}x_n = b_1 \\ a_{21}x_1 + a_{22}x_2 + \cdots + a_{2n}x_n = b_2 \\ \vdots \\ a_{n1}x_1 + a_{n2}x_2 + \cdots + a_{nn}x_n = b_n \end{cases}
⎩
⎨
⎧a11x1+a12x2+⋯+a1nxn=b1a21x1+a22x2+⋯+a2nxn=b2⋮an1x1+an2x2+⋯+annxn=bn
如果系数行列式 D ≠ 0 D \neq 0 D=0,则方程组有唯一解:
x j = D j D ( j = 1 , 2 , ⋯ , n ) x_j = \frac{D_j}{D} \quad (j = 1,2,\cdots,n) xj=DDj(j=1,2,⋯,n)
其中:
- D D D 是系数行列式
- D j D_j Dj 是把 D D D 中第 j 列的元素用方程组右边的常数项替换后得到的行列式
2. 克莱姆法则为什么成立
让我用通俗易懂的方式来解释克莱姆法则成立的原理。
1. 从最简单的情况理解
先看二元方程组:
{
a
11
x
+
a
12
y
=
b
1
a
21
x
+
a
22
y
=
b
2
\begin{cases} a_{11}x + a_{12}y = b_1 \\ a_{21}x + a_{22}y = b_2 \end{cases}
{a11x+a12y=b1a21x+a22y=b2
2. 证明的步骤
1. 首先写出二元线性方程组:
{ a 11 x + a 12 y = b 1 ( 1 ) a 21 x + a 22 y = b 2 ( 2 ) \begin{cases} a_{11}x + a_{12}y = b_1 \quad (1)\\ a_{21}x + a_{22}y = b_2 \quad (2) \end{cases} {a11x+a12y=b1(1)a21x+a22y=b2(2)
2. 求解 y 的表达式
从方程(1)中,解出 y:
a
12
y
=
b
1
−
a
11
x
a_{12}y = b_1 - a_{11}x
a12y=b1−a11x
y
=
b
1
−
a
11
x
a
12
(
3
)
y = \frac{b_1 - a_{11}x}{a_{12}} \quad (3)
y=a12b1−a11x(3)
3. 代入方程(2)
将式(3)代入方程(2):
a
21
x
+
a
22
(
b
1
−
a
11
x
a
12
)
=
b
2
a_{21}x + a_{22}(\frac{b_1 - a_{11}x}{a_{12}}) = b_2
a21x+a22(a12b1−a11x)=b2
4. 整理等式
-
首先去分母,两边乘以 a 12 a_{12} a12:
a 21 a 12 x + a 22 ( b 1 − a 11 x ) = b 2 a 12 a_{21}a_{12}x + a_{22}(b_1 - a_{11}x) = b_2a_{12} a21a12x+a22(b1−a11x)=b2a12 -
展开括号:
a 21 a 12 x + a 22 b 1 − a 22 a 11 x = b 2 a 12 a_{21}a_{12}x + a_{22}b_1 - a_{22}a_{11}x = b_2a_{12} a21a12x+a22b1−a22a11x=b2a12 -
合并 x 项:
( a 21 a 12 − a 22 a 11 ) x = b 2 a 12 − a 22 b 1 (a_{21}a_{12} - a_{22}a_{11})x = b_2a_{12} - a_{22}b_1 (a21a12−a22a11)x=b2a12−a22b1 -
把 x 系数提出来:
− ( a 11 a 22 − a 12 a 21 ) x = − ( b 1 a 22 − a 12 b 2 ) -(a_{11}a_{22} - a_{12}a_{21})x = -(b_1a_{22} - a_{12}b_2) −(a11a22−a12a21)x=−(b1a22−a12b2)
5. 得到 x 的表达式
x = b 1 a 22 − a 12 b 2 a 11 a 22 − a 12 a 21 x = \frac{b_1a_{22} - a_{12}b_2}{a_{11}a_{22} - a_{12}a_{21}} x=a11a22−a12a21b1a22−a12b2
6. 观察分子分母的形式
-
分母 a 11 a 22 − a 12 a 21 a_{11}a_{22} - a_{12}a_{21} a11a22−a12a21 正是系数行列式 D D D:
D = ∣ a 11 a 12 a 21 a 22 ∣ D = \begin{vmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{vmatrix} D= a11a21a12a22 -
分子 b 1 a 22 − a 12 b 2 b_1a_{22} - a_{12}b_2 b1a22−a12b2 正是将第一列换成常数项后的行列式 D 1 D_1 D1:
D 1 = ∣ b 1 a 12 b 2 a 22 ∣ D_1 = \begin{vmatrix} b_1 & a_{12} \\ b_2 & a_{22} \end{vmatrix} D1= b1b2a12a22
7. 得到克莱姆法则的形式
因此,
x
=
D
1
D
x = \frac{D_1}{D}
x=DD1
同理可以证明:
y
=
D
2
D
y = \frac{D_2}{D}
y=DD2
这就完整证明了克莱姆法则在二元线性方程组中的成立。关键步骤是:
- 用消元法求解
- 发现最终结果的分子分母恰好是特定的行列式
- 从而得到克莱姆法则的表达式
这个过程可以推广到三元、四元等更高维的情况,原理是相同的。
为什么这个解是对的?
- 把这个 x 代回原方程组
- 第一个方程: a 11 x + a 12 y = b 1 a_{11}x + a_{12}y = b_1 a11x+a12y=b1 会自动得到满足
- 第二个方程: a 21 x + a 22 y = b 2 a_{21}x + a_{22}y = b_2 a21x+a22y=b2 也会自动满足
3. 本质理解
克莱姆法则成立的本质是:
5. 方程组可以写成矩阵形式:
A
X
=
B
AX = B
AX=B
6. 当
∣
A
∣
≠
0
|A| \neq 0
∣A∣=0 时,
X
=
A
−
1
B
X = A^{-1}B
X=A−1B
7. 用行列式表示这个过程,就得到了克莱姆法则
4. 直观解释
想象一个天平:
- 左边放系数项(砝码)
- 右边放常数项(要称的东西)
- 克莱姆法则就是用行列式这个"工具",帮我们找到平衡点
5. 为什么要求 D ≠ 0?
因为:
- D = 0 D = 0 D=0 意味着方程组的系数矩阵是奇异的
- 相当于天平的支点出问题了
- 这种情况下要么无解,要么有无穷多解
用一个具体的例子:
{
2
x
+
3
y
=
8
4
x
+
6
y
=
12
\begin{cases} 2x + 3y = 8 \\ 4x + 6y = 12 \end{cases}
{2x+3y=84x+6y=12
这里第二个方程是第一个方程的 2 倍, D = 0 D = 0 D=0,克莱姆法则不适用。
克莱姆法则成立的关键在于:
- 它把解方程转化为行列式计算
- 这种转化保持了方程组的基本性质
- 当系数行列式不为零时,这种转化是完全等价的
这就是克莱姆法则成立的基本原理。它不仅是一个计算工具,更反映了线性方程组的本质特征。
3. 三元线性方程组实例
例题
解下列方程组:
{
2
x
1
−
x
2
+
3
x
3
=
7
x
1
+
3
x
2
−
2
x
3
=
−
1
3
x
1
−
2
x
2
+
x
3
=
4
\begin{cases} 2x_1 - x_2 + 3x_3 = 7 \\ x_1 + 3x_2 - 2x_3 = -1 \\ 3x_1 - 2x_2 + x_3 = 4 \end{cases}
⎩
⎨
⎧2x1−x2+3x3=7x1+3x2−2x3=−13x1−2x2+x3=4
解法步骤
- 计算系数行列式 D
D = ∣ 2 − 1 3 1 3 − 2 3 − 2 1 ∣ D = \begin{vmatrix} 2 & -1 & 3 \\ 1 & 3 & -2 \\ 3 & -2 & 1 \end{vmatrix} D= 213−13−23−21
使用萨吕斯法则计算:
D
=
2
⋅
3
⋅
1
+
(
−
1
)
⋅
(
−
2
)
⋅
3
+
3
⋅
1
⋅
(
−
2
)
−
3
⋅
3
⋅
3
−
2
⋅
(
−
2
)
⋅
(
−
2
)
−
(
−
1
)
⋅
1
⋅
1
=
6
+
6
−
6
−
27
−
8
+
1
=
−
28
\begin{align} D &= 2 \cdot 3 \cdot 1 + (-1) \cdot (-2) \cdot 3 + 3 \cdot 1 \cdot (-2) \\ &- 3 \cdot 3 \cdot 3 - 2 \cdot (-2) \cdot (-2) - (-1) \cdot 1 \cdot 1 \\ &= 6 + 6 - 6 - 27 - 8 + 1 \\ &= -28 \end{align}
D=2⋅3⋅1+(−1)⋅(−2)⋅3+3⋅1⋅(−2)−3⋅3⋅3−2⋅(−2)⋅(−2)−(−1)⋅1⋅1=6+6−6−27−8+1=−28
- 计算 D 1 D_1 D1(用常数项替换第一列)
D 1 = ∣ 7 − 1 3 − 1 3 − 2 4 − 2 1 ∣ D_1 = \begin{vmatrix} 7 & -1 & 3 \\ -1 & 3 & -2 \\ 4 & -2 & 1 \end{vmatrix} D1= 7−14−13−23−21
计算得: D 1 = − 56 D_1 = -56 D1=−56
- 计算 D 2 D_2 D2(用常数项替换第二列)
D 2 = ∣ 2 7 3 1 − 1 − 2 3 4 1 ∣ D_2 = \begin{vmatrix} 2 & 7 & 3 \\ 1 & -1 & -2 \\ 3 & 4 & 1 \end{vmatrix} D2= 2137−143−21
计算得: D 2 = − 84 D_2 = -84 D2=−84
- 计算 D 3 D_3 D3(用常数项替换第三列)
D 3 = ∣ 2 − 1 7 1 3 − 1 3 − 2 4 ∣ D_3 = \begin{vmatrix} 2 & -1 & 7 \\ 1 & 3 & -1 \\ 3 & -2 & 4 \end{vmatrix} D3= 213−13−27−14
计算得: D 3 = 28 D_3 = 28 D3=28
- 求解
x 1 = D 1 D = − 56 − 28 = 2 x 2 = D 2 D = − 84 − 28 = 3 x 3 = D 3 D = 28 − 28 = − 1 \begin{align} x_1 &= \frac{D_1}{D} = \frac{-56}{-28} = 2 \\ x_2 &= \frac{D_2}{D} = \frac{-84}{-28} = 3 \\ x_3 &= \frac{D_3}{D} = \frac{28}{-28} = -1 \end{align} x1x2x3=DD1=−28−56=2=DD2=−28−84=3=DD3=−2828=−1
4. 克莱姆法则使用思路
1. 判断是否适用
首先判断方程组是否满足使用克莱姆法则的条件:
- 未知数个数 = 方程个数(n个方程n个未知数)
- 系数行列式D ≠ 0
2. 书写标准步骤
步骤1:写出系数行列式D
对于三元方程组:
{
2
x
−
y
+
3
z
=
4
x
+
2
y
−
z
=
1
3
x
−
y
+
z
=
2
\begin{cases} 2x - y + 3z = 4 \\ x + 2y - z = 1 \\ 3x - y + z = 2 \end{cases}
⎩
⎨
⎧2x−y+3z=4x+2y−z=13x−y+z=2
系数行列式为:
D
=
∣
2
−
1
3
1
2
−
1
3
−
1
1
∣
D = \begin{vmatrix} 2 & -1 & 3 \\ 1 & 2 & -1 \\ 3 & -1 & 1 \end{vmatrix}
D=
213−12−13−11
步骤2:写出替换列行列式
- D 1 D_1 D1:用方程组右边常数替换第1列
- D 2 D_2 D2:用方程组右边常数替换第2列
- D 3 D_3 D3:用方程组右边常数替换第3列
例如求
D
1
D_1
D1:
D
1
=
∣
4
−
1
3
1
2
−
1
2
−
1
1
∣
D_1 = \begin{vmatrix} 4 & -1 & 3 \\ 1 & 2 & -1 \\ 2 & -1 & 1 \end{vmatrix}
D1=
412−12−13−11
步骤3:计算各行列式
使用萨吕斯法则或其他方法计算每个行列式的值。
步骤4:求解
x = D 1 D , y = D 2 D , z = D 3 D x = \frac{D_1}{D}, \quad y = \frac{D_2}{D}, \quad z = \frac{D_3}{D} x=DD1,y=DD2,z=DD3
3. 实用技巧
-
选择合适的计算顺序
- 先计算系数行列式D
- 再依次计算 D 1 , D 2 , D 3 D_1, D_2, D_3 D1,D2,D3
- 最后一起求解x, y, z的值
-
简化计算的技巧
- 寻找系数中的0、1、-1等特殊数字
- 利用这些特殊数字所在的行或列展开
- 减少计算量
-
检验方法
a. 代入验证
将解x, y, z代回原方程验证
b. 数量级检查
看最终结果是否合理
4. 使用注意事项
-
避免常见错误
- 替换列时不要搞错位置
- 计算行列式时注意正负号
- 最终结果要约分
-
特殊情况处理
- 如果D = 0,说明不能使用克莱姆法则
- 如果算出的值是分数,保持分数形式或根据要求化为小数
总结思维导图
流程图中各步骤的详细说明:
-
开始 → 拿到线性方程组
-
检查条件
- 验证方程个数是否等于未知数个数
- 如果不等于,则不能使用克莱姆法则
-
计算系数行列式D
- 写出系数矩阵
- 计算行列式D的值
-
检查D是否为0
- 如果D=0,方程组无解或有无穷多解
- 如果D≠0,继续下一步
-
计算Dᵢ
- 依次用常数项替换对应列
- 计算新行列式的值
-
求解未知数
- 使用公式:xᵢ = Dᵢ/D
- 化简结果
-
验证结果
- 将解代入原方程组
- 检查是否满足所有方程
-
检查结果
- 如果验证正确,完成求解
- 如果验证错误,返回检查计算过程
-
结束 → 得到方程组的解
这个流程图直观地展示了使用克莱姆法则解方程组的完整过程,包括所有关键决策点和验证步骤。按照这个流程操作,可以有效避免计算错误。
5. 克莱姆法则在机器学习中使用场景
让我介绍克莱姆法则在机器学习中的主要应用场景。
1. 线性回归中的应用
基本原理
在简单线性回归中,我们需要解决这样的方程组:
{
∑
x
i
2
β
1
+
∑
x
i
β
0
=
∑
x
i
y
i
∑
x
i
β
1
+
n
β
0
=
∑
y
i
\begin{cases} \sum x_i^2\beta_1 + \sum x_i\beta_0 = \sum x_iy_i \\ \sum x_i\beta_1 + n\beta_0 = \sum y_i \end{cases}
{∑xi2β1+∑xiβ0=∑xiyi∑xiβ1+nβ0=∑yi
这个方程组可以用克莱姆法则求解:
-
系数矩阵:
D = ∣ ∑ x i 2 ∑ x i ∑ x i n ∣ D = \begin{vmatrix} \sum x_i^2 & \sum x_i \\ \sum x_i & n \end{vmatrix} D= ∑xi2∑xi∑xin -
β 1 \beta_1 β1 的解:
D 1 = ∣ ∑ x i y i ∑ x i ∑ y i n ∣ D_1 = \begin{vmatrix} \sum x_iy_i & \sum x_i \\ \sum y_i & n \end{vmatrix} D1= ∑xiyi∑yi∑xin
2. 最小二乘法求解
正规方程
在多维特征的线性回归中,正规方程为:
(
X
T
X
)
β
=
X
T
y
(X^TX)\beta = X^Ty
(XTX)β=XTy
当样本量较小时,可以用克莱姆法则求解这个方程组。
3. 特征选择和降维
应用场景
-
共线性检测
- 使用克莱姆法则判断特征矩阵的行列式是否接近零
- 帮助识别特征间的线性相关性
-
特征重要性评估
- 通过行列式值的变化评估特征的重要程度
- 辅助特征选择决策
4. 优缺点分析
优点
-
精确解
- 可以得到精确的数学解
- 适合小规模问题
-
理论基础
- 提供了线性系统解的理论保证
- 有助于理解模型的数学性质
缺点
-
计算复杂度
- 随维度增加计算量剧增
- 不适合大规模数据集
-
数值稳定性
- 对数值条件要求高
- 可能存在舍入误差
5. 实际应用建议
-
使用场景
- 小规模数据集(n < 100)
- 需要精确解的情况
- 理论分析和教学场景
-
替代方法
- 大规模数据集:梯度下降
- 数值不稳定:QR分解或SVD
- 实时计算:随机梯度下降
-
混合策略
- 可以将克莱姆法则作为基准解
- 用于验证其他算法的正确性
克莱姆法则在机器学习中主要用于理论分析和小规模问题求解,是理解线性系统的重要工具,但在实际大规模应用中常被其他更高效的方法替代。
6. 优缺点分析
优点
- 理论清晰,公式统一
- 适用于所有非奇异方程组
- 解的表达式直观
缺点
- 计算量大,特别是高阶方程组
- 不适合系数行列式为零的情况
- 在实际应用中,对于大型方程组,通常选择其他数值方法
这就是克莱姆法则的详细解释。通过具体例题的演示,相信你能更好地理解和运用这个重要的定理。在实际应用中,要根据具体情况选择合适的解法。
番外
克莱姆法则为什么要用常数项替换第 j 列?
让我用更直观的方式来解释为什么克莱姆法则要用常数项替换第 j 列。
通过简单的二元方程组理解
考虑一个简单的二元方程组:
{
2
x
+
3
y
=
8
4
x
+
5
y
=
12
\begin{cases} 2x + 3y = 8 \\ 4x + 5y = 12 \end{cases}
{2x+3y=84x+5y=12
1. 解释替换第1列(求解x)的过程:
原方程组的系数矩阵:
D
=
∣
2
3
4
5
∣
D = \begin{vmatrix} 2 & 3 \\ 4 & 5 \end{vmatrix}
D=
2435
替换第1列后的矩阵:
D
1
=
∣
8
3
12
5
∣
D_1 = \begin{vmatrix} 8 & 3 \\ 12 & 5 \end{vmatrix}
D1=
81235
2. 为什么这样替换是有意义的?
-
方程组的本质
- 2x + 3y = 8 可以写成:x · 2 + y · 3 = 8
- 4x + 5y = 12 可以写成:x · 4 + y · 5 = 12
-
替换的物理意义
- 把x的系数(2和4)替换成等式右边的值(8和12)
- 这相当于"假设x = 1"时的情况
- y的系数保持不变
3. 通过具体数值理解
-
计算 D:
D = 2 ⋅ 5 − 3 ⋅ 4 = 10 − 12 = − 2 D = 2 \cdot 5 - 3 \cdot 4 = 10 - 12 = -2 D=2⋅5−3⋅4=10−12=−2 -
计算 D₁:
D 1 = 8 ⋅ 5 − 3 ⋅ 12 = 40 − 36 = 4 D_1 = 8 \cdot 5 - 3 \cdot 12 = 40 - 36 = 4 D1=8⋅5−3⋅12=40−36=4 -
得到 x:
x = D 1 D = 4 − 2 = − 2 x = \frac{D_1}{D} = \frac{4}{-2} = -2 x=DD1=−24=−2
这就像是:
- 把与x相关的系数替换成等式右边的值
- 保持y的系数不变
- 通过行列式运算自动帮我们完成解方程的过程
4. 直观类比
想象一个天平:
- 左边放x和y的系数(砝码)
- 右边放常数项(要称的东西)
- 替换第j列就是在找平衡点
总结:
- 替换第j列是在保持其他变量系数不变的情况下
- 将目标变量的系数替换为等式右边的常数项
- 这样的替换保持了方程组的平衡关系
- 通过行列式运算自动完成了解方程的过程
这种替换方法看似复杂,但实际上是一种巧妙的数学变换,使我们能够直接得到方程组的解。