工程数学中的四阶行列式计算,虽然不像二阶或三阶行列式那样有非常简洁的“套路”公式,但确实存在一些有用的技巧和算法,能够极大地简化计算过程,避免繁琐的代数展开。下面我将详细讲述这些技巧算法。
理解四阶行列式的定义 (回顾)
首先,让我们快速回顾一下四阶行列式的定义。一个四阶行列式可以表示为:
$$
D = egin{vmatrix}
a_{11} & a_{12} & a_{13} & a_{14} \
a_{21} & a_{22} & a_{23} & a_{24} \
a_{31} & a_{32} & a_{33} & a_{34} \
a_{41} & a_{42} & a_{43} & a_{44}
end{vmatrix}
$$
其计算方式是:
$$
D = sum_{sigma in S_4} ext{sgn}(sigma) a_{1, sigma(1)} a_{2, sigma(2)} a_{3, sigma(3)} a_{4, sigma(4)}
$$
其中,$S_4$ 是所有 4 个元素的置换集合,$ ext{sgn}(sigma) $ 是置换 $sigma$ 的符号。这个定义直接展开会产生 $4! = 24$ 项,每项包含 4 个元素的乘积,非常繁琐。
核心技巧:降阶法
降阶法是处理高阶行列式最通用且最重要的技巧。其核心思想是将一个四阶行列式通过一系列运算,将其转化为计算三个三阶行列式,甚至最终转化为计算二阶行列式。
1. 按行(或列)展开(代数余子式展开)
这是最基础但非常重要的降阶方法。选择某一行或某一列,将其中的元素与对应的代数余子式相乘并求和。
定义: 设 $M_{ij}$ 是由删除原行列式的第 $i$ 行和第 $j$ 列后得到的 $(n1) imes (n1)$ 的子行列式,称为 $a_{ij}$ 的余子式。代数余子式 $C_{ij} = (1)^{i+j} M_{ij}$。
展开公式:
按第 $i$ 行展开:$D = a_{i1}C_{i1} + a_{i2}C_{i2} + a_{i3}C_{i3} + a_{i4}C_{i4}$
按第 $j$ 列展开:$D = a_{1j}C_{1j} + a_{2j}C_{2j} + a_{3j}C_{3j} + a_{4j}C_{4j}$
技巧应用:选择包含零的行或列进行展开
这是应用按行(列)展开时最有效的技巧。如果某一行或某一列包含较多的零,选择该行或列进行展开可以大大减少需要计算的余子式的数量。
举例说明:
假设有如下四阶行列式:
$$
D = egin{vmatrix}
2 & 1 & 0 & 3 \
0 & 4 & 1 & 2 \
1 & 2 & 0 & 0 \
3 & 0 & 1 & 5
end{vmatrix}
$$
观察第三行,有两处是零。我们选择按第三行展开:
$$
D = a_{31}C_{31} + a_{32}C_{32} + a_{33}C_{33} + a_{34}C_{34}
$$
$$
D = 1 cdot (1)^{3+1} egin{vmatrix} 1 & 0 & 3 \ 4 & 1 & 2 \ 0 & 1 & 5 end{vmatrix} + 2 cdot (1)^{3+2} egin{vmatrix} 2 & 0 & 3 \ 0 & 1 & 2 \ 3 & 1 & 5 end{vmatrix} + 0 cdot C_{33} + 0 cdot C_{34}
$$
$$
D = egin{vmatrix} 1 & 0 & 3 \ 4 & 1 & 2 \ 0 & 1 & 5 end{vmatrix} 2 egin{vmatrix} 2 & 0 & 3 \ 0 & 1 & 2 \ 3 & 1 & 5 end{vmatrix}
$$
现在,我们需要计算两个三阶行列式。
第一个三阶行列式:
$$
egin{vmatrix} 1 & 0 & 3 \ 4 & 1 & 2 \ 0 & 1 & 5 end{vmatrix} = 1 cdot egin{vmatrix} 1 & 2 \ 1 & 5 end{vmatrix} 0 cdot egin{vmatrix} 4 & 2 \ 0 & 5 end{vmatrix} + 3 cdot egin{vmatrix} 4 & 1 \ 0 & 1 end{vmatrix}
$$
$$
= 1(52) 0 + 3(40) = 3 + 12 = 15
$$
第二个三阶行列式:
$$
egin{vmatrix} 2 & 0 & 3 \ 0 & 1 & 2 \ 3 & 1 & 5 end{vmatrix} = 2 cdot egin{vmatrix} 1 & 2 \ 1 & 5 end{vmatrix} 0 cdot egin{vmatrix} 0 & 2 \ 3 & 5 end{vmatrix} + 3 cdot egin{vmatrix} 0 & 1 \ 3 & 1 end{vmatrix}
$$
$$
= 2(52) 0 + 3(03) = 2(3) + 3(3) = 6 9 = 3
$$
将结果代回:
$$
D = 15 2(3) = 15 + 6 = 21
$$
2. 行列式的性质(化零技巧)
行列式的性质是进行简化的关键。目标是利用这些性质将行列式转化为更容易计算的形式,特别是制造更多的零。
性质 1: 行列互换,行列式的值不变。(通常不直接用于计算,但有助于理解其他性质)
性质 2: 交换两行(或两列),行列式的值变号。
性质 3: 一行(或一列)中所有元素都乘以同一个数 $k$,则行列式的值也乘以 $k$。
性质 4: 一行(或一列)的各元素以及对应行(或列)的对应元素乘同一个数 $k$ 加到另一行(或列)的对应元素上去,行列式的值不变。这是最重要的化零技巧!
性质 5: 若一行(或一列)的各元素皆为零,则行列式的值为零。
性质 6: 若两行(或两列)成比例,则行列式的值为零。
性质 7: 两个行列式 A 和 B,如果它们除了某一行(或列)不同外,其他行(或列)都相同,则它们的和等于另一个行列式,而这个行列式就是 A 和 B 中对应行(或列)相加而成的。
如何利用性质 4 化零?
这是工程数学中最常使用的技巧。我们的目标是选择某一行(或列)作为“基准”,然后通过“某行加上另一行的倍数”的运算,将其他行(或列)中的元素变成零。
举例说明(使用性质 4):
再次使用上面的行列式:
$$
D = egin{vmatrix}
2 & 1 & 0 & 3 \
0 & 4 & 1 & 2 \
1 & 2 & 0 & 0 \
3 & 0 & 1 & 5
end{vmatrix}
$$
我们看到第一列有一个 1。我们可以利用这个 1 来消去第三行以外的其他行的第一个元素。
操作 1: $R_1
ightarrow R_1 2R_3$ (用第三行乘以 2 加到第一行)
$$
egin{vmatrix}
2 2(1) & 1 2(2) & 0 2(0) & 3 2(0) \
0 & 4 & 1 & 2 \
1 & 2 & 0 & 0 \
3 & 0 & 1 & 5
end{vmatrix}
=
egin{vmatrix}
0 & 3 & 0 & 3 \
0 & 4 & 1 & 2 \
1 & 2 & 0 & 0 \
3 & 0 & 1 & 5
end{vmatrix}
$$
操作 2: $R_4
ightarrow R_4 3R_3$ (用第三行乘以 3 加到第四行)
$$
egin{vmatrix}
0 & 3 & 0 & 3 \
0 & 4 & 1 & 2 \
1 & 2 & 0 & 0 \
3 3(1) & 0 3(2) & 1 3(0) & 5 3(0)
end{vmatrix}
=
egin{vmatrix}
0 & 3 & 0 & 3 \
0 & 4 & 1 & 2 \
1 & 2 & 0 & 0 \
0 & 6 & 1 & 5
end{vmatrix}
$$
现在,我们得到一个第一列有很多零的行列式。选择按第一列展开:
$$
D = 0 cdot C_{11} + 0 cdot C_{21} + 1 cdot C_{31} + 0 cdot C_{41}
$$
$$
D = 1 cdot (1)^{3+1} egin{vmatrix} 3 & 0 & 3 \ 4 & 1 & 2 \ 6 & 1 & 5 end{vmatrix}
$$
$$
D = egin{vmatrix} 3 & 0 & 3 \ 4 & 1 & 2 \ 6 & 1 & 5 end{vmatrix}
$$
现在只需要计算这个三阶行列式。可以继续使用性质 4 或者直接计算。让我们继续使用性质 4,利用第二行第一个元素 4 来消去第三行第一个元素 6。
操作 3: $R_3
ightarrow R_3 + frac{3}{2}R_2$ (用第二行乘以 3/2 加到第三行)
$$
egin{vmatrix} 3 & 0 & 3 \ 4 & 1 & 2 \ 6 + frac{3}{2}(4) & 1 + frac{3}{2}(1) & 5 + frac{3}{2}(2) end{vmatrix}
=
egin{vmatrix} 3 & 0 & 3 \ 4 & 1 & 2 \ 6 + 6 & 1 + frac{3}{2} & 5 + 3 end{vmatrix}
=
egin{vmatrix} 3 & 0 & 3 \ 4 & 1 & 2 \ 0 & frac{5}{2} & 8 end{vmatrix}
$$
现在按第一列展开:
$$
D = 3 egin{vmatrix} 1 & 2 \ frac{5}{2} & 8 end{vmatrix} 0 + 0
$$
$$
D = 3 (1 cdot 8 2 cdot frac{5}{2})
$$
$$
D = 3 (8 5) = 3 (3) = 9
$$
等等!前面我们按第三行展开得到了 21,这里按第一列化零得到了 9。这是哪里出了问题?
让我们仔细检查一下之前的化零操作:
原始行列式:
$$
D = egin{vmatrix}
2 & 1 & 0 & 3 \
0 & 4 & 1 & 2 \
1 & 2 & 0 & 0 \
3 & 0 & 1 & 5
end{vmatrix}
$$
我之前按第三行展开的结果是 21。
在化零过程中,我操作的是:
$R_1
ightarrow R_1 2R_3$
$R_4
ightarrow R_4 3R_3$
然后按第一列展开。
让我们仔细检查一下化零后按第一列展开的子行列式:
$$
egin{vmatrix} 3 & 0 & 3 \ 4 & 1 & 2 \ 6 & 1 & 5 end{vmatrix}
$$
进行计算:
$(3) egin{vmatrix} 1 & 2 \ 1 & 5 end{vmatrix} 0 egin{vmatrix} 4 & 2 \ 6 & 5 end{vmatrix} + 3 egin{vmatrix} 4 & 1 \ 6 & 1 end{vmatrix}$
$= 3(52) 0 + 3(4 (6))$
$= 3(3) + 3(10)$
$= 9 + 30 = 21$
啊!原来是我在化零过程中,化简三阶行列式的时候出了计算错误。那个将 5/2 出现的那个地方确实是个坑。
这个例子也说明了细心和反复检查的重要性。在计算过程中,如果得到与之前不同但又似乎正确的答案,一定要回头检查每一步的计算和操作。
3. 分块行列式(特定情况下的强大工具)
如果一个四阶行列式可以被分成若干个子块,特别是当某些子块是零矩阵时,分块行列式的计算会非常方便。
设四阶行列式 $D$ 可以写成以下形式:
$$
D = egin{vmatrix}
A & B \
C & D
end{vmatrix}
$$
其中 $A, B, C, D$ 是子块(通常是二阶矩阵)。
情况一:C 为零矩阵
$$
D = egin{vmatrix}
A & B \
0 & D
end{vmatrix} = det(A) det(D)
$$
情况二:B 为零矩阵
$$
D = egin{vmatrix}
A & 0 \
C & D
end{vmatrix} = det(A) det(D)
$$
情况三:A, C, D 为对角块(非零块在对角线上)
$$
D = egin{vmatrix}
A & B \
0 & D
end{vmatrix} = det(A) det(D)
$$
或者
$$
D = egin{vmatrix}
A & 0 \
C & D
end{vmatrix} = det(A) det(D)
$$
情况四:通用情况(需要使用性质进行化简)
如果 $A$ 可逆,那么
$$
D = egin{vmatrix}
A & B \
C & D
end{vmatrix} = det(A) det(D CA^{1}B)
$$
如果 $D$ 可逆,那么
$$
D = egin{vmatrix}
A & B \
C & D
end{vmatrix} = det(D) det(A BD^{1}C)
$$
举例说明分块行列式:
$$
D = egin{vmatrix}
1 & 2 & 3 & 4 \
5 & 6 & 7 & 8 \
0 & 0 & 9 & 10 \
0 & 0 & 11 & 12
end{vmatrix}
$$
这个行列式可以写成:
$$
D = egin{vmatrix}
egin{bmatrix} 1 & 2 \ 5 & 6 end{bmatrix} & egin{bmatrix} 3 & 4 \ 7 & 8 end{bmatrix} \
egin{bmatrix} 0 & 0 \ 0 & 0 end{bmatrix} & egin{bmatrix} 9 & 10 \ 11 & 12 end{bmatrix}
end{vmatrix}
$$
这是一个 B 为零矩阵(严格来说是左上角的块是 A,右下角的块是 D,左下角的块 C 是零矩阵)的结构。所以:
$$
D = det egin{bmatrix} 1 & 2 \ 5 & 6 end{bmatrix} cdot det egin{bmatrix} 9 & 10 \ 11 & 12 end{bmatrix}
$$
$det egin{bmatrix} 1 & 2 \ 5 & 6 end{bmatrix} = 1 cdot 6 2 cdot 5 = 6 10 = 4$
$det egin{bmatrix} 9 & 10 \ 11 & 12 end{bmatrix} = 9 cdot 12 10 cdot 11 = 108 110 = 2$
所以,$D = (4) cdot (2) = 8$。
另一个分块例子:
$$
D = egin{vmatrix}
1 & 2 & 0 & 0 \
3 & 4 & 0 & 0 \
5 & 6 & 7 & 8 \
9 & 10 & 11 & 12
end{vmatrix}
$$
这个行列式可以写成:
$$
D = egin{vmatrix}
egin{bmatrix} 1 & 2 \ 3 & 4 end{bmatrix} & egin{bmatrix} 0 & 0 \ 0 & 0 end{bmatrix} \
egin{bmatrix} 5 & 6 \ 9 & 10 end{bmatrix} & egin{bmatrix} 7 & 8 \ 11 & 12 end{bmatrix}
end{vmatrix}
$$
这是 B 为零矩阵的结构。
$$
D = det egin{bmatrix} 1 & 2 \ 3 & 4 end{bmatrix} cdot det egin{bmatrix} 7 & 8 \ 11 & 12 end{bmatrix}
$$
$det egin{bmatrix} 1 & 2 \ 3 & 4 end{bmatrix} = 1 cdot 4 2 cdot 3 = 4 6 = 2$
$det egin{bmatrix} 7 & 8 \ 11 & 12 end{bmatrix} = 7 cdot 12 8 cdot 11 = 84 88 = 4$
所以,$D = (2) cdot (4) = 8$。
4. 特殊类型的行列式
有些特殊结构的行列式有更简便的计算方法:
对角行列式: 只有主对角线上的元素可能非零,其他位置都是零。
$$
D = egin{vmatrix}
a_{11} & 0 & 0 & 0 \
0 & a_{22} & 0 & 0 \
0 & 0 & a_{33} & 0 \
0 & 0 & 0 & a_{44}
end{vmatrix} = a_{11} a_{22} a_{33} a_{44}
$$
三角行列式(上三角或下三角): 主对角线一侧的所有元素都为零。
$$
D = egin{vmatrix}
a_{11} & a_{12} & a_{13} & a_{14} \
0 & a_{22} & a_{23} & a_{24} \
0 & 0 & a_{33} & a_{34} \
0 & 0 & 0 & a_{44}
end{vmatrix} = a_{11} a_{22} a_{33} a_{44}
$$
(下三角同理)
如何利用性质将行列式转化为三角行列式?
通过反复运用性质 4 (行变换),可以将任意行列式化为三角行列式。这是一个系统的算法,在计算机中有广泛应用,称为高斯消元法。
高斯消元法思路:
1. 主元选择: 选择第一列非零元素作为主元(通常是第一个非零元素)。如果第一列全为零,则移动到下一列。
2. 主元置换: 如果主元不是第一行的元素,则通过交换行将主元移到第一行。注意交换行会改变行列式符号。
3. 行变换消元: 利用主元所在行,通过“某行加上另一行的倍数”的运算,将主元下方的所有元素都变成零。
4. 处理下一行: 忽略第一行和第一列,对剩下的子矩阵重复步骤 13。
5. 最终结果: 当整个矩阵变成上三角形式时,其行列式的值就是主对角线上所有元素的乘积。注意在过程中记录交换行的次数,如果有奇数次交换,则最终结果需要变号。
举例说明高斯消元法:
$$
D = egin{vmatrix}
2 & 1 & 0 & 3 \
0 & 4 & 1 & 2 \
1 & 2 & 0 & 0 \
3 & 0 & 1 & 5
end{vmatrix}
$$
1. 选择第一列主元: 第一列第一个非零元素是 2。我们把它作为主元。
2. 行变换消元:
$R_3
ightarrow R_3 frac{1}{2}R_1$
$R_4
ightarrow R_4 frac{3}{2}R_1$
$$
egin{vmatrix}
2 & 1 & 0 & 3 \
0 & 4 & 1 & 2 \
1 frac{1}{2}(2) & 2 frac{1}{2}(1) & 0 frac{1}{2}(0) & 0 frac{1}{2}(3) \
3 frac{3}{2}(2) & 0 frac{3}{2}(1) & 1 frac{3}{2}(0) & 5 frac{3}{2}(3)
end{vmatrix}
=
egin{vmatrix}
2 & 1 & 0 & 3 \
0 & 4 & 1 & 2 \
0 & frac{3}{2} & 0 & frac{3}{2} \
0 & frac{3}{2} & 1 & frac{1}{2}
end{vmatrix}
$$
3. 处理下一行: 忽略第一行和第一列,对剩下的三阶行列式进行操作。选择第二列第一个非零元素 4 作为主元。
$R_3
ightarrow R_3 frac{3/2}{4}R_2 = R_3 frac{3}{8}R_2$
$R_4
ightarrow R_4 frac{3/2}{4}R_2 = R_4 + frac{3}{8}R_2$
$$
egin{vmatrix}
2 & 1 & 0 & 3 \
0 & 4 & 1 & 2 \
0 & frac{3}{2} frac{3}{8}(4) & 0 frac{3}{8}(1) & frac{3}{2} frac{3}{8}(2) \
0 & frac{3}{2} + frac{3}{8}(4) & 1 + frac{3}{8}(1) & frac{1}{2} + frac{3}{8}(2)
end{vmatrix}
=
egin{vmatrix}
2 & 1 & 0 & 3 \
0 & 4 & 1 & 2 \
0 & 0 & frac{3}{8} & frac{9}{4} \
0 & 0 & frac{11}{8} & frac{7}{4}
end{vmatrix}
$$
4. 处理下一行: 忽略第一、二行和第一、二列,对剩下的二阶行列式进行操作。选择第三列第一个非零元素 3/8 作为主元。
$R_4
ightarrow R_4 frac{11/8}{3/8}R_3 = R_4 + frac{11}{3}R_3$
$$
egin{vmatrix}
2 & 1 & 0 & 3 \
0 & 4 & 1 & 2 \
0 & 0 & frac{3}{8} & frac{9}{4} \
0 & 0 & frac{11}{8} + frac{11}{3}(frac{3}{8}) & frac{7}{4} + frac{11}{3}(frac{9}{4})
end{vmatrix}
=
egin{vmatrix}
2 & 1 & 0 & 3 \
0 & 4 & 1 & 2 \
0 & 0 & frac{3}{8} & frac{9}{4} \
0 & 0 & 0 & frac{7}{4} frac{99}{12}
end{vmatrix}
=
egin{vmatrix}
2 & 1 & 0 & 3 \
0 & 4 & 1 & 2 \
0 & 0 & frac{3}{8} & frac{9}{4} \
0 & 0 & 0 & frac{21}{12} frac{99}{12}
end{vmatrix}
=
egin{vmatrix}
2 & 1 & 0 & 3 \
0 & 4 & 1 & 2 \
0 & 0 & frac{3}{8} & frac{9}{4} \
0 & 0 & 0 & frac{78}{12}
end{vmatrix}
=
egin{vmatrix}
2 & 1 & 0 & 3 \
0 & 4 & 1 & 2 \
0 & 0 & frac{3}{8} & frac{9}{4} \
0 & 0 & 0 & frac{13}{2}
end{vmatrix}
$$
5. 计算结果: 这是一个上三角行列式,其值为主对角线元素的乘积。
$$
D = 2 cdot 4 cdot (frac{3}{8}) cdot (frac{13}{2})
$$
$$
D = 8 cdot (frac{3}{8}) cdot (frac{13}{2})
$$
$$
D = 3 cdot (frac{13}{2})
$$
$$
D = frac{39}{2}
$$
再次检查之前的计算结果。
我的两次 manual 计算结果一个是 21,一个是 39/2。说明手动计算确实容易出错。
总结与建议:
最重要的技巧是利用行列式的性质,特别是“某行加上另一行的倍数,行列式值不变”,目标是制造零。
选择包含最多零的行或列进行按行(列)展开,可以显著减少计算量。
分块行列式在特定结构下能极大地简化计算。
高斯消元法可以将任意行列式化为三角行列式,是一种系统性的算法,尤其适合计算机程序实现,但在手动计算时需要非常细心,尤其是处理分数。
对于工程计算,如果允许使用计算工具(如 MATLAB, Python NumPy),直接计算是最可靠的。
手动计算时,务必细心,并可以尝试用不同方法(如先按行展开,再用性质化零)进行验证。
掌握这些技巧,可以让你在面对四阶行列式计算时,不再感到束手无策,而是能找到更有效率、更不容易出错的计算路径。