前言·参考资料
学完某个知识的时候似乎会进入贤者时间。
参考资料:
《信息学竞赛中的线性代数》 -- 董克凡
《线性代数》 -- __debug
《OI综合题单》 -- command_block
行列式
矩阵 (A) 的行列式用 (|A|) 或 ({ m det}(A)) 表示。
定义
对于一个 n*n 的矩阵 (A) , (|A| = sumlimits_{sigma}sign(sigma)a_{1,sigma_1}a_{2,sigma_2}cdots a_{n,sigma_n}) , 其中 (sigma) 为 n 阶排列, (sign(sigma)egin{cases}-1, ;; sigma的逆序对数是奇数 \ +1, ;; sigma的逆序对数是偶数1end{cases}) 。
等价定义
其中, (M_{i,j}) 为矩阵 (A) 删去第 i 行与第 j 列后的 n-1 阶矩阵的行列式的值, 称为 A 的余子式。(删去某一行后, 要以被删去行的前一行和后一行每列对接的方式拼接, 删去列类似)
例子
对于二元一次方程组
其解可表示为 (x_1 = dfrac{b_1a_{22}-b_2a_{12}}{a_{11}a_{12}-a_{12}a_{21}}) , (x_2=dfrac{b_2a_{11}-b_1a_{21}}{a_{11}a_{22}-a_{12}a_{21}}) 。
用行列式来表示 (a_{11}a_{12}-a_{12}a_{21}) :
用行列式来表示解:
性质
-
(|A| = |A^T|)
-
(|I| = 1), 推广:(left|left[egin{array}{c} lambda_1 & & 0\ & ddots & \ 0& & lambda_nend{array} ight] ight| = prodlimits_{i=1}^n lambda_i) 。((I) 是矩阵乘法的单位元, 称为单位矩阵, 就是除了左上到右下那条对角线都为 1 之外, 其他元素都为 0 的矩阵)
-
(|A*B| = |A| * |B|)
-
(left|left[egin{array}{cccc} A & 0 \ 0 & B end{array} ight] ight| = |A|*|B|)
-
若矩阵某一行或某一列的数都表示为两数之和, 则可进行分解:
(left|left[egin{array}{cccc} a_{11}+b_{11} & cdots & a_{1n}+b{1n} \ a_{21} & cdots & a_{2n} \ vdots & ddots & vdots \ a_{n1} & cdots & a_{nn}end{array} ight] ight| = left|left[egin{array}{cccc} a_{11} & cdots & a_{1n} \ a_{21} & cdots & a_{2n} \ vdots & ddots & vdots \ a_{n1} & cdots & a_{nn}end{array} ight] ight| + left|left[egin{array}{cccc} b_{11} & cdots & b_{1n} \ a_{21} & cdots & a_{2n} \ vdots & ddots & vdots \ a_{n1} & cdots & a_{nn}end{array} ight] ight|)
-
对矩阵的某一行或某一列同乘一个数 k 后, 行列式变为原矩阵行列式的 k 倍。
-
把矩阵的某一行加上另一行的若干倍或把矩阵某一列加上另一列的若干倍, 行列式不变
-
上三角矩阵 满足当 (i>j) 时, (a_{ij}=0), 下三角矩阵 满足当 (i<j) 时, (a_{i,j}=0) , 对于这两种矩阵, 行列式为主对角线上元素的乘积。
-
互换矩阵的某两行或某两列, 行列式变成原矩阵行列式的 -1 倍, 从这个性质推出, 如果矩阵有某两行或某两列相等, 则其行列式为 0 .
求值
利用性质 6~9 , 可以用高斯消元求矩阵的行列式。
附录:性质的证明
-
套第一个定义,显然。
-
设 (A={a_{ij}}) , (B = {b_{ij}}) , 则:
[|A*B| = sumlimits_{sigma}sign(sigma)[sumlimits_{k=1}^n a_{1k}*b_{ksigma_1}]*[sumlimits_{k=1}^n a_{2k}*b_{ksigma_2}]*cdots*[sumlimits_{k=1}^n a_{nk}*b_{ksigma_n}] \ = cdots \ =[sumlimits_{sigma}sign(sigma)a_{1,sigma_1}a_{2,sigma_2}cdots a_{n,sigma_n}] * [sumlimits_{sigma}sign(sigma)b_{1,sigma_1}b_{2,sigma_2}cdots b_{n,sigma_n}] ]我不会证了。
-
套第一个定义展开 (|A|*|B|) , 显然。
-
这个是下面几个的基础, 证明了这个, 下面几个证明行的情况成立就行了。这个其实比较显然, 要证明 (sumlimits_{sigma}sign(sigma)a_{1,sigma_1}a_{2,sigma_2}cdots a_{n,sigma_n} = sumlimits_{sigma}sign(sigma)a_{sigma_1,1}a_{sigma_2,2}cdots a_{sigma_n,n})
, 观察 (a_{1,sigma_1}a_{2,sigma_2}cdots a_{n,sigma_n}) , 把这些东西按照第二个下标(即 (sigma_i))从小到大排序, 就成了 (a_{eta_1,1}a_{eta_2,2}cdots a_{eta_n,n}) , 如果 (sigma_i) 和 (sigma_j) 为逆序对, 排序后它们的第一个下标 (j) 和 (i) 也必然构成逆序对。 然后就比较显然了。
- 挺显然的
- 依然是挺显然的
- 根据 4. 和 8. 构造即可
- 显然
- 按照定义式一看一看, 找找对应关系, 也很显然