前置

这篇文章有些前置知识我默认读者是知道的, 比如矢量和线性空间(wiki, 知乎)的概念. 具体来讲, 我希望读者能完全理解这句话: “基底通过线性组合张成线性空间”. 但更加重要的是, 我希望读者能够放开胆子, 接受并批判地思考与新的语言与概念. 文中有些地方我特意没有使用书本的符号, 为的就是让读者直接判断他自己到底是在跟着文章思路走还是靠课本里记下的结论硬看. 通过这篇文章, 我希望能有更多人开始 “思考” 和 “创造” 数学, 穿过数学高冷的表面, 看到数学定义背后的 “动机” 和 “深意”, 最终享受数学, 而不是只是跟着课本学点计算.

要知道, 数学家也是人. 一旦你觉得有什么东西是反人类的, 它背后一定是有自己的逻辑. 这里的逻辑, 是数学定义背后数学家们思考的内在的直觉的人的逻辑, 而不完全是死的客观精准的数理逻辑.

建议餐前食用: 3b1b: 发明新数学是怎样一种体验?

餐后或餐中可以结合: 3b1b: 线性代数的本质

比起纯粹的几何直观, 我更看重一种 “符号上的直观”, 也就是说, 你得把这一套数学符号, 当作与生俱来的, 自然的东西. 所谓直观学习, 不是把所有东西都归纳成你的 “直观”, 而是让你能把更多的东西变成你的直观.

鸡汤灌得够多了, 让我们开始吧.

楔积

对一个 $n$ 维的空间, 什么是它里面一个"几何体"的"体积"呢?

所谓"面积"就是 $2$ 维的体积, 所以下面可能我不会很严格地区分这两个词.

想想我们小学时学"面积"的时候, 老师们都是使用"画小方块"的方式来给我们讲解啥是面积的, 比如说下图:

此处应该有图

也就是说, 要定义任意几何体的体积, 我们首先要定义一个 单位立方体. 单位立方体有两个非常重要的性质:

  1. 它是直的.
  2. 它的每一条边是单位的.

在一个 $n$ 维空间里, 假如我们有基底 $e_1, e_2, …, e_n$, 那么我们可以开始定义我们的"单位立方体"了.

我们用 $e_1 \wedge e_2$ 来表示两个基底 $e_1, e_2$ 组成的小 $2$ 维 “单位立方体”. 同理 $e_1 \wedge e_2 \wedge e_3$ 就代表一个 $3$ 维的单位立方体, $e_1 \wedge e_2 \wedge … \wedge e_n$ 就是一个 $n$ 维的单位立方体.

那么我们马上就可以如下定义这个 $\wedge$ 运算的结果:

  1. [结合律] 它应该具有结合律: $e_1 \wedge e_2$ 与 $e_3$ 组成的小立方体应该跟 $e_1$ 和 $e_2 \wedge e_3$ 组成的小立方体是一样的. 即: $(e_1 \wedge e_2) \wedge e_3 = e_1 \wedge (e_2 \wedge e_3)$
  2. [自反性] 两条相同的边组成的"立方体"应该是塌下来的, 退化的一个 “立方体”, 也就是说 $e_i \wedge e_i = 0$. 并且显然地, 我们有: $0 \wedge e_i = 0$ (这里的 $0$ 是零矢量)

特别的, 出于神秘的原因, 我们最好不止是定义 “单位立方体” 而是定义 “带方向的单位立方体”. 于是我们还对$\wedge$定义如下规则:

  1. [反交换律] 交换组成 “立方体” 的两条边, 这个立方体的取向相反. 即: $e_i \wedge e_j = - e_j \wedge e_i$ (你可以认为这个负号就是普通的取反向向量).

当我们有了 “单位立方体” , 我们下一步要做的就是把这些立方体拼起来. 我们如下定义:

  1. 如果一条边有 $k$ 倍的基底那么长, 那么它组合出来的立方体应该是基底立方体的 $k$ 倍.
  2. 如果一条边是由两个不同的基底拼出来的, 那么它组合出来的立方体应该是两个基底立方体加起来.

换句话讲, 我们让楔积是一个 双线性运算:

$$ \begin{aligned} (\alpha a + \beta b) \wedge c = \alpha (a \wedge c) + \beta (b \wedge c) \\ c \wedge (\alpha a + \beta b) = \alpha (c \wedge a) + \beta (c \wedge b) \end{aligned} $$

这样我们就把楔积推广到全体线性空间$V$里了. 我们把通过 $k$ 重楔积组合出来的 $k$ 维立方体的集合连同其上的加法和数乘构成的线性空间记为 $\wedge^k(V)$.

行列式的定义

基本定义

在现阶段, 我们最感兴趣的线性空间是 $n$ 维欧式空间 $\mathbb{R}^n$, 于是下文我们都基于 $\mathbb{R}^n$ 来讲.

我们来考虑 $\wedge^n(\mathbb{R}^n)$, 即 $n$ 维空间里的 $n$ 维有向超平行体(parallelotope).

首先我们把一个非常自然的标准超平行体叫做自然超平行体: $e_1 \wedge e_2 \wedge … \wedge e_n$.

然后把仅由基底构成的超平行体叫做单位超平行体. 通过交换自然超平行体的参数顺序, 我们可以构造出所有的单位超平行体(显然有正有负).

首先我们来尝试把任意的超平行体 “展开” 成单位超平行体, 然后再转化成自然超平行体, 那么我们就能知道这个超平行体由多少个 “小立方体” 组成, 就能知道它的 “体积” 了.

因为 “单位超平行体” 和 “自然超平行体” 看起来又长又蠢又中二, 下面统一用 “单位体” “自然体” 代替它们.

展开成单位超平行体

下面用带单个下标的 $a_i$ 来表示组成我们在处理的超平行体的第 $i$ 个矢量. 用带两个下标的 $a_{ij}$ 来表示矢量 $a_i$ 的第 $j$ 个分量.

我们有:

$$ \begin{aligned} a_1 \wedge a_2 \wedge a_3 … \wedge a_n &= (a_{11} e_1 + a_{12} e_2 + a_{13} e_3 + … + a_{1n} e_n) \\ &\wedge (a_{21} e_1 + a_{22} e_2 + a_{23} e_3 + … + a_{2n} e_n) \\ &\wedge (a_{31} e_1 + a_{32} e_2 + a_{33} e_3 + … + a_{3n} e_n) \\ &…\\ &\wedge (a_{n1} e_1 + a_{n2} e_2 + a_{n3} e_3 + … + a_{nn} e_n) \\ \end{aligned} $$

根据乘法分配律, 我们理论上可以得到 $n^n$ 个项, 也就是说, 我们可以在第一行里的 $n$ 个分量里挑一个项, 第二行的 $n$ 个分量里挑一个项, 第三行…, 一直挑 $n$ 次.

但是, 如果我们在挑元素的时候, 在不同的两行中挑中了同一列的分量(见下红色字的选法), 也就是说, 我们这一次挑出来乘起来的项里, 出现了一个 $e_i \wedge e_i$; 这样的话, 这一项就会变成 $0$, 相当于没有了, 所以我们在下面直接忽略这些项.

$$ \begin{aligned} &\quad\ (\textcolor{red}{a_{11} e_1} + a_{12} e_2 + a_{13} e_3 + … + a_{1n} e_n) \\ &\wedge (a_{21} e_1 + \textcolor{red}{a_{22} e_2} + a_{23} e_3 + … + a_{2n} e_n) \\ &\wedge (a_{31} e_1 + \textcolor{red}{a_{32} e_2} + a_{33} e_3 + … + a_{3n} e_n) \\ &…\\ &\wedge (a_{n1} e_1 + a_{n2} e_2 + \textcolor{red}{a_{n3} e_3} + … + a_{nn} e_n) \\ \end{aligned} $$

我们在挑元素的时候干脆就直接挑不在同一列的元素就好了. 也就是说, 类似于往国际象棋盘上摆车一样地选的话, 我们一共就能选出 $n!$ 这么多个项. 也就是说, 我们类似下面这样选:

$$ \begin{aligned} &\quad\ (\textcolor{aqua}{a_{11} e_1} + a_{12} e_2 + a_{13} e_3 + … + a_{1n} e_n) \\ &\wedge (a_{21} e_1 + \textcolor{aqua}{a_{22} e_2} + a_{23} e_3 + … + a_{2n} e_n) \\ &\wedge (a_{31} e_1 + a_{32} e_2 + \textcolor{aqua}{a_{33} e_3} + … + a_{3n} e_n) \\ &…\\ &\wedge (a_{n1} e_1 + a_{n2} e_2 + a_{n3} e_3 + … + \textcolor{aqua}{a_{nn} e_n}) \\ \end{aligned} $$

或者这样地:

$$ \begin{aligned} &\quad\ (\textcolor{aqua}{a_{11} e_1} + a_{12} e_2 + a_{13} e_3 + … + a_{1n} e_n) \\ &\wedge (a_{21} e_1 + a_{22} e_2 + \textcolor{aqua}{a_{23} e_3} + … + a_{2n} e_n) \\ &\wedge (a_{31} e_1 + \textcolor{aqua}{a_{32} e_2} + a_{33} e_3 + … + a_{3n} e_n) \\ &…\\ &\wedge (a_{n1} e_1 + a_{n2} e_2 + a_{n3} e_3 + … + \textcolor{aqua}{a_{nn} e_n}) \\ \end{aligned} $$

把它们按顺序来, 我们就能拿到下面的这些:

$$ \begin{aligned} &\quad\ a_{11} a_{22} a_{33} … a_{nn} (e_1 \wedge e_2 \wedge e_3 \wedge … \wedge e_n) \\ &+ a_{12} a_{21} a_{33} … a_{nn} (e_2 \wedge e_1 \wedge e_3 \wedge … \wedge e_n) \\ &+ a_{11} a_{23} a_{32} … a_{nn} (e_1 \wedge e_3 \wedge e_2 \wedge … \wedge e_n) \\ &… \\ &+ a_{1n} a_{2 (n-1)} a_{3 (n-2)} … a_{n1} (e_n \wedge e_{n-1} \wedge e_{n-2} \wedge … \wedge e_1) \end{aligned} $$

那么我们现在就把任意的超平行体拆成了 $n!$ 个单位体了. 现在让我们来看看怎么把这些单位体转化成自然体吧.

转化为自然超平行体

我们来举个例子. 假如我们有一个单位体, 它跟自然体只差了一个相邻的 交换:

$$ e_1 \wedge \textcolor{aqua}{e_3 \wedge e_2} \wedge e_4 \wedge … \wedge e_n \\ e_1 \wedge e_2 \wedge e_3 \wedge e_4 \wedge … \wedge e_n $$

那么我们可以用[反交换律]把上面的单位体换成自然体:

$$ e_1 \wedge \textcolor{aqua}{e_3 \wedge e_2} \wedge e_4 \wedge … \wedge e_n = - (e_1 \wedge e_2 \wedge e_3 \wedge e_4 \wedge … \wedge e_n) $$

也就是说, 借助[反交换律], 我们可以每次交换一个相邻的向量的顺序(只需要记得乘个$-1$)就好了. 那么如果我们要想知道一个单位体要想换多少次才能到自然体, 我们就遇到了下面这个著名的问题:

对一个 1 到 n 的排列, 最少交换多少次相邻元素, 能把它交换到自然排列? 

这个著名问题的著名答案就是: 逆序数. 一个序列的逆序数就表明了 “至少交换多少次这个排列能变成自然排列?”.

为啥逆序数就是这个最小交换数的证明可以参考这里. 一个直观的参考是: 每一个元素自己的逆序数表示 “为了让排列变成自然排列, 前面得有多少个元素得在交换时跨过我”, 理论上, 如果一个要跨过你的元素离你再远, 它也是要跨过你的. 如果它离你远了, 说明它占了更前的元素的位置, 它在跨过一些看起来 “不应该” 跨过的元素的时候, 其实是在消费它占掉的更前的元素的逆序数, 因为这个位置被它占掉的更前的元素会被 “挤” 到后面去.

如果我交换更多的次数会怎么样? 注意到每一次交换 要么使得逆序数减少要么使得逆序数增加(也就是说它要么帮忙要么帮倒忙), 如果你帮了一次倒忙, 那么你必须得加一次正忙才能抵消它的作用, 前前后后乘了两个$-1$, 相当于没乘. 具体的证明我没找到, 但是也许你可以自己写一个然后告诉我qwq.

所以形式化一下, 以 $\pi(p_1 p_2 p_3 … p_n)$ 表示序列的逆序数, 那么我们有:

$$ e_{p_1} \wedge e_{p_2} \wedge e_{p_3} \wedge … \wedge e_{p_n} = (-1)^{\pi(p_1 p_2 p_3 … p_n)} (e_1 \wedge e_2 \wedge e_3 \wedge … \wedge e_n) $$

也就是说, 一个单位体要化成自然体, 最后交换完的正负号, 就看它的下标的逆序数.

把它们加到一起…

$$ \begin{aligned} a_1 \wedge a_2 \wedge a_3 … \wedge a_n &= (a_{11} e_1 + a_{12} e_2 + a_{13} e_3 + … + a_{1n} e_n) \\ &\wedge (a_{21} e_1 + a_{22} e_2 + a_{23} e_3 + … + a_{2n} e_n) \\ &\wedge (a_{31} e_1 + a_{32} e_2 + a_{33} e_3 + … + a_{3n} e_n) \\ &…\\ &\wedge (a_{n1} e_1 + a_{n2} e_2 + a_{n3} e_3 + … + a_{nn} e_n) \\ &= \sum_{p_1 p_2 p_3 … p_n} a_{1p1} a_{2p2} a_{3p3} … a_{np_n} (e_{p_1} \wedge e_{p_2} \wedge e_{p_3} \wedge … \wedge e_{p_n}) \\ &= \sum_{p_1 p_2 p_3 … p_n} a_{1p1} a_{2p2} a_{3p3} … a_{np_n} (-1)^{\pi(p_1 p_2 p_3 … p_n)} (e_1 \wedge e_2 \wedge e_3 \wedge … \wedge e_n) \\ &= \sum_{p_1 p_2 p_3 … p_n} (-1)^{\pi(p_1 p_2 p_3 … p_n)} a_{1p1} a_{2p2} a_{3p3} … a_{np_n} (e_1 \wedge e_2 \wedge e_3 \wedge … \wedge e_n) \\ \end{aligned} $$

第一个等号是对 $a_i$ 按分量展开; 第二个等号就是上面说的 “选分量” 的过程(我们暂时从上往下按行选, 在行里选列, 于是 $p_i$ 就代表了我们在第 $i$ 行选了哪一列); 第三个等号是我们上面说的"把单位体换自然体"; 第四个等号是把$(-1)$挪到前面使得式子好看. 于是最终, 我们从有向体积出发, 得到了行列式的书本定义.

等等等等, 你这不是比行列式还多了一块 $(e_1 \wedge e_2 \wedge e_3 \wedge … \wedge e_n)$ 吗???

确实. 因为我们在定义楔积的时候, 说楔积积起来代表的是 “有向超平行体”, 但行列式的意思是 “有向超平行体的有向体积”. 我们得到的结果是我这个超平行体是自然体的有向体积的多少倍, 也就是说, 其实应该是:

$$ a_1 \wedge a_2 \wedge a_3 … \wedge a_n = D_n (e_1 \wedge e_2 \wedge e_3 \wedge … \wedge e_n) $$

这个才是行列式. 但不管怎么样, 反正差不多啦! (被数学佬锤死)

行列式的基本性质

行列式的基本性质的很多都可以从楔积的交替双线性给证明出来.

我们现在先来习惯一下一些符号:

$$ \begin{aligned} A &= \bigwedge_{i=1}^{n} a_i \\ &= \bigwedge_{i=1}^{n} \sum_{j=1}^{n} a_{ij} e_j \\ &= \sum_{\forall p} (-1)^{\pi(p)} \prod_{p_i \in p} a_{i p_i} (\bigwedge_{i=1}^n e_i) \end{aligned} $$

可以看到, 我用$A$表示这个超平行体, 把多重楔积写成了前置的大号形式, 以及使用一个字母$p$(或者$q$)来表示一个排列$p_1, p_2, …, p_n$, 并且在遍历这个排列的时候用$p_i \in p$ 来表示.

注意这种表示方法就好像 “自然体” 和 “单位体” 一样, 一般只有我用…

一般来讲在证明性质的时候第二种超平行体的表示比较好用.

首先是一个选行的的任意性. 注意到我们在上面选分量的时候, 是按第一行先选, 第二行再选, 第三行再选, … 选到第 $n$ 行这种次序的, 为什么我们一定要这样选呢?

答案是因为楔积是反交换的, 如果你先选了第二行再选第一行, 乘出来的 $e_2$ 就会跑到 $e_1$ 前面去, 那样就不准了.

那我要是硬要按我自己想选的次序$q$来选怎么办? (比如说一四二三这样选行, $q=[1,4,2,3]$)

那么我们就按你想要的次序, 把原来是自然排列的行, 排成你想要的顺序就可以啦!

(非常显然, 把自然排列排成排列$q$要做的操作, 跟把排列$q$排成自然排列要做的操作, 其实是一样哒. 所以我们在上一节讲的关于逆序数的性质在这里也同样适用)

因此我们有:

$$ \begin{aligned} A &= \bigwedge_{i=1}^{n} a_i \\ &= (-1)^{\pi(q)} \bigwedge_{q_i \in q} a_{q_i} \\ &= (-1)^{\pi(q)} \bigwedge_{q_i \in q} \sum_{j=1}^n a_{q_i j} e_j \\ &= (-1)^{\pi(q)} \sum_{\forall p} (-1)^{\pi(p)} \prod_{\substack{p_i \in p\ q_i \in q}} a_{q_i p_i} (\bigwedge_{i=1}^n e_i) \\ &= \sum_{\forall p} (-1)^{\pi(q) + \pi(p)} \prod_{\substack{p_i \in p\ q_i \in q}} a_{q_i p_i} (\bigwedge_{i=1}^n e_i) \\ \end{aligned} $$

上式中, 第一个等号是定义展开, 第二个等号是把行换成你想要的顺序, 第三个等号是分量展开, 第四个等号是选完分量之后, 第五个等号是把 $(-1)^{\pi(q)}$ 乘进求和号里面并跟里面原来有的$(-1)^{\pi(p)}$ 合并.

所以我们有课本里头广义的行列式定义: 对任意你选定的$q$, 我们有:

$$ D_n = \sum_{\forall p} (-1)^{\pi(q) + \pi(p)} \prod_{\substack{p_i \in p\ q_i \in q}} a_{q_i p_i} $$

行列式的初等变换有:

  • 转置
  • 交换
  • 拆分
  • 数乘

下面我们来一个个看看

转置

转置其实不改变行列式里放着什么数, 那么你选完分量之后总的那一堆结果其实还是原来的那一堆, 所以转置不改变行列式的值.

交换

交换行其实就是在交换行向量, 由反交换律并参考上面的单位体到自然体的转化, 很容易得到交换一堆楔积里的任意两个元素, 楔积符号相反这个结论. 从而交换改变行列式符号这个结论是自然的.

拆分 和 数乘

拆分和数乘行其实就利用了楔积的线性性.

转置

咕咕咕

行列式的拉普拉斯展开

咕咕咕

行列式的 Cramer 法则

咕咕咕

行列式的直观意义 (还需要吗??)

咕咕咕

参考与缘起

本文章的灵感来着于一个知乎问答, 具体问答我已经找不到了. 在那个回答里, 答主介绍了如何根据外代数的形式死记硬背多元微分形式的技巧. 惊为天人之后发现外代数其实是很多高中或者大学低年级里常见概念背后的"大象", 比如叉乘, 行列式, 多元微分之类的, 遂起了用外代数来解释这些概念的心思. 苦于高中没有时间, 一直咕咕咕咕咕.

大学水课多了, 于是就开始写了.

另一个灵感来自于一本神奇的书: 线性代数的几何意义. 这本书全书全是各种图图图, 讲解了很多线代相关对象的几何意义, 但可能是篇幅所限, 它 并没有解释为什么这些几何意义能跟对象的代数形式联系到一块, 它只是告诉你, 这些性质可以从几何直观来理解, 这我觉得是不够的.

咕咕咕