这份笔记本来是期末复习用的(同济版六章),重写时每条定理都补上”为什么”和机器人工程落点。因为学完线代你马上会撞上:旋转矩阵、雅可比、惯性张量、最小二乘标定、SVD、李雅普诺夫稳定性——全是线代。所有 numpy 代码可直接运行。
这门课在机器人里到底用在哪
| 线代概念 | 机器人落点 |
|---|---|
| 矩阵乘法 | 坐标变换复合:$T_{AC} = T_{AB}T_{BC}$ |
| 正交矩阵 | 旋转矩阵 $R$,$R^TR = I$ |
| 秩 | 雅可比矩阵降秩 = 奇异位形,IK 失效 |
| 特征值 | 线性系统稳定性、模态分析 |
| 二次型/正定 | 惯性张量主轴、李雅普诺夫函数 $V = x^TPx$ |
| SVD/伪逆 | 最小二乘标定、阻尼最小二乘 IK |
| 基变换 | 坐标系之间的坐标转换 |
第一章 行列式:面积、体积与”为什么不用克拉默”
定义回顾:$n$ 阶行列式是所有排列的带符号乘积之和(逆序数定号),按行展开(代数余子式)是递归计算。几何意义:二阶行列式是平行四边形的有向面积,三阶是有向体积——这是理解”行列式为 0 ⇔ 退化”的关键:面积/体积被压成 0,说明行向量线性相关。
为什么工程上没人用克拉默法则解方程组? 克拉默 $x_i = \det(A_i)/\det(A)$ 需要算 $n+1$ 个行列式,每个行列式按定义展开是 $O(n!)$。$n=20$ 时 $20! \approx 2.4\times10^{18}$ 次乘法,超算也扛不住。高斯消元 $O(n^3)$,$n=20$ 只要 8000 次。克拉默的价值在理论上(解的存在唯一性),不在计算上。
考试要点:① 某行乘 $k$,行列式乘 $k$(不是乘 $k^n$);② 两行互换变号;③ 某行 $\times k$ 加到另一行,值不变;④ $\det(AB)=\det A\det B$,但 $\det(A+B) \ne \det A + \det B$;⑤ 范德蒙德行列式。
工程判断奇异:别用 det,用条件数:
1 | import numpy as np |
det 有两个致命问题:尺度依赖($\det(kA)=k^n\det A$,放大 100 万倍行列式爆炸但矩阵没变病态)和溢出/下溢。条件数 $\kappa(A)=|A||A^{-1}|$ 尺度不变,$\kappa$ 越大解越脆弱:解的相对误差 ≤ $\kappa \times$ 数据的相对误差。
第二章 矩阵:乘法是复合,旋转矩阵是正交矩阵
矩阵乘法为什么那样定义? 因为矩阵表示线性映射,$(AB)x = A(Bx)$——先做 B 变换再做 A 变换。这个定义不是拍脑袋,是”映射复合”的坐标表达。所以矩阵乘法不可交换(先旋转再平移 ≠ 先平移再旋转),但可结合($(AB)C = A(BC)$),结合律对应”复合的顺序不因加括号改变”。
逆矩阵:方阵 $A$ 可逆 ⇔ $\det A \ne 0$ ⇔ 列向量线性无关 ⇔ $Ax=0$ 只有零解。左逆 = 右逆(方阵才成立)。
旋转矩阵与正交矩阵(考试 + 工程双重点):$R$ 是正交矩阵 $\iff R^TR = I \iff$ 列向量是标准正交基。旋转矩阵还满足 $\det R = 1$(保向)。验证代码:
1 | th = np.pi/3 |
三维里旋转矩阵构成 SO(3),齐次变换矩阵是 4×4 分块 $\begin{bmatrix} R & t \ 0 & 1 \end{bmatrix}$,逆为 $\begin{bmatrix} R^T & -R^Tt \ 0 & 1 \end{bmatrix}$——正交矩阵求逆 = 转置,这是机器人里坐标变换最快的运算。
分块矩阵:$\begin{bmatrix} A & B \ 0 & D \end{bmatrix}^{-1} = \begin{bmatrix} A^{-1} & -A^{-1}BD^{-1} \ 0 & D^{-1} \end{bmatrix}$($A,D$ 可逆)。工程里大稀疏系统(SLAM 的信息矩阵)都是块结构,分块求逆比整体求逆省一个数量级。
第三章 初等变换与方程组:秩与最小二乘
高斯消元就是反复做行初等变换(换行、倍乘、倍加),把增广矩阵化成行阶梯形。秩 = 行阶梯形非零行数 = 行/列向量组张成空间的维数。
解的结构(秩的语言):
- $Ax=b$ 有解 ⇔ $\mathrm{rank}(A) = \mathrm{rank}([A|b])$;
- 有解时:$\mathrm{rank}(A) = n$(未知数个数)→ 唯一解;$\mathrm{rank}(A) < n$ → 无穷多解,通解 = 一个特解 + 齐次解空间(自由变量个数 = $n - \mathrm{rank}(A)$)。
工程场景:超定方程组没有精确解。标定、传感器融合都是”方程比未知数多”:$A \in \mathbb{R}^{m\times n}, m > n$。此时求最小二乘解 $\min_x |Ax - b|_2$:
1 | A = np.array([[1., 1.], [1., 2.], [1., 3.], [1., 4.]]) |
为什么不用法方程 $A^TAx = A^Tb$? 因为 $\kappa(A^TA) = \kappa(A)^2$——条件数平方,直接丢一半有效数字。实测:$\kappa(A_2)=2.4\times10^8$ 的矩阵,$\kappa(A_2^TA_2)=4.5\times10^{16}$,double 精度下法方程已经废了。工程上解最小二乘用 QR 或 SVD(np.linalg.lstsq 内部就是 SVD),法方程只配出现在考试里。
第四章 向量组:线性相关与雅可比奇异
几何意义:线性相关 = 有向量”多余”(共线/共面),能被其余向量线性表出;线性无关 = 谁都不可或缺。秩 = 向量组张成空间的维数,最大无关组就是”张成同一空间的最少向量”。n 维空间里任意 $n+1$ 个向量必线性相关——这就是为什么 3 维空间里 4 个点必共面(退化情形)。
考试三句等价($n$ 个 $n$ 维向量):线性无关 ⇔ 行列式非零 ⇔ 秩为 $n$。
工程落点:雅可比矩阵的秩 = 机器人的奇异位形。机械臂速度映射 $\dot{p} = J(q)\dot{q}$,$J$ 是 $m\times n$ 矩阵,其列向量就是各关节单位速度引起的末端速度。当某列线性相关(比如二连杆完全伸直),$J$ 降秩:
1 | def jacobian(q1, q2): # 二连杆,单位杆长 |
伸直位形第二个奇异值 = 0,末端沿径向的速度方向无法实现,且 $\dot{q} = J^{-1}\dot{p}$ 在该方向爆炸($\kappa \to \infty$)。工程处理:阻尼最小二乘 $\dot{q} = J^T(JJ^T + \lambda^2 I)^{-1}\dot{p}$,加正则项 $\lambda^2$ 把奇异值下限抬到 $\lambda$,用微小精度损失换掉速度爆炸——本质就是 SVD 里”奇异值截断 + 正则化”的思想。
第五章 相似矩阵与二次型:特征值、主轴与稳定性
特征值/特征向量的几何意义:$Av = \lambda v$——变换 $A$ 作用在 $v$ 上方向不变、只伸缩 $\lambda$ 倍。特征向量是变换的”不动方向”,特征值是沿该方向的增益。求法:特征方程 $\det(\lambda I - A) = 0$。
相似:$B = P^{-1}AP$——同一个线性变换在不同基下的矩阵。相似矩阵特征值相同(特征多项式相同),所以特征值是变换的内禀属性,与坐标系无关。
实对称矩阵必可正交对角化:$A = Q\Lambda Q^T$,$Q$ 正交($Q^TQ=I$),不同特征值对应的特征向量自动正交。这是二次型能化简的根本原因。惯性张量对角化就是主轴定理:刚体的惯性张量 $I$ 是实对称矩阵,正交对角化后得到三个主惯量,对应的正交方向叫主轴——绕主轴旋转时惯性积为零,没有陀螺力矩。这就是云台/飞轮设计要尽量让旋转轴对准主轴的物理原因(不对称转子的陀螺效应会让云台晃动、让电机多扛一个交变力矩)。代码:
1 | I_plate = np.array([[4.0, -3.0, 0.0], [-3.0, 6.0, 0.0], [0.0, 0.0, 10.0]]) |
正定二次型与稳定性:$x^TAx > 0$($A$ 正定)⇔ 全部顺序主子式 > 0(Sylvester 判据)⇔ 全部特征值 > 0。控制里最经典的用法是李雅普诺夫函数 $V(x) = x^TPx$($P$ 正定对称):若沿系统轨迹 $\dot{V} < 0$,能量单调下降,系统稳定。对线性系统 $A$ 稳定 ⇔ 李雅普诺夫方程 $A^TP + PA = -Q$($Q$ 正定)有正定解 $P$:
1 | A_sys = np.array([[0., 1.], [-2., -3.]]) |
这直接连着 PID/状态反馈文章里的稳定性分析——“系统稳不稳”在线代里就是”某个二次型矩阵正不正定”。
SVD 预告(研究生/工程前置):$A = U\Sigma V^T$ 对任意(含非方阵)矩阵成立,奇异值 $\sigma_i$ 是 $A^TA$ 特征值的平方根——特征值是方阵的专属,奇异值是它的推广。伪逆 $A^+ = V\Sigma^+U^T$ 统一了最小二乘(超定)和最小范数解(欠定),PCA 就是协方差矩阵的特征分解。SLAM、标定、IK 全在这上面。
第六章 线性空间与线性变换:基变换就是坐标变换
线性空间:满足加法/数乘封闭 + 八条算律的集合。不只是 $\mathbb{R}^n$——多项式、$n\times n$ 矩阵、连续函数都是线性空间。子空间:对运算封闭的子集(比如过原点的平面)。基:线性无关且能张成全空间的最大向量组,向量个数 = 维数 $\dim V$。坐标:$x$ 在基 $\mathcal{B}$ 下的坐标 $[x]_\mathcal{B}$ 是线性组合系数。
过渡矩阵(考试核心):从基 $\mathcal{B}$ 到基 $\mathcal{B}’$ 的过渡矩阵 $T$,第 $j$ 列 = 旧基向量 $v_j$ 在新基下的坐标。坐标变换:
$$[x]{\mathcal{B}’} = T{\mathcal{B}’\leftarrow\mathcal{B}},[x]_\mathcal{B}$$
最大的坑是方向:基变换和坐标变换方向相反——基向量”变长 2 倍”,同一向量的坐标”缩成 1/2”:
1 | B = np.array([[2., 0.], [0., 3.]]) # 新基:标准基沿 x,y 拉长 2、3 倍 |
这就是机器人坐标系变换的本质:{B} 系相对 {A} 系的位姿(旋转矩阵 $R$ + 平移 $t$)就是过渡矩阵,$p_A = R,p_B + t$ 就是在做基变换。核 $\mathrm{Ker}(T)$(被打成零的向量)与像 $\mathrm{Im}(T)$(能到达的所有地方)对应齐次方程组解空间和列空间;维数定理 $\dim\mathrm{Ker}(T) + \dim\mathrm{Im}(T) = \dim V$——“变没了的维度 + 剩下来的维度 = 总维度”,是全书最漂亮的守恒律,也是秩-零度定理。
补充:子空间/基扩充/基替换(考试速查)
- 基扩充定理:$u_1,\dots,u_r$ 线性无关 ⇒ 可补成 $V$ 的一组基(补 $n-r$ 个向量);
- 基替换(Steinitz 交换引理):基中任一向量可用非零向量 $u$ 替换(只要 $u$ 在基下的坐标对应分量非零),仍是基;
- 维数公式:$\dim(U+W) = \dim U + \dim W - \dim(U\cap W)$;
- 直和:$V = U \oplus W \iff U \cap W = {0}$ 且 $V = U + W$,此时 $\dim V = \dim U + \dim W$,两组基拼起来就是 $V$ 的基;
- 等价命题:$\dim V = n$ 时,”$n$ 个向量线性无关” ⇔ “能生成 $V$” ⇔ “是基”(三句等价,同济最爱考)。
踩坑与考试细节
- det 判奇异是陷阱:见第一章,用
np.linalg.cond。数值上还要注意 det 溢出(大矩阵 det 动辄 $10^{\pm100}$)。 - **对称矩阵用
eigh不用eig**:eig对浮点误差敏感,可能给出带小虚部的特征值;eigh利用对称性保证实特征值且更快。 - 特征向量正交性只在实对称时保证:一般矩阵不同特征值的特征向量线性无关但不正交;考试里”可对角化”≠”可正交对角化”。
- 矩阵乘法没有交换律、没有消去律:$AB=AC$ 且 $A\ne 0$ 推不出 $B=C$($A$ 奇异时);$(AB)^k \ne A^kB^k$。
- **$|kA| = k^n|A|$**($n$ 阶),不是 $k|A|$;$|A^{-1}| = 1/|A|$;$|A^T| = |A|$。
- 秩是贯穿全书的量:把每章定理翻译成秩的语言(解的存在性、相关性、奇异位形、维数定理),考试和工程都会清晰很多。
- 法方程 vs QR/SVD:任何”$A^TA$ 出现的地方”先警惕条件数平方,标定代码里一律
lstsq/pinv。 - 齐次变换矩阵求逆用分块公式($R^T$ 那块),别直接
np.linalg.inv硬算 4×4——又慢又损失精度,ROS/TF 源码里都是手写分块。
一句话总结:行列式给存在性,秩给结构,特征值给动态,SVD 给数值,基变换给坐标——机器人的每个数学模型最后都落在这五件事上。