行列式的定义

逆序数

设 `i_1 cdots i_n` 是 `1 cdots n` 的一个排列, 即 `1 cdots n` 到自身的双射. 如果存在 `j lt k` 使得 `i_j gt i_k`, 则称 `(i_j, i_k)` 是该排列的一对逆序. 该排列的所有逆序对的数目称为它的逆序数, 记为 `tau(i_1 cdots i_n)`. 例如排列 `321` 中的逆序有 `(3,2)`, `(3,1)`, `(2,1)`, 因此逆序数为 `3`. 我们可以用下面的朴素算法枚举逆序: 从左向右扫描这个排列, 对每个数字, 列出它前面比它大的数字:
sum(L[j] > L[k] for k in range(len(L)) for j in range(k))

冒泡排序 交换排列中两项位置的操作称为对换. 事实上, 一个排列 `i_1 cdots i_n` 经过 `tau(i_1 cdots i_n)` 次对换可以变得有序, 即变成从小到大的排列.

在冒泡排序的每一步中, 检查排列中是否存在相邻两项使得 `i_j gt i_(j+1)` 并交换这两项的位置. 假如不存在这样的两项, 则排序已经完成. 由于我们的每个对换操作都使得逆序数减 1, 所以从开始状态到终止状态 (逆序数为 0) 恰好经历了 `tau(i_1 cdots i_n)` 次对换.

仍以 `321` 为例, 它的排序过程如下: `321 to 231 to 213 to 123`. 一共 3 次对换. 上述排序过程并不是唯一的, 也未必是对换次数最少的. 例如对于 `321`, 直接交换 `1` 和 `3` 就得到 `123`. 然而两种排序方案所用的对换次数都是奇数. 事实上, 它的任一基于对换的排序方案, 所涉及的对换次数都是奇数. 我们引入排列的奇偶性概念:

称一个排列为奇排列, 如果它的逆序数是奇数. 偶排列的定义类似.

任意对换都改变排列的奇偶性.

假设 `j lt k`, 考虑 `i_j` 的移动造成的逆序数变化. 由于 `i_j` 的新位置是 `k`, 那么对原位置在 `j+1` 到 `k-1` 的所有数, 若它小于 `i_j`, 则逆序数减 1, 若它大于 `i_j`, 则逆序数加 1. 同理 `i_k` 的移动也造成原位置在 `j+1` 到 `k-1` 的所有数逆序数要么减 1, 要么加 1. 前面这两部分正好抵消, 并不改变排列的奇偶性. 现在考虑 `i_j, i_k` 两数之间形成的逆序. 显然交换二者要么使逆序数减 1, 要么加 1, 其结果都是改变排列的奇偶性.

一个排列是奇排列当且仅当它经过奇数次对换变得有序.

由冒泡排序知道, 奇排列可以通过奇数次对换变得有序. 由对换改变排列的奇偶性知道, 如果一个奇排列经过 `m` 次对换变得有序, 那么 `m` 必为奇数.

行列式

引入记号 `sigma(i_1 cdots i_n) := (-1)^(tau(i_1 cdots i_n))`, 则 `i_1 cdots i_n` 是奇排列当且仅当 `sigma(i_1 cdots i_n) = -1`.

设 `bm A = (a_(i j))` 是 `n` 阶矩阵, 则它的行列式 (determinant) 是一个数, 定义为 `|bm A| := "det"bm A := |a_11, cdots, a_(1n); vdots, ,vdots; a_(n1), cdots, a_(n n)|` `:= sum_(i_1 cdots i_n in S_n) sigma(i_1 cdots i_n) a_(1 i_1) cdots a_(n i_n)`. 其中 `S_n` 代表 `1 cdots n` 的全部 `n!` 个排列.
上式表明: 任取一个 `1 cdots n` 的排列, 从矩阵 `bm A` 的第 `k` 行取出第 `i_k` 个元素, 将每行取出的元素相乘, 就得到行列式中的一项, 它的正负号由排列的奇偶性决定. 由于每个乘积是由排列产生的, 所以乘积中的每个因子都来自 `bm A` 的不同行, 也来自不同列.

  1. 一阶行列式 `"det" [a] = a`.
  2. 二阶行列式 `|a,b;c,d| = a d - b c`.
  3. 三阶行列式 `|a_11, a_12, a_13; a_21, a_22, a_23; a_31, a_32, a_33|` `= a_11 a_22 a_33 + a_12 a_23 a_31 + a_13 a_21 a_32` `- a_11 a_23 a_32 - a_12 a_21 a_33 - a_13 a_22 a_31`.

`|bm A^(sf T)| = |bm A|`.

`bm A^(sf T)` 的行列式要从矩阵 `bm A` 的第 `i_k` 行取出第 `k` 个元素. 这恰好是排列 `i_1 cdots i_n` 的逆. 但排列和它的逆具有相同的奇偶性: 以多少次对换将一个排列变得有序, 就能以相同次数的对换将 `1 cdots n` 还原为原来的排列. 所以根据定义, `|bm A^(sf T)| = |bm A|`.

这个命题表明, 行列式关于行和列是对称的. 任何一个关于行列式的定理, 将其中的“行”逐字换成“列”, “列”逐字换成“行”, `a_(i j)` 逐字换成 `a_(j i)`, 得到的新命题仍然成立.

子式

行列式的上述定义对于计算是颇不方便的. 下面介绍行列式的展开, 它以递归的方式进行计算, 逐步降低行列式的阶.

    子式, 余子式和代数余子式 令 `D` 为一个 `n` 阶行列式, `1 le k le n`.
  1. 在 `D` 上任意选定 `k` 行 `k` 列, 位于这些行和列的交点上的 `k^2` 个元素按原来的 "上下左右" 的次序组成一个 `k` 阶行列式 `M`, 称为 `D` 的一个 `k` 阶子式.
  2. 若 `k lt n`, 在 `D` 中划去这 `k` 行 `k` 列后, 余下的元素按原来的次序组成一个 `n-k` 阶行列式 `N`, 称为 `M` 在 `D` 中的余子式. 由定义, `M` 也是 `N` 的余子式, 因此又称 `M, N` 为一对互余的子式.
  3. 如果 `M` 的各行, 列在原行列式 `D` 中的指标为 `i_1, i_2, cdots, i_k` 和 `j_1, j_2, cdots, j_k`, 则称 `(-1)^(sum_(t=1)^k (i_t + j_t)) N` 为 `M` 在 `D` 中的代数余子式. 特别当 `M` 是位于 `i` 行 `j` 列的一阶子式时, 它的代数余子式就是 `(-1)^(i+j) N`.

伴随矩阵

令 `bm A = (a_(i j))_(n xx n)`, 以 `A_(i j)` 记元素 `a_(i j)` 的代数余子式, 则对任意 `i, j in 1 cdots n`, `sum_(k=1)^n a_(i k) A_(j k) = delta_(i j) |bm A|`.

若 `i = j`, 等式左边等于 `|bm A|` 沿第 `i` 行展开的结果, 自然等于右边. 若 `i != j`, 等式左边等于将 `|bm A|` 的第 `j` 行用第 `i` 行的拷贝替换后, 沿第 `j` 行展开的结果. 由于这个替换后的行列式的第 `j` 行与第 `i` 行完全相同, 所以它等于零.

如果 `|bm A| != 0`, 则称方阵 `bm A` 非奇异.

设 `bm A` 是阶数 `ge 2` 的方阵, `bm A^** := [ A_11,A_21,cdots,A_(n1); A_12,A_22,cdots,A_(n2); vdots,vdots, ,vdots; A_(1n),A_(2n),cdots,A_(n n); ]` 称为 `bm A` 的伴随矩阵 (adjugate matrix), 也记为 `"adj" bm A`. 注意伴随矩阵的 `i j` 元等于 `a_(j i)` 的代数余子式.

方阵逆的结构公式 方阵 `bm A` 可逆当且仅当它非奇异, 此时有 `bm A^-1 = (bm A^**)/|bm A|`. 这个公式适用于计算二阶矩阵的逆: `[a,b;c,d]^-1` `= 1/(a d-b c) [d,-b;-c,a]`, 但是当矩阵的阶数较大时, 计算量很大, 所以并不适用.

"`rArr`": 若 `bm A` 可逆, 则存在方阵 `bm B` 使得 `bm(A B) = bm(B A) = bm I`, 从而 `|bm A| |bm B| = 1`, 所以 `|bm A| != 0`.
"`lArr`": 若 `bm A` 非奇异, 利用引理计算得, `bm (A A^**) = bm (A^** A) = |bm A| bm I`, 从而得到 `bm A^-1`.

从而得到第一章注释中的推论:

若方阵 `bm A, bm B` 满足 `bm(A B) = bm I`, 则 `bm A, bm B` 都可逆, 事实上它们互逆.

若 `bm A_(n xx n)` 可逆, 则由 `bm A^** bm A = |bm A|bm I` 得到 `|bm A^**| = |bm A|^(n-1)`.

若 `bm A` 不可逆, 则 `|bm A^**| = 0`. 我们将在第三章利用秩的理论给出一个证明.

Cramer 法则

行列式的一个重大应用是求解 `n` 元线性方程组, 我们从一个例子入手:

三元一次方程组的 Cramer 法则 [2018.10] 设 `{ a_11 x_1 + a_12 x_2 + a_13 x_3 = b_1; a_21 x_1 + a_22 x_2 + a_23 x_3 = b_2; a_31 x_1 + a_32 x_2 + a_33 x_3 = b_3; :}` 于是 `|b_1, a_12, a_13; b_2, a_22, a_23; b_3, a_32, a_33|` `= |a_11 x_1 + a_12 x_2 + a_13 x_3, a_12, a_13; a_21 x_1 + a_22 x_2 + a_23 x_3, a_22, a_23; a_31 x_1 + a_32 x_2 + a_33 x_3, a_32, a_33|`. 将 2, 3 列的合适倍数加到第 1 列, 就可消去第 1 列的 `x_2, x_3` 项, 然后提出第 1 列的因子 `x_1`, 得到 上式 `= |a_11, a_12, a_13; a_21, a_22, a_23; a_31, a_32, a_33| x_1`. 最后, 系数行列式不为零时, 将它除到分母上得到 `x_1 = |b_1, a_12, a_13; b_2, a_22, a_23; b_3, a_32, a_33| // |a_11, a_12, a_13; a_21, a_22, a_23; a_31, a_32, a_33|`. 本节我们将这种方法推广到 `n` 元线性方程组.

齐次线性方程组解的唯一性条件 设 `bm A in bbb P^(n xx n)`, `bm X, bb 0 in bbb P^(n xx 1)`, 则齐次线性方程组 `bm(A X) = bb 0` 存在非零解当且仅当其系数矩阵 `bm A` 奇异.

    首先指出, 原方程组总是有解 `bm X = bb 0`, 称为零解.
  1. 设 `bm A` 非奇异, 即 `bm A` 可逆. 设存在 `bm X` 满足 `bm(A X) = bb 0`, 则 `bm X = bm(A^-1 A X) = bm A^-1 bb 0 = bb 0`. 即原方程只有零解.
  2. 设 `bm A` 奇异, 考虑 `bm A` 的等价标准形 `bm overset ~ A`. 我们知道, 方程组在增广矩阵的行初等变换下, 以及不涉及最后一列的列初等变换下保持同解 (涉及列初等变换时, 同解是在适当重排变量次序的意义下的). 注意到齐次线性方程组的增广矩阵的最后一列全为零, 从而原方程组可以通过上述变换变成 `bm(overset ~ A X) = bb 0`, 即它们同解.
    因为初等变换不能将一个矩阵的行列式从零变成非零, 也不能将它从非零变成零, 所以 `|bm A| = 0` 当且仅当 `bm overset ~ A` 含有零列. 设 `bm overset ~ A` 的第 `j` 列全为零, 则单位列向量 `bm epsi_j` 就是 `bm(overset ~ A X) = bb 0` 的一个非零解, 从而也是原方程组的一个非零解.

用逆矩阵求解线性方程组 设 `bm A in bbb P^(n xx n)`, `bm X, bm B in bbb P^(n xx 1)`, 则线性方程组 `bm(A X) = bm B` 有唯一解当且仅当 `bm A` 可逆. 此时解为 `bm X = bm (A^-1 B)`.

  1. `lArr`: 设 `bm A` 可逆, `bm X = bm A^-1 bm B` 即为方程组的一个解, 这证明了解的存在性. 设又有 `bm Y` 满足 `bm(A Y) = bm B`, 则 `bm Y = bm(A^-1 A Y) = bm(A^-1 B) = bm X`. 这证明了解的唯一性.
  2. `rArr`: 设 `bm X` 是方程组 `bm(A X) = bm B` 的唯一解, 反设 `bm A` 不可逆, 即 `bm A` 奇异, 则由, 存在 `bm Y != bb 0` 使得 `bm(A Y) = bb 0`. 从而 `bm(A(X+Y)) = bm(A X) + bm(A Y) = bm B`, 而 `bm(X+Y) != bm X`, 与解的唯一性矛盾.

Cramer 法则 (用行列式求解线性方程组) 由上一定理知道, 线性方程组 `bm(A X) = bm B` 有唯一解当且仅当 `|bm A| != 0`, 此时有: `bm X = 1/|bm A| (|bm A_1|, |bm A_2|, cdots, |bm A_n|)^T`, 其中 `bm A_i` 是用 `bm B` 取代 `bm A` 的第 `i` 列所得的矩阵, `i in 1 cdots n`.

首先将 `|bm A_i|` 按第 `i` 列展开得 `|bm A_i| = (A_(1 i), A_(2 i), cdots, A_(n i)) bm B`. 从而 `1/|bm A| (|bm A_1|, |bm A_2|, cdots, |bm A_n|)^T` `= 1/|bm A| [ (A_11, A_21, cdots, A_(n1))bm B; (A_12, A_22, cdots, A_(n2))bm B; vdots; (A_(1n), A_(2n), cdots, A_(n n))bm B; ]` `= 1/|bm A| bm A^** bm B` `= bm(A^-1 B)`.

设 `bm epsi_i` 为第 `i` 个分量等于 1, 其余分量等于 0 的 `n` 维单位列向量, 则 `bm A` 的 `n` 个列向量可以写成 `bm(A epsi_1), bm(A epsi_2), cdots, bm(A epsi_n)`. 若存在列向量 `bm X = (x_1, x_2, cdots, x_n)^T` 使得 `bm(A X) = bm B`, 则对任意 `i in [n]`, `bm A(bm epsi_1, cdots, bm epsi_(i-1), bm X, bm epsi_(i+1), cdots, bm epsi_n)` `= (bm(A epsi_1), cdots, bm(A epsi_(i-1)), bm(A X), bm(A epsi_(i+1)), cdots, bm(A epsi_n))` `= bm A_i`. 上式两边取行列式, 注意 `|bm epsi_1, cdots, bm epsi_(i-1), bm X, bm epsi_(i+1), cdots, bm epsi_n| = x_i`, `x_i = |bm A_i|/|bm A|`, `quad i in [n]`.

`bm A = (bm alpha_1, bm alpha_2, cdots, bm alpha_n)`, 若存在列向量 `bm X = (x_1, x_2, cdots, x_n)^T` 使得 `bm(A X) = bm B`, 则对任意 `i in [n]`, `|bm A_i|` `= |bm alpha_1, cdots, bm alpha_(i-1), bm(A X), bm alpha_(i+1), cdots, bm alpha_n|` `= |bm alpha_1, cdots, bm alpha_(i-1), sum_(j=1)^n x_j bm alpha_j, bm alpha_(i+1), cdots, bm alpha_n|` `= sum_(j=1)^n |bm alpha_1, cdots, bm alpha_(i-1), bm alpha_j, bm alpha_(i+1), cdots, bm alpha_n| x_j` `= |bm A| x_i`.

用 Cramer 法则求解二元一次方程组 `{ a x + b y = u; c x + d y = v; :}` 得 `(x,y) = 1/(a d-b c)(|u,b;v,d|, |a,u;c,v|)`. 但当方程组规模较大时, Cramer 法则的计算量很大.

Laplace 定理*

[来自 简书]

行列式 `D` 的任一子式 `M` 与它的代数余子式 `A` 的乘积中的每一项都是 `D` 的展开式中的一项, 且符号一致.

  1. 假设 `M` 是 `D_(n xx n) = |a_(ij)|` 的左上方的 `k` 阶子式, 即 `M` 由 `D` 的前 `k` 行和前 `k` 列交叉处的元素组成, 则 `M` 的每一项可以写作 `(-1)^(tau(i_1 i_2 cdots i_k))` `a_(1 i_1) a_(2 i_2) cdots a_(k i_k)`, 其中 `i_1 i_2 cdots i_k` 是 `1, 2, cdots, k` 的一个排列. 而 `M` 的余子式 `N` 的每一项可以写作 `(-1)^(tau(j_1 j_2 cdots j_(n-k)))` `a_(k+1, j_1) a_(k+2, j_2) cdots a_(n, j_(n-k))`, 其中 `j_1 j_2 cdots j_(n-k)` 是 `k+1, k+2, cdots, n` 的一个排列. 两个通项相乘得 `(-1)^(tau(i_1 i_2 cdots i_k j_1 j_2 cdots j_(n-k))` `a_(1 i_1) a_(2 i_2) cdots a_(k i_k)` `a_(k+1, j_1) a_(k+2, j_2) cdots a_(n, j_(n-k))`. 上式再乘以代数余子式的符号 `(-1)^(sum_(t=1)^k (t+t)) = 1` 即为 `D` 的展开式中的一项, 且符号一致.
  2. 下证一般情形, 设 `M` 位于 `D` 的第 `i_1, i_2, cdots, i_k` 行, 第 `j_1, j_2, cdots j_k` 列, 其中 `i_1 lt i_2 lt cdots lt i_k`, `j_1 lt j_2 lt cdots lt j_k`. 作行列的对换, 将 `M` 移到 `D` 的左上角: 先把第 `i_1` 行依次与第 `i_1-1, i_1-2, cdots, 2, 1` 行对换, 经过 `i_1-1` 次对换而将它换到第 1 行. 再将第 `i_2` 行依次与第 `i_2-1, i_2-2, cdots, 2` 行对换, 经过 `i_2-2` 次对换而将它换到第 2 行... 如此下去, 经过 `sum_(t=1)^k (i_t-t)` 次对换, 把第 `i_1, i_2, cdots, i_k` 行换到第 `1, 2, cdots, k` 行. 类似地经过 `sum_(t=1)^k (j_t-t)` 次列对换, 可将第 `j_1, j_2, cdots, j_k` 列换到第 `1, 2, cdots, k` 列. 从而变换前后, 行列式 `D` 的值相差一个符号 `(-1)^(sum_(t=1)^k (i_t+j_t))`. 恰为 `M` 的代数余子式前的符号因子, 因此 `M` 与它的代数余子式乘积中的每一项都是 `D` 的展开式中的一项, 且符号一致.

Laplace 定理 `n` 阶行列式的值等于它的任意 `k` (`1 le k le n-1`) 行 (列) 中所含有的全体 `k` 阶子式与相应代数余子式的乘积的和.

由行列式行和列的对称性, 只证行的情形. 设 `n` 阶行列式 `D` 中取定 `k` 行后得到的子式为 `M_i`, 相应的代数余子式为 `A_i`, `i = 1, 2, cdots, s`. 下证 `D = sum_(i=1)^s M_i A_i`. 显然, `M_i A_i` 中每一项都是 `D` 的展开式中的一项且符号一致, 且 `i!=j` 时, `M_i A_i` 与 `M_j A_j` 无公共项. 因此要证结论成立, 只需指出等式左右含展开式的项数相等. 由于 `n` 阶行列式的展开式有 `n!` 项, 故等式左端有 `n!` 项. 而由子式的取法知 `s = (n;k)`, 故等式右端的项数为 `(n;k) k! (n-k)! = n!`. 证毕.

[来自 fran] 设 `bm A, bm B` 是 `n` 阶矩阵, `bm C = bm (A B)`.
由 Cramer 法则知道, 如果将 `bm A` 的第 `i` 列换成 `bm C` 的第 `j` 列, 所得的行列式等于 `b_(i j) * |bm A|`.
推广: 设 `i_1 cdots i_s` 是不同的 `s` 列, `j_1 cdots j_s` 也是不同的 `s` 列, 将 `bm A` 的第 `i_1 cdots i_s` 列分别换成 `bm C` 的第 `j_1 cdots j_s` 列, 所得的行列式等于 `|bm B_s| * |bm A|`, 其中 `|bm B_s|` 是这样一个行列式: 它的第 `k` 行第 `l` 列元素等于 `bm B` 的第 `i_k` 行第 `j_l` 列元素.

    [来自群友 澄]
  1. `s = 1` 的情形: 替换后的矩阵可以写为 `bm A bm E_j^i`, 其中 `bm E_j^i` 是将单位矩阵的第 `i` 列换成 `bm B` 的第 `j` 列所得的矩阵: `bm E_j^i = [ 1, , b_(1j); , ddots, vdots; , , b_(i j); , , vdots, ddots; , , b_(n j), , 1; ]`. 沿第 `i` 列展开易知 `|bm E_j^i| = b_(i j)`.
  2. 一般情形: 替换后的矩阵可以写为 `bm A bm E_(j_1 cdots j_s)^(i_1 cdots i_s)`, 后者是将单位矩阵的第 `i_1 cdots i_s` 列换成 `bm B` 的第 `j_1 cdots j_s` 列所得的矩阵. 用 Laplace 定理沿 `i_1 cdots i_s` 列展开, 分两种情况: 对于 `i_1 cdots i_s` 行确定的 `s` 阶子式 `M_s`, 它的余子式不为零; 其它子式的余子式皆因为主对角线出现空缺而等于零.
  3. 现在确定 `M_s` 的代数余子式. 它的绝对值是 `1`, 而符号是 `(-1)^(sum_(t=1)^s (i_t+i_t)) = +1`.
  4. 现在确定行列式 `M_s` 本身. 由题意, 换列操作与 `i_1 cdots i_s` 的次序无关, 不妨设 `i_1 lt cdots lt i_s`, 即有 `M_s =` `|b_(i_1 j_1), cdots, b_(i_1 j_s); vdots, ,vdots; b_(i_s j_1), cdots, b_(i_s j_s)|` 但 `M_s` 的第 `k` 行第 `l` 列元素正好是 `b_(i_k j_l)`, 于是 `M_s = |bm B_s|`.

杂例

`R_n = | , , ,1; , ,1, ; ,⋰, , ; 1, , , ; |_(n xx n) = (-1)^((n(n-1))/2)`. 设 `bm R_n` 是这个行列式对应的矩阵, 左乘 (右乘) `bm R_n` 的效果相当于将原矩阵的各行 (列) 倒排.

鸡爪形行列式 对正整数 `n ge 2`, `| a,x,cdots,x; y,z, , ; vdots, ,ddots, ; y, , ,z; |_n` `= { (a z-(n-1)x y) z^(n-2), if z != 0; -x y, if z = 0 and n = 2; 0, if z = 0 and n gt 2; :}`

`z != 0` 时, 将后面各列的 `-y/z` 倍加到第一列, 原式等于 `| a-(n-1)x y z^-1,x,cdots,x; ,z, , ; , , ddots, ; , , ,z; |`. 于是得到第一种情形. 另外两种情形是显然的.

对正整数 `n ge 2`, `| x,y,cdots,y; y,x,cdots,y; vdots,vdots, ,vdots; y,y,cdots,x; |_n = (x-y)^(n-1) (x+(n-1)y)`.

先将第一行的 -1 倍加到其余各行, 再将其余各列加到第一列, 原式等于 `| x,y,cdots,y; y-x,x-y,cdots,0; vdots,vdots, ,vdots; y-x,0,cdots,x-y; |` `= | x+(n-1)y,y,cdots,y; 0,x-y,cdots,0; vdots,vdots, ,vdots; 0,0,cdots,x-y; |` `= (x-y)^(n-1) (x+(n-1)y)`.

加边法. 此法需要结合线性递推式来求解, 可能不是最简便的, 但它的通用性较强. 设原式等于 `D_n`, 则 `D_n =` `| 1,-y,-y,cdots,-y; 0,x,y,cdots,y; 0,y,x,cdots,y; vdots,vdots,vdots, ,vdots; 0,y,y,cdots,x; |_(n+1)` `=| 1,-y,-y,cdots,-y; 1,x-y,0,cdots,0; 1,0,x-y,cdots,0; vdots,vdots,vdots, ,vdots; 1,0,0,cdots,x-y; |_(n+1)`. 沿最后一列展开, 再将 `-y` 的余子式沿最后一行展开, `D_n = (x-y) D_(n-1) + (-1)^(n+1+1) (-y) (-1)^(n+1) (x-y)^(n-1)` `= (x-y) D_(n-1) + y(x-y)^(n-1)`. 两边同除以 `(x-y)^(n-1)`, `D_n/(x-y)^(n-1) = D_(n-1)/(x-y)^(n-2) + y`. 于是 `D_n = (x-y)^(n-1)(D_1/(x-y)^0 + (n-1) y)` `= (x-y)^(n-1) (x+(n-1)y)`.

对正整数 `n ge 2`, `y != z`, 有 `| x,y,cdots,y; z,x,cdots,y; vdots,vdots,,vdots; z,z,cdots,x; |_n` `= (z(x-y)^n - y(x-z)^n)/(z-y)`.

设原式为 `D_n`, 则 `D_n =` `| z, y, y, cdots, y; z, x, y, cdots, y; z, z, x, cdots, y; vdots, vdots, vdots,,vdots; z, z, z, cdots, x; |` `+ | x-z, y, y, cdots, y; 0, x, y, cdots, y; 0, z, x, cdots, y; vdots, vdots, vdots,,vdots; 0, z, z, cdots, x; |` `= | z, 0, 0, cdots, 0; z, x-y, 0, cdots, 0; z, z-y, x-y, cdots, 0; vdots, vdots, vdots,,vdots; z, z-y, z-y, cdots, x-y; | + (x-z) D_(n-1)` `= z(x-y)^(n-1) + (x-z) D_(n-1)`. 将 `y, z` 互换得 `D_n = y(x-z)^(n-1) (x-z) D_(n-1)`. 由两式得 `D_n = (z(x-y)^n - y(x-z)^n)/(z-y)`.

对正整数 `n ge 2`, `| 1, 2, cdots, n-1, n; 2, 3, cdots, n, 1; vdots, vdots, , vdots, vdots; n-1, n, cdots, n-3, n-2; n, 1, cdots, n-2, n-1; | = (-1)^((n(n-1))/2) (n^(n-1) (n+1))/2`.

[来自 颓废] 因为行列式行和相等, 我们将各列加到第一列. 原式等于 `(n(n+1))/2 | 1, 2, 3, cdots, n-1, n; 1, 3, 4, cdots, n, 1; 1, 4, 5, cdots, 1, 2; vdots, vdots, vdots, , vdots, vdots; 1, n, 1, cdots, n-3, n-2; 1, 1, 2, cdots, n-2, n-1; |_n` `= (n(n+1))/2 | 1, 0, 0, cdots, 0, 0; 1, 1, 1, cdots, 1, 1-n; 1, 2, 2, cdots, 2-n, 2-n; vdots, vdots, vdots, , vdots, vdots; 1, n-2, -2, cdots, -2, -2; 1, -1, -1, cdots, -1, -1; |_n` `= (n(n+1))/2 | 1, 0, cdots, 0, -n; 2, 0, cdots, -n, -n; vdots, vdots, , vdots, vdots; n-2, -n, cdots, -n, -n; -1, 0, cdots, 0, 0; |_(n-1)` `= (n(n+1))/2 R_(n-1) (-1)^(n-1) n^(n-2)`. 其中 `R_(n-1)` 表示将行列式各行倒排.

三对角形行列式 `n` 为正整数, 求 `| y,z; x,y,z; ,x,ddots,ddots; , ,ddots,y,z; , , ,x,y; |_n`

记原式等于 `D_n`, 按第一行展开, `D_n = y D_(n-1) - z| x,z,cdots,0; 0,,,; vdots,,D_(n-2),; 0,,,; |`, 上面的行列式再按第一列展开得 `D_n = y D_(n-1) - x z D_(n-2)`. 求解这个线性递推式. 若 `x z = 0`, 方程退化为 `D_n = y D_(n-1)`, 从而 `D_n = y^n`. 否则解特征方程 `lambda^2 - y lambda + x z = 0` 得 `lambda_(1,2) = (y +- sqrt(y^2-4x z))//2`. `lambda_1 != lambda_2` 时, 通解为 `D_n = c_1 lambda_1^n + c_2 lambda_2^n`,
`c_1 = (D_1 lambda_2-D_2)/(lambda_1(lambda_2-lambda_1))`, `quad c_2 = (D_2-lambda_1 D_1)/(lambda_2(lambda_2-lambda_1))`.
再代入初值 `D_1 = y`, `D_2 = y^2-x z` 即可. `lambda_1 = lambda_2 = y//2` 时, 通解为 `D_n = (c_1 + c_2 n) lambda_1^n`,
`c_1 = 1/lambda_1(2D_1 - D_2/lambda_1)`, `quad c_2 = 1/lambda_1(D_2/lambda_1-D_1)`.
再代入初值得 `c_1 = (x z)/y^2`, `quad c_2 = 2 - (4x z)/y^2`.

友阵的特征多项式 令 `f(x) = sum_(i=0)^n a_i x^i`, `a_n = 1`, 则 `| x,0,cdots,0,a_0; -1,x,cdots,0,a_1; 0,-1,cdots,0,a_2; vdots,vdots, ,vdots,vdots; 0,0,cdots,-1,x+a_(n-1); | = f(x)`.

对 `k = n-1, cdots, 2, 1`, 依次将第 `k+1` 行的 `x` 倍加到第 `k` 行上, 原式等于 `|0, f(x); -bm I_(n-1) ,**|` `= (-1)^(n-1) |f(x), 0; **, -bm I_(n-1)|` `= f(x)`.

Vandermonde 行列式 对正整数 `n ge 2`, `| 1,x_1,cdots,x_1^(n-1); 1,x_2,cdots,x_2^(n-1); vdots,vdots,,vdots; 1,x_n,cdots,x_n^(n-1); | = prod_(1 le i lt j le n) (x_j - x_i)`.

对 `n` 进行归纳证明. `n = 2` 时原式等于 `x_2 - x_1`, 结论成立. 设结论对 `n-1` 成立, 依次将原式第 `i` 列的 `-x_1` 倍加到第 `i+1` 列, `i = n-1, n-2, cdots, 1`, 得到 `| 1,0,cdots,0; 1,x_2-x_1,cdots,x_2^(n-2)(x_2-x_1); vdots,vdots,,vdots; 1,x_n-x_1,cdots,x_n^(n-2)(x_n-x_1); |`. 按第一行展开后, 提出每一行的公因式, 得 `prod_(j=2)^n (x_j-x_1) | 1,cdots,x_2^(n-2); vdots,,vdots; 1,cdots,x_n^(n-2); |`. 由归纳假设, 上式等于 `prod_(1 le i lt j le n) (x_j-x_i)`.

Vandermonde 行列式不等于 0 当且仅当 `x_1, x_2, cdots, x_n` 两两不相等.

求行列式 `| 1, (x_1;1), cdots, (x_1;n-1); 1, (x_2;1), cdots, (x_2;n-1); vdots, vdots, , vdots; 1, (x_n;1), cdots, (x_n;n-1); |`.

将 `(x;k)` 看作关于 `x` 的 `k` 次多项式, 依次将原式的前 `i` 列的某个线性组合加到第 `i+1` 列, 就可以消去 第 `i+1` 列中的低次项, 使其只剩 `i` 次项, `i = 2, 3, cdots, n-1`. 从而得到 `| 1,x_1/(1!),cdots,x_1^(n-1)/((n-1)!); 1,x_2/(1!),cdots,x_2^(n-1)/((n-1)!); vdots,vdots,,vdots; 1,x_n/(1!),cdots,x_n^(n-1)/((n-1)!); |`. 利用 Vandermonde 行列式, 上式等于 `prod_(i=1)^(n-1) (i!)^-1 prod_(1 le i lt j le n) (x_j-x_i)`.

设 `bm A in bbb P^(m xx n)`, `bm B in bbb P^(n xx m)`, 证明: ` |bm I_m - bm (AB)| = |bm I_n, bm B; bm A, bm I_m| = |bm I_m, bm A; bm B, bm I_n| = |bm I_n - bm (BA)|`. 当 `m != n`, 此公式可以用于降阶. 如第一章的 Householder 矩阵的行列式为 `|bm I - 2 bm(alpha alpha^T)|` `= |bm I - 2 bm(alpha^T alpha)|` `= -1`.

  1. 先证第一个等号. 由行列式的相关性质和矩阵的分块乘法, ` |bm I_m - bm (AB)| = |bm I_n, bm O; bm O, bm I_m - bm (AB)|` `= |bm I_n, bm O; -bm A, bm I_m| |bm I_n, bm B; bm A, bm I_m| |bm I_n, -bm B; bm O, bm I_m| = |bm I_n, bm B; bm A, bm I_m|`. 类似可以证明第三个等号.
  2. 再证第二个等号. 先交换左边行列式的前 `n` 列与后 `m` 列, 得到 `|bm B, bm I_n; bm I_m, bm A|`. 这可以通过把后 `m` 列逐列前移 `n` 个位置得到, 因此需要交换 `mn` 次. 再交换它的前 `n` 行与后 `m` 行来得到右边的行列式; 同样需要 `mn` 次交换. 由于交换行/列的次数是偶数, 行列式的值不变.
    正交矩阵 `bm A` 满足 `bm(A^T A) = bm I`, 取行列式知 `|bm A|^2 = 1`. 我们把行列式等于 1 的正交矩阵称为第一类正交矩阵, 行列式等于 -1 的正交矩阵称为第二类正交矩阵.
    现在设 `bm A` 是 `n ge 3` 阶非零实矩阵, 则
  1. `bm A` 是第一类正交矩阵当且仅当 `bm A^T = bm A^**`;
  2. `bm A` 是第二类正交矩阵当且仅当 `bm A^T = -bm A^**`.

只证第一小题的充分性. 于 `bm(A^T A) = bm(A^** A) = |bm A|bm I` 两边取行列式有 `|bm A|^2 = |bm A|^n`. 因为 `bm A` 非零, `0 lt "tr"(bm(A^T A)) = "tr"(|bm A|bm I) = n|bm A|`. 从而 `|bm A| gt 0`, 即 `|bm A| = 1`. 于是 `bm(A^T A) = bm I`, `bm A` 为第一类正交矩阵.

[来自群友 柔, cmc2020 A 类初赛] 有 `2n` 个实数, `n ge 2`. 任意去掉一个数, 剩下的数总能分成和相等的两部分, 证明这些数都是 `0`.

    [来自群友 猫鱼wavebat]
  1. 首先注意到, 对这些数同乘一个非零常数 `k` 并不影响上述性质成立. 我们先假设这些数都是有理数, 同乘一个因子使它们都成为整数.
  2. 假设这些整数中存在一个奇数 `a`, 则去掉它以后剩下的数总和为偶数, 因此所有数的总和 `S` 是一个奇数. 如果去掉的是另一个数 `b != a`, 由于剩下的数总和是偶数, 得知 `b` 也是奇数. 由 `b` 的任意性知道所有这些数都是奇数, 但所有 `2n` 个数的总和是奇数, 矛盾. 因此所有数都是偶数. 但所有这些偶数除以 2, 性质仍应该成立, 这说明它们其实全为零.
  3. 我们已经证明了, 在有理数域中, 下面的 `2n` 阶行列式非零: `|0, ast, cdots, ast; ast, 0, cdots, ast; vdots, vdots, ddots, vdots; ast, ast, cdots, 0|_(2n)` 其中 `ast` 代表 `+-1`. 但切换数域并不影响行列式的值, 因此在实数域中它也是非零的, 故原命题成立.
  4. [来自 柔] 也可以直接证明上述行列式非零: 只需对它模 2, 并证明值为 1 即可. 因为行列式只由加法和乘法组成, 这相当于对所有元素都模 2, 从而所有的 -1 都变为 +1. 由前面的例题知道, 转化后的行列式的值是奇数, 因此非零.