最近整理高等代数讲义时我又把“二次型与合同变换”这一章从头到尾过了一遍越看越觉得它被严重低估。很多学生把它当成“配方题的流水线”考完就扔。可我自己折腾数值优化和三维几何相关的小项目时发现真正绕不开的恰恰就是这一章。这个章节表面上是把一个多项式化成平方和背后其实藏着两条主线一条是几何里的二次曲面分类一条是优化里的收敛性分析。更妙的是合同变换作为“换坐标系”的操作同时服务这两条主线。如果你是正在学线性代数的学生、准备考研刷题的备考者或者做数值计算、机器学习、图形学的从业者这篇文章都值得读下去。我会把惯性定理、主轴定理、条件数、梯度下降这些看似零散的概念串成一条线然后把实操中最容易踩的坑一个个拿出来摆平。1. 为什么二次型既挂在几何门下又挂在优化门下1.1 二次型的标准姿势一句话说清“矩阵乘法型多项式”二次型从定义上讲是 n 个变量的二次齐次多项式(f(x_1,\dots,x_n)\sum_{i,j}a_{ij}x_i x_j)。把所有系数排成一个矩阵就能写成矩阵乘法的形式[ f(\mathbf{x})\mathbf{x}^T A \mathbf{x} ]这里 A 通常默认是实对称矩阵。有人会问如果拿到的 A 不对称怎么办没关系因为 A 的对称部分 ((AA^T)/2) 与 A 给出的二次型完全相同交叉项 (a_{ij}a_{ji}) 会被自动合并。这个“只看对称部分”的习惯在数值计算里很值钱后面遇到的 Hessian 矩阵天然是对称的但程序里总有人不小心填充了非对称数据先做一次对称化往往能避免一堆诡异结果。为什么非得强调对称因为只有实对称矩阵才保证有正交对角化、特征值实数这一整套好工具。这套工具正是主轴定理、正定性判定的基础。换句话说二次型之所以能“从几何到优化”一路讲下去靠的就是对称矩阵这种“好脾气”。一个非对称矩阵虽然也能写出二次型但它不会给你任何几何上的稳定结构优化里的凸性分析也会直接失效。1.2 几何里的二次型等值面不是椭圆就是双曲面试想平面上的方程 (x^2y^21)这是一个圆写成矩阵形式就是 (\mathbf{x}^T \mathrm{diag}(1,1)\mathbf{x}1)。稍微变形(x^24y^21)就成了椭圆长轴短轴清清楚楚。到了三维(x^2y^2z^21) 是球(x^2/a^2y^2/b^2z^2/c^21) 是椭球。把一些系数改成负数(x^2/a^2y^2/b^2-z^2/c^21) 是单叶双曲面改成两个负号就是双叶双曲面。它们全部是 (\mathbf{x}^T A \mathbf{x}\text{常数}) 的形式。所以二次型就是二次曲面的“代数身份证”。这也是为什么解析几何课会在二次型之后讲曲面分类你不需要把每个方程画在纸上只要看 A 的符号结构就能知道这个图形是封闭的还是发散的是凸的还是带鞍点的。我当年学到这里时最大的顿悟是原来画二次曲面图这件事本质上是在做矩阵特征值的符号分析。1.3 优化里的二次型所有光滑函数的“局部标准像”优化理论里有个极其重要的思想任何光滑多元函数在某个点附近做二阶泰勒展开前几项分别是常数、线性项、二次项。展开式中的二次项就是 Hessian 矩阵和位移向量构成的二次型[ f(\mathbf{x}\delta) \approx f(\mathbf{x}) \mathbf{g}^T\delta \frac{1}{2}\delta^T H\delta ]这意味着二次型是非线性优化问题在局部最好的近似。更直接的是无约束二次规划 (\min \frac{1}{2}\mathbf{x}^T A \mathbf{x}-\mathbf{b}^T\mathbf{x}) 本身就是无数优化算法教材的开篇例题因为它简单到可以解析求解又复杂到能够暴露梯度下降的缺陷。连深度学习中常用的 L2 正则化本质上也是在目标函数里加一个 (\epsilon|\mathbf{x}|^2) 这样的二次型项。一个看似只有“配方变形”的章节实际上连接了两大用途几何上判断曲面形态优化上判断目标函数好不好解。理解这一点再看后面的合同变换就不会觉得它只是矩阵技巧而是在回答一个问题换一个坐标系之后还是同一个曲面、同一个函数为什么就变得更容易看清、更容易求解了2. 合同变换到底在等价什么从换坐标系到惯性定理2.1 一次换坐标串起整个定义设原坐标 (\mathbf{x}) 用新坐标 (\mathbf{y}) 表示为 (\mathbf{x}P\mathbf{y})其中 P 可逆。那么原二次型 (\mathbf{x}^T A\mathbf{x}) 就变成了[ \mathbf{y}^T (P^T A P)\mathbf{y} ]记 (BP^T A P)就称 A 与 B 合同。这就是合同变换的全部几何含义它在同一个二次型、同一个曲面的不同坐标系表达之间切换。椭球还是那个椭球但坐标轴转了一个角度、换了一个比例之后方程的形式跟着变了。我给学生讲这个概念时常用一个类比一件衣服穿在不同人身上版型一样但具体各部位的尺寸数字不同。合同变换就是在换试衣模特衣服本身的“体型类别”不变。后面讲的惯性定理说的就是“体型类别”。2.2 合同与相似两个容易被记混的“等价关系”相似变换 (BP^{-1}AP) 保持特征值合同变换 (BP^T A P) 不保持特征值但保持符号结构。什么时候二者重合当 P 是正交矩阵时(P^{-1}P^T)一个变换同时是相似与合同。这正是主轴定理的威力所在。有个经典例子(A\mathrm{diag}(1,1))取 (P\sqrt{2}I)则 (P^T A P\mathrm{diag}(2,2))。A 与 diag(2,2) 合同但不相似——特征值明显从 1 变成了 2。所以这里有个重要推论配方法配出来的“平方项系数”并不是原矩阵的特征值。这一点很多教材都会强调但真正做题时仍有大量同学在这里翻车后面我也会专门讲。变换公式保持的量典型用途相似(BP^{-1}AP)特征值、迹、行列式、特征多项式对角化、矩阵函数计算合同(BP^TAP)惯性指数、秩、正定性标准形、曲面分类、优化预处理正交(BQ^TAQ)上述两者主轴定理、PCA、SVD这张表建议抄在笔记里每次做题前先确认题目说的是“相似”还是“合同”。我从教这些年见过太多人一上来就求特征值结果题目明明是在考惯性定理。2.3 惯性定理不管怎么变形符号的个数不动摇惯性定理也叫西尔维斯特惯性定理说实对称矩阵在合同变换下正惯性指数 p、负惯性指数 q、零惯性指数 (n-p-q) 都不变。换句话说无论你配方配出正系数还是负系数即使系数的具体数值不一样“有几个正平方项、有几个负平方项”是雷打不动的。这个道理放在换坐标的几何视角里非常直观一个椭球无论如何旋转、缩放坐标轴不会变成双曲面所以正惯性指数不会从 3 变成 2。反过来说如果你在某个坐标系里看到方程是“两个正号加一个负号”那所有坐标系里它都保持了“两个正号加一个负号”这个结构。求 p、q 的常用方法有三个直接求特征值看符号用配方法化成标准形再数符号用初等行列变换合同演算化成对角形。前两种适合考试第三种在手工计算时一旦熟练会非常快因为不需要解特征方程。2.4 配方法实操把一个二次型化成平方和直接看例子。给定[ f(x_1,x_2)x_1^24x_1x_2x_2^2 ]配方法的思路是“逐变量消灭交叉项”[ x_1^24x_1x_2x_2^2(x_12x_2)^2-4x_2^2x_2^2(x_12x_2)^2-3x_2^2 ]所以正惯性指数是 1负惯性指数是 1符号差是 0。对应的对称矩阵是 (A\begin{bmatrix}12\21\end{bmatrix})特征值为 3 和 -1确实 p1、q1。注意标准形里的系数是 1 和 -3不是特征值 3 和 -1。这就是我之前说的坑配方法只告诉你符号结构不告诉你特征值。如果需要矩阵化的合同演算做法是对 A 进行“同型初等行列变换”。什么是同型每一步先做某个初等行变换再对变换后的矩阵做对应的初等列变换。两步绑定在一起才等价于左右同时乘以某个可逆矩阵及其转置即 (P^TAP) 的效果。常见错误是只改行、不改列或者行列变换顺序不一致那样得到的矩阵就不再与 A 合同了。提示手工做合同演算时在草稿纸上左边写 A右边写一个同阶单位阵每做一次“行变换加列变换”同时让右边单位阵跟着做同样的行变换注意方向最后右边矩阵的转置就是 P。这个做法是我带学生做课后题时发现的最快路径可以少走很多弯路。3. 几何视角用正负惯性指数看图用主轴定理找方向3.1 一张表读懂三维二次曲面的类型对形如 (\mathbf{x}^T A\mathbf{x}1) 的标准方程只要看 A 的特征值符号结构就能判断大致形状。最简洁的判断依据是正惯性指数 p 和负惯性指数 qA 的符号结构曲面类型全正p3, q0椭球面一个负号p2, q1单叶双曲面两个负号p1, q2双叶双曲面存在零特征值锥面或柱面需要结合一次项判断这个表背后就是惯性定理不管你怎么旋转坐标符号的个数不变所以曲面的“大类”不会变。换句话说你看到方程里有交叉项不要慌先做合同变换或求特征值符号判断它到底是什么形状。举个实际例子方程 (x_1^22x_1x_2x_2^2x_3^21) 可以写成二次型矩阵为 (A\begin{bmatrix}110\110\001\end{bmatrix})特征值中有 2、0、1。因为有零特征值它不是一个普通的椭球面而是朝着某个方向“压扁”成了柱面形状。如果你只会硬画图这种带零特征值的情况很容易画错。3.2 主轴定理椭球的轴藏在特征向量里主轴定理也就是谱定理说实对称矩阵 A 可以被正交矩阵 Q 对角化即 (Q^T A Q\mathrm{diag}(\lambda_1,\dots,\lambda_n))。在二次曲面 (\mathbf{x}^T A\mathbf{x}1) 的语境下Q 的每一列就是椭球一个主轴的方向(\lambda_i) 的倒数开方就是沿该方向的半轴长度。举个例子(A\mathrm{diag}(1,4))方程 (x_1^24x_2^21) 是椭圆长半轴是 1沿 x_1 方向短半轴是 1/2沿 x_2 方向。如果 A 的特征向量是旋转 45 度的方向方程里就会冒出交叉项 (x_1x_2)但只要做一次坐标旋转交叉项立刻消失方程变回标准椭圆形式。这就是“主轴定理”名称的来历我们找的坐标系正好对齐了图形的主轴。实操上要画任意一个椭圆或椭球比如从三维点云拟合出的协方差矩阵直接做特征分解单位特征向量就是主轴方向长短轴由特征值平方根的倒数给出。这个操作在 PCA、椭球拟合里面是每天的饭。3.3 从正定性看图形凹凸凸与椭球是一回事正定意味着所有特征值为正等值面是一族封闭的椭球。负定则是倒扣的“碗”等值面还是椭球但函数值在上方下降。不定则出现马鞍面某些方向上是凸的某些方向上是凹的因此没有唯一极小点优化算法很容易在这种地形上迷失。这里有个很直观的生活类比把二次函数想象成地形。正定时你站在山谷里怎么走都是上坡极小点唯一负定时站在山顶怎么走都是下坡不定时你站在一个马鞍上前后是下坡左右是上坡初看起来好像有极小点沿着某些方向走一会才发现是下坡。这是许多优化算法失效的最典型地形。提示判断一个对称矩阵是否正定最靠谱的几何理解是“等值面是封闭椭球”。如果一个矩阵的某个方向特征值为负那么这个方向上的等值线就是开口向外的目标函数顺着这个方向能跑到负无穷。正定性和凸性在这里接上了。4. 优化视角二次型决定了一票算法的命运4.1 二次目标函数求导、解方程、找中心考虑 (f(\mathbf{x})\frac{1}{2}\mathbf{x}^T A\mathbf{x}-\mathbf{b}^T\mathbf{x}c)其中 A 是对称正定矩阵。它的梯度是[ \nabla f(\mathbf{x})A\mathbf{x}-\mathbf{b} ]令梯度为零得到 (\mathbf{x}^*A^{-1}\mathbf{b})。几何上这个点就是一族同心椭球的中心解析上它同时是无约束极小点。这和你求单变量二次函数最小值一模一样只不过导数变成了梯度二阶导变成了 Hessian 矩阵。如果 A 半正定情况会麻烦一些极小点可能不存在或者有无穷多个。如果 A 不定那么 (\mathbf{x}^*A^{-1}\mathbf{b}) 只是一个鞍点不是极小点。所以“正定”这个词在优化里不是可有可无的修辞它直接决定了问题有没有唯一答案。4.2 条件数等值面越扁梯度下降越慢梯度下降迭代是 (\mathbf{x}{k1}\mathbf{x}k-\alpha\nabla f(\mathbf{x}k))。对二次型来说特征值 (\lambda{\min}) 和 (\lambda{\max}) 决定了收敛速度。定量结论是如果采用最优步长误差按 (\left(\frac{\kappa-1}{\kappa1}\right)^k) 的速率衰减其中 (\kappa\frac{\lambda{\max}}{\lambda_{\min}}) 是条件数。(\kappa1) 时一次迭代收敛因为等值线是圆梯度方向直指圆心。(\kappa10) 时每步衰减约 0.82走 50 步误差能降到初始的万分之一量级(\kappa100) 时每步衰减约 0.9850 步之后误差还剩下 36%。这个差距非常可观。所以“等值面越扁算法越慢”不是玄学是可以写公式的可测性质。如果想亲手验证代码非常简单import numpy as np A np.array([[4.0, 0.0], [0.0, 1.0]]) # 条件数4 b np.zeros(2) x np.array([1.0, 0.5]) for k in range(50): grad A x - b x x - 0.4 * grad # 最优固定步长 2/(41)0.4 if k % 10 0: print(k, np.linalg.norm(x))换成条件数更大的矩阵你会看到收敛曲线肉眼可见地“躺平”。这个实验我经常让学生做比背公式管用。4.3 牛顿法用二次型做“透视镜”牛顿法的每一步要求解 (H\mathbf{p}-\mathbf{g})其中 H 是当前 Hessian 矩阵g 是梯度。对于正定二次函数Hessian 恒等于 A因此一步到位[ \mathbf{x}_{\text{new}}\mathbf{x}-A^{-1}(A\mathbf{x}-\mathbf{b})A^{-1}\mathbf{b}\mathbf{x}^* ]这就是为什么说“牛顿法在二次型上是作弊器”它直接利用二阶信息还原了函数整体形状不用像梯度下降那样一点点试探。对非二次函数牛顿法本质上是把函数在局部看成二次型反复求这个局部二次型模型的极值点。因此二次型学得好不好直接决定你对牛顿法的理解深度。我常跟人说一个粗鲁但准确的类比梯度下降像盲人摸象每次只摸到一个方向的斜坡牛顿法像直接拍了一张 CT 扫描图看到整个地形再决定往哪走。二次型就是那张 CT 影像的底层格式。4.4 合同变换与预条件把“扁椭球”拉回“球”优化实战里遇到条件数很大的问题第一反应是做预处理。常用的对角缩放、不完全 Cholesky、平衡法本质上都是在寻找一个可逆矩阵 P让变换后的矩阵 (P^TAP) 条件数变小。注意这正是合同变换。如果 P 取 (R^{-1})并且 A 有 Cholesky 分解 (AR^TR)那么[ P^TAPR^{-T} A R^{-1}I ]条件数直接降到 1。这是理论上的最优预处理。实际中我们不会真的付出一次完整分解的代价去换一步迭代但你能明白预处理的数学本质不是魔法是找一个好坐标系把椭球压成球。这个认知在有限元刚度矩阵预处理、机器学习特征缩放里都很有用。提示当你看到某个优化算法对“特征缩放”特别敏感时心里立刻要想到条件数和合同变换。数据分布是扁椭球梯度下降爬山就费劲把坐标轴按特征值方向归一化椭球变成球算法自然顺滑。5. 新手最容易踩的坑与排查手册5.1 合同演算中的“行列同步”老搞错这是做矩阵化配方法的经典错误。有人对矩阵做了一次行变换却忘了做列变换有人先做行变换再单独做列变换结果顺序记反。正确做法是“每做一步行变换立刻对当前矩阵做同样作用的列变换”两步绑定成一个整体。例如要把第二行加到第一行那就先把第二行加到第一行再把第二列加到第一列。为什么必须这样因为合同变换要求左右同时乘 (P^T) 和 (P)你只做半边得到的新矩阵与原矩阵根本不同。检验方法很简单算出来的对角形再倒回去用变换矩阵 P 验证 (P^TAP) 是否等于它。如果对不上说明同步出了问题。5.2 顺序主子式判定法的两个坑坑一正定需要所有顺序主子式都大于零不是只有最后一个行列式大于零。很多人只算 (n) 阶行列式发现大于零就宣布正定这是不对的。比如矩阵的对角元本身出现负数最后一个行列式可能还是正的但它肯定不正定。坑二半正定需要用所有主子式非负而不是只检查前 n 个顺序主子式。举个例子(A\begin{bmatrix}00\0-1\end{bmatrix})前 1 阶顺序主子式是 0前 2 阶行列式也是 0但显然它不是半正定因为右下角有个 -1。只有顺序主子式不够需要所有主子式。工程上判断大规模矩阵是否正定我几乎不用顺序主子式因为浮点误差可能把一个极小特征值算成负的。更稳的做法是直接尝试 Cholesky 分解分解失败就说明至少不是数值正定。5.3 配方法的系数不等于特征值这是考试翻车重灾区。前面那个例子 (x_1^24x_1x_2x_2^2) 配方得到正项 1、负项 -3可矩阵特征值是 3 和 -1。标准形里的系数只是告诉你符号结构不负责提供特征值和特征方向。当你需要特征值时必须对原来的 A 做特征值分解。当你想快速判断惯性指数但又不想求特征值时可以用惯性定理配合合同变换——因为合同变换保持符号个数但最后系数依然不是特征值别把两者混为一谈。考试里如果允许用计算器或软件求特征值是最省心的如果纯手算优先配方或者合同演算。5.4 半正定矩阵在数值运算里的“易碎体质”半正定意味着有零特征值椭球被压扁成“无限薄的盘子”。在浮点运算里判定一个数是否等于 0 非常不可靠。遇到类似二次型时不要直接查“主元是否为零”要设一个容差比如看分解得到的对角元是否小于 (eps \times \max_diag)。想要它变成严格正定常见做法是加一个小对角扰动 (\epsilon I)这就是岭回归和 L2 正则化的数学根源。理解了这一点就明白为什么机器学习里的正则项总是一个二次型 (\epsilon|\mathbf{x}|^2)它把半正定协方差矩阵拉成正定让训练过程稳定。不是玄学是数值线性代数的基本常识。5.5 只看特征值不看特征向量会把曲面方向完全搞错两个矩阵特征值一样但特征向量不同对应的椭球朝向完全不同。比如 (A\mathrm{diag}(1,4)) 和 (BQ^T\mathrm{diag}(1,4)Q)某个 45 度旋转特征值都是 1 和 4但主轴方向一个沿坐标轴一个转了 45 度。如果不看 Q你只知道长轴短轴比例但不知道长轴朝哪个方向。在几何和数据分析里主轴方向往往比特征值更重要否则你没法把目标和数据对齐。PCA 的经典操作就是先中心化数据再对协方差矩阵做特征分解主方向就是特征向量方差就是特征值。这个过程本质上是主轴定理的应用只是很少有人在你第一次学二次型时告诉你这个定理会一路用到底。最后再分享一个我一直在用的懒办法拿到一个实对称矩阵先别急着展开计算先问自己三件事——它对称吗它的正定性如何它的条件数大概什么量级这三个问题回答完几何上的图形形态和优化上的算法选择基本就有谱了。二次型和合同变换真正教会我的不是配方而是“给问题找一个好坐标系”的思维。这种思维在机器学习特征缩放、信号白化、有限元预处理里会出现无数次。学完这一章我建议你合上书随便拿一个二维正定矩阵画出它的椭圆等值线和梯度下降轨迹再看看牛顿法的一步直达。那种直观印象比背十个定理都深刻。