简介:这是一份围绕线性代数第一章「行列式的定义」制作的课堂教学PPT,面向高校理工科初学者、考研复习者及需要梳理基础概念的读者,重点解决行列式入门阶段概念抽象、课程框架不清的问题。压缩包共1个文件,为PPT格式,体积约4.54MB,内容涵盖线性代数研究对象、线性关系含义、向量空间与矩阵理论概述,并用脸识别、电子游戏、图像处理、医学成像、电路分析等案例说明应用场景。课件还梳理了课程章节脉络、行列式与矩阵等核心内容,以及平时成绩与期末闭卷考试的考核方式,便于读者快速建立知识地图、把握学习重点。目前已有61人学习,适合课前预习、课堂对照和期末复习使用。
1. 从「1.1 行列式的定义」这一页讲起:先把逆序数数清楚,再谈展开
很多人第一次见到 n 阶行列式的完全展开式,第一反应是那一长串求和到底在数什么。二阶、三阶还能靠对角线口诀应付过去,到了四阶,24 项里有一半是负号,口诀立刻失效。这份以「1.1 行列式的定义」开篇的课件,真正的价值不在把公式印在幻灯片上,而在于把「排列 → 逆序数 → 符号 → 乘积求和」这条链条一节一节连接清楚。它面向两类人:线性代数第一学期的授课者,要在一节课里把定义讲清楚;以及自学者,要能手算三阶、看懂四阶、写得出一段代码把结果核对回来。下面按定义骨架、脚本校验、页面设计、翻车点、课堂验收的顺序展开,能照着做的细节尽量写具体。
2. 行列式定义的骨架:从二阶到 n 阶完全展开式的三层递进
2.1 二阶三阶为什么能「对角线相减」
二阶行列式的定义只有两项:主对角线乘积减去副对角线乘积。把行标固定成自然序 1、2,列标就只有 (1,2) 和 (2,1) 两种排列,前者逆序数为 0 取正号,后者逆序数为 1 取负号,正好对应两条对角线。这不是巧合,而是全排列公式在 n=2 时的完整展开。
三阶也是同样的道理。三阶共有 3! = 6 项,沙路法则(主对角线方向三项取正、副对角线方向三项取负)给出的正好是这 6 项:
- 正项:a11a22a33(列标 123,τ=0)、a12a23a31(231,τ=2)、a13a21a32(312,τ=2)
- 负项:a11a23a32(132,τ=1)、a12a21a33(213,τ=1)、a13a22a31(321,τ=3)
正负各三项,一项不多一项不少。所以沙路法则不是一条独立的运算规则,它是全排列定义在 n=3 时被图形化之后的样子。这一步必须在课件里讲透,否则学生会把它当成一套可以无限推广的「口诀」。
失效点出现在四阶。四阶需要 4! = 24 项,而对角线方向最多只能画出 2n = 8 条线,覆盖 8 项,剩下的 16 项完全没有被表示出来。下面这个矩阵是最好的反例:
A = [0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0]主对角线全是 0,副对角线乘积 a14a23a32a41 也全是 0,按「对角线法则」算出来是 0。真实的行列式是 1(它相当于两个二阶交换块的直和,两个块的符号相乘为正)。一个反例就能让学生停止误用,比讲十遍「n≥4 不适用」有效得多。
讲到这里可以补一张项数对照表,让学生直观感受到增长有多快:
| 阶数 n | 全排列项数 n! | 对角线方向能覆盖的项数 | 是否够用 |
|---|---|---|---|
| 2 | 2 | 2 | 够用 |
| 3 | 6 | 6 | 够用 |
| 4 | 24 | 8 | 漏 16 项,失效 |
| 5 | 120 | 10 | 失效 |
| 6 | 720 | 12 | 失效 |
2.2 排列、逆序数与 (-1)^τ 的符号链
要把定义讲清楚,中间必须插进排列这一层。n 元排列就是把 1 到 n 重新排一遍得到的序列 p1p2…pn;在一个排列里,如果前面的数大于后面的数,就称它们构成一个逆序对;逆序对的总数记作 τ(p),叫逆序数。τ 是偶数叫偶排列,奇数叫奇排列。
行列式的项是这样造出来的:行标固定取自然序,列标取一个排列 p,把对应位置的元素乘起来 a1p1·a2p2·…·anpn,再乘上符号 (-1)^τ(p)。所有 n! 个排列对应的项加起来,就是行列式。三阶的六个排列写全了是这样:
| 列标排列 p | 逆序对 | τ(p) | 符号 | 乘积项 |
|---|---|---|---|---|
| (1,2,3) | 无 | 0 | + | a11a22a33 |
| (1,3,2) | (3,2) | 1 | − | a11a23a32 |
| (2,1,3) | (2,1) | 1 | − | a12a21a33 |
| (2,3,1) | (2,1)、(3,1) | 2 | + | a12a23a31 |
| (3,1,2) | (3,1)、(3,2) | 2 | + | a13a21a32 |
| (3,2,1) | (3,1)、(3,2)、(2,1) | 3 | − | a13a22a31 |
这张表建议直接印在课件的例题页上,让学生自己数一遍再对答案。手指数逆序数是这一节唯一需要动手的训练,跳过它,后面所有关于符号的推导都会变成玄学。
有两个一致性问题必须在课上点明,否则学生会越学越乱。
第一,行标固定自然序、列标取排列,这是一种写法;列标固定自然序、行标取排列,是另一种写法。两者等价,因为排列 p 和它的逆排列 p⁻¹ 有相同的逆序数奇偶性。如果两者都取排列,同一个乘积会被数很多次,符号也会乱。
第二,定义里的 (-1)^τ 和后面按行展开时的代数余子式符号 (-1)^(i+j) 是两套东西。前者来自全排列的奇偶性,后者是一行元素展开时位置带来的符号。把这两个混在一起讲,是这一节课最常见的混乱来源。
2.3 n 阶定义的三种等价表述怎么选
同一个对象有三套等价说法,课件里选哪一套当第一定义,直接决定后面课程的节奏。
第一套是莱布尼茨展开式,也就是上面那个「n! 项求和」。它的好处是「定义即算法」:符号为什么是这个符号,一眼就能看到;行列式的反对称性、交换两行变号,都能从排列的对换性质直接推出来。坏处是不好算,四阶就得写 24 项。
第二套是递归降阶:按一行或一列展开成代数余子式的和。它计算效率更好,但如果不先讲展开式,符号 (-1)^(i+j) 就成了天上掉下来的东西,学生只能死记。
第三套是公理化定义:对每一行线性、交换两行变号、单位阵取值为 1。它最适合做后续性质证明的起点,但不适合当第一堂课。
常见做法是:第一节课只给展开式,把符号来源讲透;性质讲完以后,再推降阶公式,并当场用三阶验算一遍,让学生看到两套算法给出同一个数;公理化作为提高内容或后续课程的引子。千万不要在一节课里把三套定义全塞进去——这一点后面第 5 章还会再说。
三种定义的取舍可以列成一张对照表放在课件最后一页:
| 表述 | 符号来源 | 计算成本 | 适合的用途 |
|---|---|---|---|
| 莱布尼茨展开式 | 排列的逆序数 | n! 项 | 讲定义、推性质 |
| 递归降阶 | 位置符号 (-1)^(i+j) | 约 n! 次乘法 | 具体计算 |
| 公理化 | 三条公理 | 不直接计算 | 证明与推广 |
3. 把定义做成可跑的校验:逆序数与完全展开的最小脚本
课件讲完,最怕的是「看起来懂了」。最直接的验收方式是写几行代码,把定义翻成可执行的东西,再和矩阵库的结果对一遍。这一节给出的脚本都很短,课堂上可以现场演示。
3.1 逆序数:暴力双循环就够用
def inversions(p): """统计排列 p 的逆序数。 p: 长度 n 的序列,元素互不相同,0-based 或 1-based 均可,只要全表统一。 返回: 逆序对个数,范围 0 到 n*(n-1)//2。 """ n = len(p) cnt = 0 for i in range(n): for j in range(i + 1, n): if p[i] > p[j]: # 前大后小,构成一个逆序对 cnt += 1 return cnt逻辑说明:外层固定左边的位置 i,内层只扫 i 右边的位置 j,一旦 p[i] > p[j] 就计数一次。这个方向不能反,反过来会把同一对元素数成重复的两次,是学生手算时最容易犯的错。参数上,p 的编号体系必须全局一致,混用 0-based 和 1-based 不会改变逆序数的值,但会让对照调试变得很痛苦。
复杂度是 O(n²)。因为 n 在验证场景里一般不超过 10,这个成本完全可以接受。如果确实要处理长排列,可以换成归并排序计数(O(n log n)),原理是在合并两个有序段时统计「右边元素先出队」的次数,但对这一节课来说属于过度设计。
3.2 按定义展开:全排列枚举与递归降阶两条路
from fractions import Fraction from itertools import permutations def det_perm(A): """按定义(莱布尼茨公式)展开。 A: n x n 的 list of list,元素可为 int。 返回: Fraction 类型的精确值。 """ n = len(A) total = Fraction(0) for p in permutations(range(n)): # p 是列标排列,行标取自然序 sign = -1 if inversions(p) % 2 else 1 term = Fraction(sign) for i in range(n): term *= Fraction(A[i][p[i]]) # 第 i 行取第 p[i] 列 total += term return total逻辑说明:外层枚举所有列标排列,内层按行标 0 到 n-1 的顺序取元素。符号由逆序数的奇偶性决定,用% 2判断比写-1 ** tau更直观,也不会有浮点参与。参数上,元素统一转成Fraction,是为了避免浮点误差在 n=8 以上时冒出来干扰对照。
复杂度是 O(n! · n²),其中 n² 来自每次求逆序数。n=8 时是 40320 个排列、每个排列算 64 次比较,现代机器上不到一秒;n=10 就跳到 360 万项,课堂上不要现场跑。
def det_rec(A): """按第一行代数余子式展开,递归到一阶。 A: n x n 的 list of list。 """ A = [[Fraction(x) for x in row] for row in A] n = len(A) if n == 1: return A[0][0] total = Fraction(0) for j in range(n): if A[0][j] == 0: continue # 零元素直接剪枝 minor = [row[:j] + row[j + 1:] for row in A[1:]] total += ((-1) ** j) * A[0][j] * det_rec(minor) return total逻辑说明:取第一行第 j 列的元素,删掉第一行和第 j 列得到余子矩阵,递归求值,再乘上位置符号。注意代码里行索引从 0 开始,位置符号写成(-1) ** j,等价于教科书里 1-based 的 (-1)^(1+j)。这是个高频出错点,写的时候在注释里标清楚索引基准。
用第 2 章那个四阶反例做对照:
A = [[0, 1, 0, 0], [1, 0, 0, 0], [0, 0, 0, 1], [0, 0, 1, 0]] print(det_perm(A), det_rec(A)) # 1 1两条独立路径得到同一个整数,就能确认定义和递归公式在这道题上是一致的。这比让学生反复看公式有效得多。
3.3 用几何意义给结果做交叉校验
数字对上了还不够,还要解释这个数字是什么意思。二阶行列式的绝对值等于两个行向量张成的平行四边形面积,符号反映定向;三阶行列式的绝对值等于三个行向量张成的平行六面体体积。这条几何线索可以在课件上做成一张动图,也可以在课堂上用代码现场算:
import numpy as np u = np.array([3.0, 1.0]) v = np.array([1.0, 2.0]) area = abs(np.linalg.det(np.array([u, v]))) # 二阶行列式即平行四边形面积 print(area) # 5.0参数说明:np.array([u, v])把两个行向量堆成 2×2 矩阵,np.linalg.det内部是 LU 分解,复杂度 O(n³),返回浮点结果。用它做交叉校验时,要知道它是数值算法,n 稍大就会有舍入误差,不能拿它当「标准答案」去反推定义有错。
课堂上可以顺手做一个退化演示:把 v 改成 u 的两倍,面积变成 0,行列式为 0。这直接连到「行列式为零等价于行向量线性相关」,为后面讲秩埋一条线。
4. 课件页面的信息密度设计:一页只承载一个判定
定义这一节课的内容密度天然很高,页面设计一旦失控,学生连抄都抄不完。下面这些参数是从反复修改里攒下来的。
4.1 定义引入的页面切分顺序
整节课建议切成 8 页主体,每页只回答一个问题:
| 页码 | 页面内容 | 停留时长 | 板书动作 | 常见失误 |
|---|---|---|---|---|
| P1 | 一个二阶方程组的求解过程 | 3 分钟 | 写出解的分母 | 直接甩公式,无动机 |
| P2 | 二阶定义与两条对角线 | 5 分钟 | 用箭头标出两项 | 只写结果不标排列 |
| P3 | 三阶沙路法则 | 6 分钟 | 画出六条线 | 不说这是 3! 项 |
| P4 | 项数对照表(n! 与 2n) | 4 分钟 | 写出 4!=24 | 跳过,直接说不适用 |
| P5 | 四阶反例 | 8 分钟 | 逐项列出非零项 | 举单位阵,看不出差异 |
| P6 | 排列与逆序数定义 | 8 分钟 | 现场数 321 的逆序 | 只给定义不给例子 |
| P7 | n 阶行列式的一般定义 | 8 分钟 | 标出三处符号 | 行列标都取排列 |
| P8 | 三道分层例题 | 8 分钟 | 一题一手算 | 全用数字题,缺反例 |
P1 的作用是给出动机,不能省。直接从「定义」两个字开始讲,学生会觉得这是凭空造出来的东西。P5 的时长要给足,因为这是整节课认知冲突最强的地方,也是学生最需要停下来消化的一页。
4.2 公式排版与标注:行标列标、下标层级、字号
投影环境下的可读性有硬指标。正文字号不低于 24pt,公式字号不低于 28pt,一页里的公式行数控制在 8 行以内,超了就拆页。这个数字看起来保守,但教室最后一排的视角就是这样,字小了就是白讲。
公式不要用截图。截图在投影仪上会被二次压缩,下标的 i、j 糊成一团,学生抄错下标往往就是从这里开始的。用公式编辑器或者 LaTeX 渲染成矢量图,缩放不糊。
行标列标的约定要固定,并且在每页右上角放一个常驻图例:a 的第一个下标是行、第二个下标是列。这个约定不同教材可能相反,一旦选定就全课统一,不要在某一页为了「看起来顺」临时换过来。
正负项的区分不要只靠颜色。红绿在投影偏色和色弱学生那里都可能失效,正确做法是颜色加符号双重标注:负项前面明确写出减号,或者加一个上标标记。动画只在「项在移动」的时候用,比如把 a12a23a31 这三项从矩阵里抽出来排成一行;纯文字页加动画只会分散注意力。
4.3 例题与反例配比:三个必给的例子
例题要分层,不能全是同一类型。
例 1 是一个三阶数字矩阵,要求学生按六个排列硬算一遍,再用沙路法则验算,两条路结果相同。这一题的目的是把定义和口诀连起来。
例 2 是一个含零较多的三阶矩阵,比如第一行只有一个非零元素。手算时学生会发现 6 项里只有 2 项非零,自然产生「能不能只算非零项」的念头,这就为后面讲降阶展开留了接口。这里可以顺势提一句:递归降阶不是新规则,它是把定义里那些零项提前筛掉了。
例 3 就是第 2 章那个四阶交换块矩阵,用来证明对角线法则失效。
反例至少要留一个:交换矩阵的两行,用定义算一遍,看每一项的列标排列发生了什么变化。学生会看到每个排列的奇偶性都翻转了,所以整体符号取反。这个推导只用定义、不用性质,是检验「是否真懂定义」的最好题目。
练习量上,课后留三题即可:一道三阶手算、一道四阶用程序验证、一道证明题(交换两行变号)。题目太多会挤掉思考时间,这一节的重点是理解符号从哪来,不是刷计算速度。
5. 避坑与排查:讲「1.1 行列式的定义」最常见的 5 个翻车点
5.1 行标列标约定前后不一致
现象:同一道三阶题,课上算出来和教材答案差一个符号,学生反复检查也找不出错。
原因:a_ij 的第一个下标是行还是列,不同教材写法不一致;讲课时顺手写下的某个式子用了相反约定,后面的推导就整体错位。这种错很难自查,因为每一步看起来都对。
解决:在第一页就固定约定,并在每页角落放图例。所有例题的矩阵都显式标出行号列号。发现符号不一致时,第一个检查动作不是重算,而是核对这一页的约定有没有和前面冲突。
5.2 把沙路法则推广到四阶
现象:学生做四阶题,画出八条对角线,算出结果,与标准答案差得很远。
原因:三阶时 2n 恰好等于 n!,这个巧合让人误以为规则可以无限延伸。四阶 24 项,对角线只能覆盖 8 项。
解决:用第 2 章那个四阶反例当堂演示,让学生亲眼看到两种算法给出不同的数。同时给出项数对照表,把 4! = 24 和 2n = 8 并列写出来。这个反例要放进课后作业,让学生自己复现一遍。
5.3 逆序数重复计数
现象:手数 321 的逆序数,有人数出 6,有人数出 3。
原因:把每一对元素从两个方向各数了一次。(3,2)、(3,1)、(2,1) 是三对,数成 6 就是把 (2,3) 也算进去了。
解决:固定「只看左边比右边大」这个方向,在纸上把逆序对逐个写出来划掉,不要凭感觉报数。代码里的双循环就是按这个方向写的,可以对照。
5.4 把 (-1)^τ 和 (-1)^(i+j) 混为一谈
现象:讲完定义紧接着讲按行展开,学生把两个符号公式记混,做题时符号随机出错。
原因:两个公式长得像,出现的位置又近,中间没有明确的分界说明。
解决:定义这一节只用 (-1)^τ,完全不提余子式。等性质讲完、单独开一节讲降阶时,再引入 (-1)^(i+j),并且当场用三阶矩阵把两条路径算一遍,证明它们给同一个结果。物理上隔开一节课,比在同一页上做对比更有效。
5.5 用浮点结果反推定义出错
现象:写脚本验证 n=9 的矩阵,程序给出 1.0000000000000002,学生断定「定义写错了」。
原因:矩阵库内部是 LU 分解加浮点运算,n 变大以后舍入误差累积,末位漂移是正常现象。定义本身是精确的整数或分数运算。
解决:验证脚本统一用Fraction做精确计算,只在最后和浮点结果比对量级。如果确实要用浮点,就把判据改成相对误差小于 1e-9,而不是要求完全相等。这条血泪经验值得在课上讲一句,免得学生把数值误差当成理论错误。
6. 用「定义—算法—几何」三线对照做课堂验收
定义这节课讲完,怎么判断学生是真的懂了,而不是记住了六个排列?我的做法是三条线同时验收,缺一条都算没过。
第一条是定义线:给定一个三阶矩阵,能不能不看书,把六个列标排列写全,标出每个的逆序数和符号,最后求和。这条线考的是记忆加理解,五分钟能测出来。
第二条是算法线:能不能写出十行以内的脚本,用全排列把行列式算出来,并且和递归降阶的结果对上。这条线考的是把数学翻译成可执行步骤的能力,也是最能暴露「似懂非懂」的环节——很多人写到A[i][p[i]]的时候,才第一次意识到行标是固定的。
第三条是几何线:能不能解释为什么二阶行列式是面积、三阶是体积、行列式为零意味着什么。这条线最难,但它是把定义和后续的线性相关性、秩、特征值连起来的关键。
三条线的验收标准可以做成一张表:
| 验收线 | 具体动作 | 及格标准 | 常见卡点 |
|---|---|---|---|
| 定义线 | 手写三阶六项 | 符号全对 | 逆序数数错 |
| 算法线 | 十行脚本 + 对照 | 两条路径同值 | 索引基准混用 |
| 几何线 | 解释面积与零行列式 | 说清符号含义 | 只记结论不记原因 |
我自己的教训是:头几年讲这一节,总想着把三种定义一次讲全,结果四十五分钟塞得满满当当,学生下课只记住了「有个逆序数」。后来砍掉公理化表述,把省下的时间全给四阶反例和手数逆序数,效果立刻不一样——那节课学生问的问题从「这个符号怎么来的」变成了「为什么四阶就不能画线了」,说明他们真的在跟着想。
还有一个习惯:每次讲完这一节,我都会留一道「不合常规」的作业,比如给一个五行四列的矩阵,问行列式是多少。正确答案是不存在,因为行列式只对方阵有定义。这道题每年都有人认真地去展开,然后在下一节课恍然大悟。这种小陷阱比反复强调「必须是方阵」有效得多。
如果你也在准备这一节课,建议先别急着改动画和配色,把四阶反例和逆序数手算这两件事做扎实,剩下的自然就顺了。希望帮到你。
本文还有配套的精品资源,点击获取