矩阵论实战:范数、矩阵函数与矩阵指数全解析
发布时间:2026/10/15 7:30:43 锦皓数字建站

1. 为什么每个学矩阵论的人都绕不开范数先讲个我实际遇到的场景。以前我帮人调一个数据拟合的代码算法迭代了三百多步还没停我问他收敛条件怎么写的他给我看了一句“新旧参数差小于 0.001 就停止”。问题来了新旧参数是两个矩阵这个“差”到底怎么算是把所有元素挨个减一遍取绝对值还是把矩阵当成一个整体来度量差异如果用不同办法得到的“误差”数值完全不一样有时候一个办法显示已经收敛另一个办法显示误差还大得很。这个问题的本质就是没定义清楚“范数”。范数就是用来干这个的。它是把向量或者矩阵映射成一个非负实数用来回答“这个东西有多大”的问题。学矩阵论、数值计算、优化、控制理论、机器学习第一件事往往不是背定义而是搞清楚“度量标准”。因为后面几乎所有算法——收敛性分析、误差估计、稳定性判断、正则化设计——全部建立在“范数”这个地基上。矩阵论课程里的“范数和矩阵函数”这一块通常分成两大块先讲清楚怎么合理定义向量和矩阵的“大小”再引入矩阵函数的概念也就是把指数、对数、三角函数这些熟悉的纯量函数扩展到矩阵上。这个系列第一篇我先把范数部分讲透再引入矩阵函数的动机和基本定义框架。后面的文章再展开具体的矩阵指数、矩阵对数和应用场景。这个内容适合谁看如果你是学工科的研究生正在上矩阵论或者数值分析课程或者你搞机器学习、自动驾驶、机器人控制经常看到论文里写什么 L2 范数、谱范数、矩阵指数又或者你纯粹是自学线性代数进阶想弄明白教材里那些定义到底图什么——那这篇文章能帮你把这些公式和实际意义之间的墙打通。我尽量不用那种“高冷教科书”的口吻而是告诉你每个定义是怎么被逼出来的以及用的时候会踩哪些坑。2. 向量范数先从“长度”这个直觉说起2.1 范数不是随便定义一个正数就完事我们从二维和三维空间里的“向量长度”说起。你在中学学过的勾股定理算一个向量 (x, y) 的长度就是 \sqrt{x^2 y^2}在三维就是 \sqrt{x^2y^2z^2}。这其实就是最常用的 2 范数欧几里得范数。但问题来了为什么长度非得用平方和开根号我能不能用 |x| |y| 来定义“长度”答案是可以这就是 1 范数。你也可以用 max(|x|, |y|) 来定义那是无穷范数。这些不同的“长度”度量方式都能用一条统一公式表达p 范数定义为各分量绝对值的 p 次方之和再开 p 次方。p 取 1 就是 1 范数p 取 2 就是常用的 2 范数p 趋向无穷大的时候得到的就是无穷范数。但并不是随便搞一个函数就能叫范数。严格地说一个合法的范数必须满足三个条件正定性除非向量为零向量否则范数一定大于零、齐次性数乘之后范数等于数的绝对值乘原范数、三角不等式两个向量相加的范数不超过各自范数之和。这三条缺一不可。正定性保证了“误差为零”和“两个向量完全相同”是一回事这对收敛性判断至关重要齐次性保证了对放大缩小的直觉是合理的三角不等式则保证了度量的一致性——从 A 走到 C 的距离不可能比从 A 到 B 再到 C 还远。我之前见过有人把“所有元素平方和开根号”直接当成矩阵的“2 范数”结果在论文审稿时被揪出来。这里先埋个伏笔矩阵的 2 范数不是元素平方和开根号那个叫 F 范数。这个区别到了第 3 节我会专门解释。2.2 常用的向量范数到底长什么样怎么选实际计算和理论分析里最常打交道的就三种向量范数1 范数所有分量绝对值之和。它的几何意义是“曼哈顿距离”就是你只能沿着坐标轴方向走的路径长度。2 范数各分量平方和开根号。这是最符合直觉的欧几里得距离。无穷范数分量的最大绝对值。它衡量的是“最大偏差”在误差分析里非常直观——比如多个分量中误差最大的那个是否超标。在机器学习里这三个范数直接对应不同的正则化策略。L1 正则化用的是 1 范数它会让模型参数变得稀疏很多分量变成零因为这个范数对“分散的小分量”惩罚更重L2 正则化用的是 2 范数它让参数整体变小但不会趋向零而某些鲁棒优化里用无穷范数约束“最坏情况下的误差”。所以当你看到论文里说“对这个向量取 L2 范数”它说的就是 \sqrt{\sum x_i^2}。说到底选哪个范数取决于你想强调什么想关注总误差用 2 范数想关注稀疏性用 1 范数想关注最大偏差用无穷范数。没有哪个是“绝对正确”的只有适不适合当前问题。3. 矩阵范数它不是“把矩阵拉直成向量”那么简单3.1 诱导范数从矩阵作用效果来定义大小假如你有一个矩阵 A它可以把一个向量 x 映射成另一个向量 Ax。那么矩阵 A 的“大小”应该怎么定义最自然的思路是看它能把向量“拉伸”到多大。这就是诱导范数也叫算子范数的核心——对所有单位长度的向量 x计算 ||Ax|| 的最大值。之所以用这种“最大拉伸比例”来定义矩阵大小是因为它在实际应用里太有用了。比如你做一个迭代求解每一步的误差放大倍数如果小于 1迭代就会收敛放大倍数大于 1误差就会指数级膨胀。而这个“最坏情况下的放大倍数”就是矩阵范数它直接决定了算法的稳定性。常用的诱导范数有三种1 范数矩阵每一列绝对值求和再取所有列中的最大值。它的含义是“向量经矩阵作用后1 范数最多被放大多少倍”。无穷范数矩阵每一行绝对值求和再取所有行中的最大值。它的含义类似但作用于无穷范数。2 范数矩阵最大奇异值即 A^T A 的特征值最大值开根号。这个在谱分析中地位极高。这三个范数里面1 范数和无穷范数特别容易计算就是按列或按行做绝对值和再取最大而 2 范数计算相对麻烦需要做奇异值分解但它在理论分析中往往最自然因为正交变换不改变它。3.2 F 范数和“相容性”这个隐形门槛除了诱导范数还有一种常见矩阵范数叫 Frobenius 范数F 范数。它的定义就是所有元素平方和开根号就像一个“把矩阵拉直成向量再取 2 范数”的复制品。它计算方便而且满足一个关键性质\left| AB \right|_F \le \left| A \right|_F \left| B \right|_F这个性质叫次乘性相容性。为什么要专门提相容性因为矩阵可以相乘如果两个矩阵范数不满足次乘性那对误差分析就是一个灾难。你想估计“A 乘 B 的误差”如果 B 的误差很小但 A 的范数很大结果误差就会放大 A 的范数倍。如果连 \left| AB \right| \le \left| A \right| \left| B \right| 都不保证那讨论误差上界就完全无从谈起。F 范数满足次乘性但注意它并不是诱导范数——没有任何一种向量范数能诱导出 F 范数。而任何一个诱导范数都天然满足次乘性因为定义方式就保证了相乘之后的放大倍数不超过各自放大倍数的乘积。这就是上一节我埋的那个坑的答案矩阵的“2 范数”只有唯一一个就是最大奇异值而 F 范数是元素平方和开根号。二者的计算结果通常不一样意义也不一样。F 范数适合描述整体元素的“能量大小”矩阵 2 范数描述的是“作为线性变换的最大杠杆比例”。3.3 计算实例一个具体的小矩阵拿一个二阶矩阵来演示A \begin{pmatrix} 3 1 \ 0 2 \end{pmatrix}1 范数先算列绝对值和第一列 |3||0|3第二列 |1||2|3最大值是 3所以 \left| A \right|_1 3。无穷范数按行算绝对值和第一行 |3||1|4第二行 |0||2|2最大值是 4所以 \left| A \right|_\infty 4。F 范数3^2 1^2 0^2 2^2 14开根号得 \sqrt{14} \approx 3.74。2 范数A^T A \begin{pmatrix} 9 3 \ 3 5 \end{pmatrix}特征值是 \frac{14\sqrt{40}}{2} \approx 10.16 和 \frac{14-\sqrt{40}}{2} \approx 3.84最大奇异值是 \sqrt{10.16} \approx 3.19。同一个矩阵不同范数算出来的“大小”分别是 3、4、3.74、3.19都不相等这说明什么说明你谈论矩阵范数时必须明确说清楚是用哪一种范数否则数值没有任何意义。这个细节在写论文、报告、给代码注释的时候特别重要我见过太多人只写“用范数判断收敛”却没有说明具体用的哪一种结果别人复现的时候数值怎么都对不上。4. 矩阵函数把函数变成“矩阵的马甲”4.1 为什么我们需要矩阵函数以及一个问题“函数是什么”先思考一个问题函数 f(x) e^x 里的 x 能不能替换成一个矩阵 A如果能e^A 是什么这个想法不是数学家的炫技它有一套非常具体的物理和工程需求。比如线性常微分方程 \frac{dx}{dt} A x其中 x 是一个向量A 是一个常系数矩阵。它的解是 x(t) e^{At} x(0)。这里就出现了矩阵指数 e^{At}。又比如在控制理论中离散系统一步演化是 x_{k1} e^{A\Delta t} x_k要求这个矩阵指数否则没法做仿真和状态预测。所谓矩阵函数就是把定义在实数或复数上的函数 f比如指数、正弦、平方根、对数推广到矩阵自变量上。你要问“那到底怎么推广”最直接的思路是把 f 展开成幂级数再把 x 替换成 A。比如 e^x 1 x \frac{x^2}{2!} \frac{x^3}{3!} \cdots那 e^A 就定义为 1 A \frac{A^2}{2!} \frac{A^3}{3!} \cdots。前提是这个幂级数对矩阵收敛。很多常用函数都能这么干这给了我们一个统一的构造框架。但要注意并不是所有函数都能用幂级数一路莽过去。比如 \log(A) 在原点的展开就要求 A 的特征值落在特定区域内再如 \sqrt{A} 在特征值不为正数时主分支的选择要特别小心。矩阵函数理论的一大块内容就是研究“什么样的函数能在什么样的矩阵上被合理地定义”。4.2 矩阵函数的三种构造路径以及为什么它们等价除了幂级数还有两条主流路径定义矩阵函数第一条是 Jordan 标准形路径。任意复数矩阵都能相似于 Jordan 形矩阵 J P^{-1} A P其中 J 是对角块组成的。如果能相似对角化即 J 是对角矩阵那么定义 f(A) P f(J) P^{-1}f 作用在每个对角元素上。如果 Jordan 块有非对角元素就需要对 f 的导数做赋值——每个 Jordan 块里对角线是 f(\lambda)上次对角线位置是 f(\lambda)再上面是 \frac{f(\lambda)}{2!}以此类推。这个方法非常通用但不适合直接做数值计算因为 Jordan 标准形本身数值不稳定。第二条是多项式插值路径。给定矩阵 A 的特征多项式 p(\lambda)用最小多项式或者特征多项式对函数 f 做多项式逼近再把矩阵 A 代入这个多项式。理论上是等价的但在工程计算里很少直接用它它更多是理论分析的工具。第三条就是前面说的幂级数路径也是计算中最常碰到的尤其对矩阵指数收敛性极好。对大多数场景幂级数定义最直接Jordan 标准形定义最能揭示结构多项式定义适合理论分析。三者给出的结果是一致的这个一致性也是矩阵函数理论里有意思的地方。我建议初学阶段先吃透幂级数和可对角化情形下的 Jordan 形定义因为现实中大量矩阵可以近似对角化而且求幂级数的截断项在实际计算中有天然的优势。4.3 一个重要的性质交换性才是“指数加法法则”的前提纯量函数里有个很自然的公式 e^{xy} e^x e^y那么矩阵版本是不是 e^{AB} e^A e^B很多初学者想当然地这么用结果完全不对。真相是只有当 A 和 B 可交换即 AB BA时才有 e^{AB} e^A e^B。否则在展开 e^A e^B 的时候会出现交叉项 AB 和 BA它们不等所以两个幂级数乘出来的结果对不上。这个坑在控制理论里非常容易踩。比如你要算两步转移矩阵 e^{(AB)t}如果你错误地拆成 e^{At} e^{Bt}后面整个仿真结果就错了。实际上很多教材里专门用 Baker–Campbell–Hausdorff 公式来讨论这种不交换情形下的修正项这已经是一门专门学问了。所以遇到矩阵函数运算第一反应应该是检查交换性而不是套熟知的纯量公式。5. 矩阵指数实战从定义到具体算出一个例子5.1 为什么矩阵指数会是“第一个要掌握的矩阵函数”矩阵指数 e^A 是矩阵函数里最重要的一个没有之一。因为线性系统分析、随机过程里的生成矩阵、图论里的扩散过程、机器学习里的流形映射到处都有它的身影。它也是后续学习矩阵对数和矩阵平方根的基础。计算 e^A 有两条路线如果 A 可以对角化那么 A P D P^{-1}其中 D 是对角线为特征值的对角矩阵于是 e^A P e^D P^{-1}而 e^D 就是直接把每个对角元素取指数。如果 A 不可对角化那就需要 Jordan 形不过对大多数实际工程技术问题先尝试数值算法更稳。在现代软件里比如数值计算库矩阵指数通常不会用特征值分解来做大面积数值计算因为特征值分解对某些病态矩阵会放大误差。它们更多使用 Padé 逼近结合 Scaling and Squaring 方法。核心思想是利用 e^A \left( e^{A / 2^k} \right)^{2^k}先通过缩放把矩阵的范数压小使得截断的 Padé 逼近误差可控然后做反复平方恢复结果。这个技巧极大地提高了稳定性。不过理解原理时用可对角化情形来算是最直观的。我自己上课讲这部分的时候一定会让学生先动手算一个 2 阶矩阵的矩阵指数感受一下路径依赖。5.2 一个手算可完成的例子取 A \begin{pmatrix} 0 1 \ -2 -3 \end{pmatrix}。特征多项式是 \lambda(\lambda 3) 2 \lambda^2 3\lambda 2 (\lambda1)(\lambda2)特征值为 -1 和 -2。因为互异所以 A 可对角化。解特征向量。对应 \lambda -1解 (A I)v 0即 \begin{pmatrix} 1 1 \ -2 -2 \end{pmatrix}取 v_1 \begin{pmatrix} 1 \ -1 \end{pmatrix}。对应 \lambda -2解 (A 2I)v 0即 \begin{pmatrix} 2 1 \ -2 -1 \end{pmatrix}取 v_2 \begin{pmatrix} 1 \ -2 \end{pmatrix}。所以 P \begin{pmatrix} 1 1 \ -1 -2 \end{pmatrix}D \begin{pmatrix} -1 0 \ 0 -2 \end{pmatrix}。P 的逆是 \begin{pmatrix} 2 1 \ -1 -1 \end{pmatrix}这个不展开验算了对照伴随矩阵法即可。然后 e^A P \begin{pmatrix} e^{-1} 0 \ 0 e^{-2} \end{pmatrix} P^{-1}。代进去化简得到的结果是 e^A \begin{pmatrix} 2e^{-1} - e^{-2} e^{-1} - e^{-2} \ -2e^{-1} 2e^{-2} -e^{-1} 2e^{-2} \end{pmatrix}。这个计算虽然简单但它展示了矩阵指数计算的完整套路特征值分解、对角部分取指数、变换回去。等你处理更大规模的矩阵计算软件帮你做这些步骤但原理上还是这一套。5.3 收敛性和误差分析的应用有了矩阵范数你就能分析 e^{At} 的误差放大情况了。比如说迭代算法中误差传播矩阵的范数是 0.8那么十步之后误差最多放大 0.8 的十次方约 0.107意味着误差逐步缩小算法稳定如果范数是 1.2误差每一轮至少增长两成算法必然发散。这就是矩阵范数 矩阵函数组合起来最直接的工程意义。你不需要跑完整轮迭代去判断算法稳不稳定只需要算一下相关矩阵的范数就能在开局阶段做预判。甚至可以说矩阵范数是矩阵函数的“安全仪表”它告诉你这个矩阵在反复乘法和指数演化下会不会出问题。6. 现场踩坑实录范数与矩阵函数常见的误区这部分是给已经看懂前面内容的读者准备的“加速包”。以下都是我实际在批改作业或者带项目时反复见到的问题整理成快速自查表误区实际正确做法后果把 F 范数当成矩阵 2 范数2 范数是最大奇异值F 范数是元素平方和开根号会高估或低估谱范数导致稳定性结论错误不分范数类型就写“误差小于 0.1”必须写明是哪种范数以及对应的矩阵/向量维度复现困难数值对不上直接套用 e^{AB} e^A e^B只有 ABBA 时才成立仿真和理论推导都会歪掉以为所有矩阵都能随意开方或取对数特征值为负数时需要注意分支选择得到复数结果或者根本无定义忽略次乘性条件的范数分析确认所用范数满足 |AB| \le |A||B|误差上界导出错误结论计算矩阵指数总是先找 Jordan 形数值计算优先用 Padé 逼近或比例平方方法病态场景下误差不可控再看一个实际案例有同学做某控制系统稳定性验证把状态转移矩阵的谱半径特征值最大模判断成“绝对值小于 1 就稳定”结果仿真里系统还是发散。原因是他忽略了非正规矩阵特征向量矩阵条件数很大情况下谱半径只能给出渐进行为但短期内矩阵范数可以远大于 1中间过程能量暴涨。这时候真正该看的是矩阵范数尤其是稳定裕度的分析里二者要结合来看。这个问题在非正规算子的研究中特别出名教材里讲得不深工程里又很容易被忽视。我的建议是做任何矩阵范数相关分析前先把“谱半径、诱导 2 范数、F 范数”三个量的定义和适用场景写在分析文档第一页。它们常常一起出现但意义完全不同谱半径只管渐进行为F 范数管整体能量诱导 2 范数管最大放大倍数。7. 写在最后学这部分内容我个人坚持的两个习惯第一个习惯先问“这个量定义出来是为了控制什么”再去看数学表达式。范数和矩阵函数不是无聊的公理游戏。每当你遇到一个定义先找到它对应的工程问题——比如 1 范数是稀疏惩罚、矩阵指数是微分方程的解、次乘性是误差分析的保障——你就不会觉得矩阵论是空中楼阁。我当年学这里时吃过亏的地方就是对着公式背定义背完就忘后来改成先在特例矩阵上手动算一遍并且想一想“它要是没这个性质会怎样”记忆就牢固多了。第二个习惯手算一个 2 阶或 3 阶小例子再用软件计算结果核对。比如算 e^A 之前自己先用对角化方法推一遍再用数值库验算。如果两边对不上就说明你对“特征向量排列”“逆矩阵方向”或“Jordan 块中导数项位置”的理解有偏差。这些小例子成本极低但能堵住大量将来在大项目里才能暴露的问题。下一篇系列文章里我打算接着写矩阵对数和矩阵平方根以及它们在扩散方程、随机过程和状态转移中的应用。如果你正在跟一门矩阵论课程或者做研究时遇到了类似困惑也可以按这个思路把教材对应章节重新过一遍——定义 - 动机 - 手算例子 - 和软件结果对照。这套组合拳帮我把矩阵分析这块从“考试用”变成了“真能用”。
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。