行列式计算
手动反爬虫:原博地址
知识梳理不易,请尊重劳动成果,文章仅发布在CSDN网站上,在其他网站看到该博文均属于未经作者授权的恶意爬取信息
如若转载,请标明出处,谢谢!
例1:化为上三角(就硬算)
计算下面行列式的值
D = ∣ 2 1 7 − 1 − 1 2 4 3 2 1 0 − 1 3 2 2 1 ∣ D = \begin{vmatrix}2 & 1 & 7 & -1\\ -1 & 2 & 4 & 3\\ 2 & 1& 0 &-1 \\ 3 & 2&2 &1\end{vmatrix} D=∣∣∣∣∣∣∣∣2−12312127402−13−11∣∣∣∣∣∣∣∣
解:①将第一行和第二行交换,值变号
②依次乘以2,2,3将除了第一行除外的第一列所有元素变成0
③先用第二行乘以-1加到第三行后,再将第二行的公因式5提出,最后将第四行的第二列对应的元素化为0
④将第三行的-7提到行列式外,然后将第四行第三列元素化为0
− ∣ − 1 2 4 3 2 1 7 − 1 2 1 0 − 1 3 2 2 1 ∣ = − ∣ − 1 2 4 3 0 5 15 5 0 5 8 5 0 8 14 10 ∣ = − 5 ∣ − 1 2 4 3 0 1 3 1 0 0 − 7 0 0 0 − 10 2 ∣ = 35 ∣ − 1 2 4 3 0 1 3 1 0 0 1 0 0 0 0 2 ∣ = − 70 -\begin{vmatrix}-1 & 2 & 4 & 3\\ 2 & 1 & 7 & -1\\ 2 & 1& 0 &-1 \\ 3 & 2&2 &1\end{vmatrix} =-\begin{vmatrix}-1 & 2 & 4 & 3\\ 0 & 5 & 15 & 5\\ 0 & 5& 8 &5 \\ 0 & 8&14 &10\end{vmatrix}=-5\begin{vmatrix}-1 & 2 & 4 & 3\\ 0 & 1 & 3 & 1\\ 0 & 0& -7 &0 \\ 0 & 0&-10&2\end{vmatrix}=35\begin{vmatrix}-1 & 2 & 4 & 3\\ 0 & 1 & 3 & 1\\ 0 & 0& 1 &0 \\ 0 & 0&0&2\end{vmatrix}=-70 −∣∣∣∣∣∣∣∣−1223211247023−1−11∣∣∣∣∣∣∣∣=−∣∣∣∣∣∣∣∣−1000255841581435510∣∣∣∣∣∣∣∣=−5∣∣∣∣∣∣∣∣−1000210043−7−103102∣∣∣∣∣∣∣∣=35∣∣∣∣∣∣∣∣−1000210043103102∣∣∣∣∣∣∣∣=−70
python中进行计算结果验证
import numpy as np
data = np.reshape([2,1,7,-1,-1,2,4,3,2,1,0,-1,3,2,2,1],(4,4))
print(data) #行列式对应的数据内容
print(data.shape) #看一下维度
print(np.linalg.det(data)) #计算行列式的值
→ 输出的结果为:(python计算中存在不确定尾数,不影响最终的结果)
[[ 2 1 7 -1]
[-1 2 4 3]
[ 2 1 0 -1]
[ 3 2 2 1]]
(4, 4)
-70.00000000000003
例2:巧妙使用展开式
求解下列行列式的 M 41 + M 42 + M 43 + M 44 M_{41}+M_{42}+M_{43}+M_{44} M41+M42+M43+M44
D = ∣ 3 0 4 0 3 2 2 2 0 − 7 0 0 5 3 − 2 2 ∣ D = \begin{vmatrix}3 & 0 & 4 & 0\\ 3& 2 & 2 &2\\ 0 & -7& 0 &0 \\ 5& 3&-2 &2\end{vmatrix} D=∣∣∣∣∣∣∣∣330502−73420−20202∣∣∣∣∣∣∣∣
看到这种同行余子式相加,就想起上个博客中的异乘变零定理,首先将余子式转化为相应的代数余子式,则
M
41
+
M
42
+
M
43
+
M
44
=
−
A
41
+
A
42
−
A
43
+
A
44
=
(
−
1
)
A
41
+
A
42
+
(
−
1
)
A
43
+
A
44
M_{41}+M_{42}+M_{43}+M_{44} = -A_{41}+A_{42}-A_{43}+A_{44} = (-1)A_{41}+A_{42}+(-1)A_{43}+A_{44}
M41+M42+M43+M44=−A41+A42−A43+A44=(−1)A41+A42+(−1)A43+A44
而最后的代数余子式与前面的系数相乘刚好又满足行列式展开的结果,实际上也就是求解下面的行列式的值(相当于将第4行的数据变成了代数余子式前面的系数,其余的不变)
D 1 = ∣ 3 0 4 0 3 2 2 2 0 − 7 0 0 − 1 1 − 1 1 ∣ D_{1} = \begin{vmatrix}3 & 0 & 4 & 0\\ 3& 2 & 2 &2\\ 0 & -7& 0 &0 \\ -1& 1&-1&1\end{vmatrix} D1=∣∣∣∣∣∣∣∣330−102−71420−10201∣∣∣∣∣∣∣∣
求解过程如下:按照第三行进行展开即可
D 1 = ( − 7 ) ∗ ( − 1 ) 3 + 2 ∣ 3 4 0 3 2 2 − 1 − 1 1 ∣ = 7 ∗ ( 3 ∗ ( 2 + 2 ) − 4 ∗ ( 3 + 2 ) ) = 7 ∗ ( − 8 ) = − 56 D_{1} = (-7)*(-1)^{3+2}\begin{vmatrix}3 & 4 & 0\\ 3& 2 &2 \\ -1&-1&1\end{vmatrix}=7*(3*(2+2)-4*(3+2)) =7*(-8)=-56 D1=(−7)∗(−1)3+2∣∣∣∣∣∣33−142−1021∣∣∣∣∣∣=7∗(3∗(2+2)−4∗(3+2))=7∗(−8)=−56
python中进行计算结果验证
import numpy as np
data = np.reshape([3,0,4,0,3,2,2,2,0,-7,0,0,-1,1,-1,1],(4,4))
print(data)
print(data.shape)
print(np.linalg.det(data))
→ 输出的结果为:(验证无误)
[[ 3 0 4 0]
[ 3 2 2 2]
[ 0 -7 0 0]
[-1 1 -1 1]]
(4, 4)
-56.00000000000002
例3:等和行列式
计算下面行列式的值:每行每列的和都是相等的
D = ∣ x a . . . a a a x . . . a a . . . . . . . . . . . . . . . a a . . . x a a a . . . a x ∣ D = \begin{vmatrix}x &a &...& a& a\\ a& x &... & a&a\\ ... & ...&... &...&... \\ a& a&...&x&a\\a& a&...&a&x\end{vmatrix} D=∣∣∣∣∣∣∣∣∣∣xa...aaax...aa...............aa...xaaa...ax∣∣∣∣∣∣∣∣∣∣
解:①将所有行都加到第一行,然后提取公因式到行列式外边
②然后第一列乘以-1,依次加到其余各列,就转化为了三角行列式
D = ∣ x + ( n − 1 ) a a . . . a a x + ( n − 1 ) a x . . . a a . . . . . . . . . . . . . . . x + ( n − 1 ) a a . . . x a x + ( n − 1 ) a a . . . a x ∣ = x + ( n − 1 ) a ∣ 1 a . . . a a 1 x . . . a a . . . . . . . . . . . . . . . 1 a . . . x a 1 a . . . a x ∣ ⇒ D = \begin{vmatrix}x+(n-1)a &a &...& a& a\\x+(n-1)a & x &... & a&a\\ ... & ...&... &...&... \\x+(n-1)a& a&...&x&a\\x+(n-1)a& a&...&a&x\end{vmatrix} = x+(n-1)a\begin{vmatrix}1 &a &...& a& a\\1 & x &... & a&a\\ ... & ...&... &...&... \\1& a&...&x&a\\1& a&...&a&x\end{vmatrix} \Rightarrow D=∣∣∣∣∣∣∣∣∣∣x+(n−1)ax+(n−1)a...x+(n−1)ax+(n−1)aax...aa...............aa...xaaa...ax∣∣∣∣∣∣∣∣∣∣=x+(n−1)a∣∣∣∣∣∣∣∣∣∣11...11ax...aa...............aa...xaaa...ax∣∣∣∣∣∣∣∣∣∣⇒
⇒ x + ( n − 1 ) a ∣ 1 0 . . . 0 0 1 x − a . . . 0 0 . . . . . . . . . . . . . . . 1 0 . . . x − a 0 1 0 . . . 0 x − a ∣ = ( x + ( n − 1 ) a ) ( x − a ) n − 1 \Rightarrow \text{ } \text{ } \text{ } x+(n-1)a\begin{vmatrix}1 &0 &...& 0& 0\\1 & x-a &... & 0&0\\ ... & ...&... &...&... \\1& 0&...&x-a&0\\1& 0&...&0&x-a\end{vmatrix} =(x+(n-1)a)(x-a)^{n-1} ⇒ x+(n−1)a∣∣∣∣∣∣∣∣∣∣11...110x−a...00...............00...x−a000...0x−a∣∣∣∣∣∣∣∣∣∣=(x+(n−1)a)(x−a)n−1
例4:加边法(三叉型行列式)
计算下面行列式的值:对角线元素不同,其余元素相等, a i ! = 0 a_{i} != 0 ai!=0
D = ∣ 1 + a 1 1 . . . 1 1 1 1 + a 2 . . . 1 1 . . . . . . . . . . . . . . . 1 1 . . . 1 + a n − 1 1 1 1 . . . 1 1 + a n ∣ D = \begin{vmatrix}1+a_{1} &1 &...& 1& 1\\ 1& 1+a_{2} &... & 1&1\\ ... & ...&... &...&... \\1&1&...&1+a_{n-1} &1\\1& 1&...&1&1+a_{n} \end{vmatrix} D=∣∣∣∣∣∣∣∣∣∣1+a11...1111+a2...11...............11...1+an−1111...11+an∣∣∣∣∣∣∣∣∣∣
解题思路:加一行一列,行列式不变(按照第一列展开行列式值不变)
① 第一行乘以-1加到其余各行
②得到三叉型行列式,形似爪子
③将第一列中除第一行外将所有元素化为0,转化为三角形行列式(从第二列开始都乘以对角线元素的倒数,然后加到第一列)
D
=
∣
1
1
1
1
1
1
0
1
+
a
1
1
.
.
.
1
1
0
1
1
+
a
2
.
.
.
1
1
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
0
1
1
.
.
.
1
+
a
n
−
1
1
0
1
1
.
.
.
1
1
+
a
n
∣
=
∣
1
1
1
1
1
1
−
1
a
1
0
.
.
.
0
0
−
1
0
a
2
.
.
.
0
0
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
−
1
0
0
.
.
.
a
n
−
1
0
−
1
0
0
.
.
.
0
a
n
∣
⇒
D = \begin{vmatrix}1&1&1&1&1&1&\\0&1+a_{1} &1 &...& 1& 1\\0& 1& 1+a_{2} &... & 1&1\\ ... &... & ...&... &...&... \\0&1&1&...&1+a_{n-1} &1\\0&1& 1&...&1&1+a_{n} \end{vmatrix}= \begin{vmatrix}1&1&1&1&1&1&\\-1&a_{1} &0 &...& 0& 0\\-1& 0& a_{2} &... & 0&0\\ ... &... & ...&... &...&... \\-1&0&0&...&a_{n-1} &0\\-1&0& 0&...&0&a_{n} \end{vmatrix} \Rightarrow
D=∣∣∣∣∣∣∣∣∣∣∣∣100...0011+a11...11111+a2...111...............111...1+an−11111...11+an∣∣∣∣∣∣∣∣∣∣∣∣=∣∣∣∣∣∣∣∣∣∣∣∣1−1−1...−1−11a10...0010a2...001...............100...an−10100...0an∣∣∣∣∣∣∣∣∣∣∣∣⇒
⇒ ∣ 1 + 1 a 1 + 1 a 2 + . . . + 1 a n 1 1 1 1 1 0 a 1 0 . . . 0 0 0 0 a 2 . . . 0 0 . . . . . . . . . . . . . . . . . . 0 0 0 . . . a n − 1 0 0 0 0 . . . 0 a n ∣ = ( 1 + 1 a 1 + 1 a 2 + . . . + 1 a n ) a 1 a 2 . . . a n \Rightarrow \text{ } \text{ } \text{ } \begin{vmatrix}1+\frac{1}{a_{1}}+\frac{1}{a_{2}}+...+\frac{1}{a_{n}}&1&1&1&1&1&\\0&a_{1} &0 &...& 0& 0\\0& 0& a_{2} &... & 0&0\\ ... &... & ...&... &...&... \\0&0&0&...&a_{n-1} &0\\0&0& 0&...&0&a_{n} \end{vmatrix} =(1+\frac{1}{a_{1}}+\frac{1}{a_{2}}+...+\frac{1}{a_{n}})a_{1}a_{2}...a_{n} ⇒ ∣∣∣∣∣∣∣∣∣∣∣∣1+a11+a21+...+an100...001a10...0010a2...001...............100...an−10100...0an∣∣∣∣∣∣∣∣∣∣∣∣=(1+a11+a21+...+an1)a1a2...an
注意:加边法不能改变原行列式的值
例5:反对称行列式
反对称行列式描述: 主对角线全为0, 上下位置对应成相反数(
a
i
j
=
−
a
j
i
a_{ij} = - a_{ji}
aij=−aji)
对称行列式描述:主对角线没有要求,上下位置相等(
a
i
j
=
a
j
i
a_{ij} = a_{ji}
aij=aji)
定理: 奇数阶的反对称行列式值为0,证明如下(假使为3阶):
D = ∣ 0 a b − a 0 c − b − c 0 ∣ = ( − 1 ) 3 ∣ 0 − a − b a 0 − c b c 0 ∣ = − D T = − D ⇒ D = 0 D = \begin{vmatrix}0 & a & b \\ -a & 0 & c \\ -b& -c& 0\end{vmatrix} = (-1)^3 \begin{vmatrix}0 & -a & -b \\ a & 0 & -c \\ b& c& 0\end{vmatrix} = - D^{T} = -D \text{ } \text{ } \text{ } \Rightarrow \text{ } \text{ } \text{ } D = 0 D=∣∣∣∣∣∣0−a−ba0−cbc0∣∣∣∣∣∣=(−1)3∣∣∣∣∣∣0ab−a0c−b−c0∣∣∣∣∣∣=−DT=−D ⇒ D=0
定理:偶数阶的反对称行列式的值不变(哈哈哈,其实就是废话,一个行列式的值当然等于其本身)
D
=
∣
0
a
b
c
−
a
0
d
e
−
b
−
d
0
f
−
c
−
e
−
f
0
∣
=
(
−
1
)
4
D
T
=
D
D = \begin{vmatrix}0 & a & b & c\\ -a & 0 & d &e\\ -b& -d& 0 &f \\ -c & -e&-f &0\end{vmatrix} = (-1)^{4}D^{T} = D
D=∣∣∣∣∣∣∣∣0−a−b−ca0−d−ebd0−fcef0∣∣∣∣∣∣∣∣=(−1)4DT=D
至此关于行列式计算有关的梳理就全部完毕了,下一部分将介绍范德蒙德行列式和克莱姆法则