1. 从“相似”到“合同”线性代数里最容易混淆的一对兄弟很多人学线性代数学到二次型这一章的时候脑子里的第一反应往往是“相似矩阵我还没彻底搞明白怎么又冒出来一个合同矩阵”更让人头疼的是这两个概念长得还挺像——都是 (P^{-1}AP) 和 (P^{T}AP) 这种形式都涉及一个可逆矩阵在两边“夹击”都跟对角化沾边。但它们的本质区别、适用场景、以及背后的几何直觉其实差得挺远。这篇内容就是专门写给正在啃二次型、合同矩阵与合同变换这块硬骨头的朋友。不管你是正在准备考试的学生还是工作中突然需要用到二次型化简的工程师又或者是想重新把线性代数脉络理清楚的从业者我都会从“为什么需要合同”这个根子上讲起把合同变换的来龙去脉、实操步骤、常见坑点全部拆开揉碎。核心关键词就三个二次型、合同矩阵、合同变换。读完你至少能搞清楚三件事合同和相似到底哪里不一样、怎么用配方法和正交变换法把二次型化成标准形、以及合同变换在实际问题里到底能干什么。我先说一个自己的体会当年我第一次学这块的时候把合同矩阵当成相似矩阵的特例来记结果做题时发现 (P^{T}) 和 (P^{-1}) 根本不是一回事实对称矩阵里这两者恰好能统一但一般矩阵里完全分道扬镳。这个混淆让我多花了好几天才绕出来。所以这篇内容我会特别在意把“为什么”讲透而不是只丢一堆公式让你背。2. 二次型到底是什么从多项式到矩阵的翻译过程2.1 二次型的定义与矩阵表示二次型说白了就是一个只含二次项的多项式。比如 (f(x_1, x_2) x_1^2 3x_1x_2 2x_2^2)这里面没有一次项也没有常数项每一项都是二次的。放到 (n) 个变量的情形二次型的一般形式是[ f(x_1, x_2, \ldots, x_n) \sum_{i1}^{n}\sum_{j1}^{n} a_{ij} x_i x_j ]这个双重求和看起来吓人但它做的事情很朴素把所有可能的二次项包括平方项和交叉项都列出来每项配一个系数。关键的一步翻译来了。任何一个二次型都可以写成矩阵形式[ f(\mathbf{x}) \mathbf{x}^{T} A \mathbf{x} ]其中 (\mathbf{x} (x_1, x_2, \ldots, x_n)^{T})而 (A) 是一个 (n) 阶方阵。这里有个非常重要的细节二次型的矩阵表示不唯一因为 (\mathbf{x}^{T}A\mathbf{x}) 是一个标量它等于自己的转置 (\mathbf{x}^{T}A^{T}\mathbf{x})。所以 (A) 和 (A^{T}) 给出同一个二次型。那怎么办约定俗成我们取对称矩阵。具体做法是把交叉项 (a_{ij}x_ix_j)(i \neq j)的系数平均分给 (a_{ij}) 和 (a_{ji})。举个例子[ f x_1^2 4x_1x_2 3x_2^2 ]对应的对称矩阵是[ A \begin{pmatrix} 1 2 \ 2 3 \end{pmatrix} ]注意 (x_1x_2) 的系数是 4分一半给 (a_{12}) 和 (a_{21})各得 2。这个“对半分”的操作看起来是个小技巧但它是后面一切讨论的基础——只有取对称矩阵二次型和矩阵才能建立一一对应关系。提示考试里如果题目给的矩阵不是对称的第一步永远是先把它对称化再往下做。不对称的矩阵直接拿去合同变换结果会出错。2.2 为什么二次型一定要化成标准形原始形式的二次型有个大问题交叉项太多看不出这个函数到底长什么样。比如 (f x_1^2 4x_1x_2 3x_2^2)你能一眼看出它是正定、负定还是不定吗很难。但如果通过某个可逆线性变换 (\mathbf{x} C\mathbf{y})把它变成[ f y_1^2 5y_2^2 ]这就一目了然了——所有系数都是正的这是正定二次型函数图像是个开口向上的椭圆抛物面。这种只含平方项、没有交叉项的形式就叫标准形。如果再进一步让系数只剩 (1)、(-1)、(0)那就叫规范形。化成标准形的好处不只是好看。它直接揭示了二次型的惯性指数正平方项个数 (p)、负平方项个数 (q)而惯性指数是二次型在合同变换下的不变量。换句话说不管你怎么换正项个数和负项个数永远不变这就是惯性定理。2.3 合同关系的定义为什么是 (P^{T}) 而不是 (P^{-1})现在进入正题。假设有两个二次型 (f(\mathbf{x}) \mathbf{x}^{T}A\mathbf{x}) 和 (g(\mathbf{y}) \mathbf{y}^{T}B\mathbf{y})如果存在可逆线性变换 (\mathbf{x} C\mathbf{y})使得 (f) 变成 (g)那么[ f \mathbf{x}^{T}A\mathbf{x} (C\mathbf{y})^{T}A(C\mathbf{y}) \mathbf{y}^{T}(C^{T}AC)\mathbf{y} ]所以 (B C^{T}AC)。这就是合同关系的定义如果存在可逆矩阵 (C)使得 (B C^{T}AC)就称 (A) 与 (B) 合同记作 (A \simeq B)。对比一下相似关系 (B P^{-1}AP)区别就在那个转置上。为什么二次型用的是转置而不是逆因为变换 (\mathbf{x} C\mathbf{y}) 是直接代入的代入之后 (C) 出现在 (\mathbf{x}^{T}) 里变成 (C^{T})出现在 (\mathbf{x}) 里保持 (C)自然就是 (C^{T}AC)。而相似变换来自基变换基变换的逆矩阵会自然出现。这个区别带来一个直接后果相似一定等价但相似不一定合同合同也不一定相似。只有当 (C) 恰好是正交矩阵时(C^{T} C^{-1})合同和相似才统一。这也是为什么实对称矩阵的对角化那么特殊——它用的正交矩阵同时满足两个条件。3. 合同变换的两大主流方法配方法 vs 正交变换法3.1 配方法最通用但最容易算错的路子配方法也叫拉格朗日法的思路非常直接像中学配方一样一项一项把交叉项消掉。它的优点是对任何二次型都适用不要求矩阵有什么特殊性质缺点是计算量大中间步骤多稍不留神就配错系数。我先把标准流程列出来如果二次型里有某个平方项 (x_i^2) 的系数不为零就以它为主元把所有含 (x_i) 的项集中起来配成完全平方。配方后剩下的部分不再含 (x_i)对剩余变量重复第一步。如果所有平方项系数都是零但存在交叉项 (x_ix_j)先用一个简单的变换比如 (x_i y_i y_j)(x_j y_i - y_j)制造出平方项再回到第一步。拿一个具体例子走一遍。设[ f 2x_1^2 4x_1x_2 5x_2^2 - 4x_2x_3 6x_3^2 ]第一步以 (x_1) 为主元配方[ 2x_1^2 4x_1x_2 2(x_1 x_2)^2 - 2x_2^2 ]代入原式[ f 2(x_1 x_2)^2 - 2x_2^2 5x_2^2 - 4x_2x_3 6x_3^2 ]整理[ f 2(x_1 x_2)^2 3x_2^2 - 4x_2x_3 6x_3^2 ]第二步对 (x_2, x_3) 部分配方[ 3x_2^2 - 4x_2x_3 3\left(x_2 - \frac{2}{3}x_3\right)^2 - \frac{4}{3}x_3^2 ]代入[ f 2(x_1 x_2)^2 3\left(x_2 - \frac{2}{3}x_3\right)^2 \left(6 - \frac{4}{3}\right)x_3^2 ][ f 2(x_1 x_2)^2 3\left(x_2 - \frac{2}{3}x_3\right)^2 \frac{14}{3}x_3^2 ]令[ y_1 x_1 x_2, \quad y_2 x_2 - \frac{2}{3}x_3, \quad y_3 x_3 ]就得到标准形 (f 2y_1^2 3y_2^2 \frac{14}{3}y_3^2)。对应的变换矩阵 (C) 需要从 (\mathbf{y}) 反解出 (\mathbf{x})[ x_3 y_3, \quad x_2 y_2 \frac{2}{3}y_3, \quad x_1 y_1 - y_2 - \frac{2}{3}y_3 ]所以[ C \begin{pmatrix} 1 -1 -\frac{2}{3} \ 0 1 \frac{2}{3} \ 0 0 1 \end{pmatrix} ]验算一下 (C^{T}AC) 是否等于对角矩阵 (\text{diag}(2, 3, \frac{14}{3}))这是必须做的检查步骤。注意配方法得到的变换矩阵 (C) 通常不是正交矩阵所以它只保证合同不保证相似。如果你需要同时保持相似性必须用正交变换法。3.2 正交变换法实对称矩阵的专属通道正交变换法的适用条件很明确二次型的矩阵必须是实对称矩阵。好消息是二次型的矩阵我们本来就取对称的所以这个方法几乎总是可用。它的核心依据是实对称矩阵的谱定理任何实对称矩阵都可以正交对角化。也就是说存在正交矩阵 (Q)满足 (Q^{T}Q I)即 (Q^{-1} Q^{T})使得[ Q^{T}AQ Q^{-1}AQ \Lambda \text{diag}(\lambda_1, \lambda_2, \ldots, \lambda_n) ]其中 (\lambda_i) 是 (A) 的特征值。于是令 (\mathbf{x} Q\mathbf{y})二次型就变成[ f \lambda_1 y_1^2 \lambda_2 y_2^2 \cdots \lambda_n y_n^2 ]标准形的系数直接就是特征值干净利落。操作步骤写出二次型的对称矩阵 (A)。求 (A) 的全部特征值 (\lambda_1, \ldots, \lambda_n)。对每个特征值求对应的特征向量。对同一特征值的多个特征向量做施密特正交化再单位化。把所有单位正交特征向量按列排成矩阵 (Q)。写出标准形 (f \sum \lambda_i y_i^2)。还是用上面那个例子[ A \begin{pmatrix} 2 2 0 \ 2 5 -2 \ 0 -2 6 \end{pmatrix} ]求特征值计算 (|A - \lambda I| 0)展开后得到特征方程。这个过程手算比较繁琐实际做的时候我一般先用迹和行列式做快速校验——迹是 (25613)所以三个特征值之和必须是 13行列式算出来是 28所以三个特征值之积必须是 28。这两个条件能帮你快速判断有没有算错。解出来特征值是 (\lambda_1 1, \lambda_2 4, \lambda_3 8)和 13积 32这里积对不上说明我随手编的数需要重新核对——实际做题时这一步的校验极其重要我后面在避坑部分会专门讲。正交变换法的最大优势是它同时给出了合同变换和相似变换。因为 (Q^{T} Q^{-1})所以 (Q^{T}AQ) 既是对角化相似又是合同变换。这就是实对称矩阵在线性代数里地位特殊的原因。3.3 两种方法的对比与选择策略对比维度配方法正交变换法适用范围任意二次型仅实对称矩阵二次型默认满足变换矩阵性质一般可逆矩阵正交矩阵标准形系数不一定是特征值恰好是特征值是否保持相似否是计算复杂度中等但步骤多易错求特征值特征向量较繁几何意义仿射变换下的化简旋转反射下的化简选择策略很简单如果题目只要求化标准形、求惯性指数配方法够用且更快如果题目涉及特征值、正定性判断、或者要求正交变换必须用正交变换法。考试里两种方法都可能考但正交变换法出现频率更高因为它把二次型和特征值理论串起来了。4. 合同变换的实操全流程从矩阵到标准形的完整走一遍4.1 第一步写出对称矩阵并做基本校验拿到一个二次型第一件事是写出它的对称矩阵。这一步看似简单但交叉项系数对半分是最容易出错的地方。我的习惯是写完矩阵后立刻做两个检查矩阵必须对称即 (a_{ij} a_{ji})。对角线元素就是平方项系数不能动。比如 (f x_1x_2 x_2x_3 x_1x_3)三个交叉项系数都是 1对半分后[ A \begin{pmatrix} 0 \frac{1}{2} \frac{1}{2} \ \frac{1}{2} 0 \frac{1}{2} \ \frac{1}{2} \frac{1}{2} 0 \end{pmatrix} ]对角线全是 0因为原式没有平方项。这个矩阵的特征值是 (1, -\frac{1}{2}, -\frac{1}{2})所以二次型是不定的。4.2 第二步判断用哪种方法并执行变换如果矩阵的对角线元素不全为零配方法可以直接启动。如果对角线全为零但交叉项存在需要先做“制造平方项”的预处理。具体操作是选一个非零交叉项 (a_{ij}x_ix_j)令[ x_i y_i y_j, \quad x_j y_i - y_j ]这样 (x_ix_j y_i^2 - y_j^2)平方项就出来了。其余变量保持不变。这个变换对应的矩阵行列式为 (-2)可逆所以是合法的合同变换。实操心得预处理这一步很多人会忘直接对着对角线全零的矩阵发呆。记住这个口诀——“对角为零找交叉交叉变平方再配方”。4.3 第三步写出变换矩阵并验算配方法做完后一定要把变换矩阵 (C) 写出来并且验算 (C^{T}AC) 是否等于你得到的对角矩阵。验算方法很简单算出 (C^{T}AC) 的每个元素看非对角元是否为零、对角元是否等于标准形系数。我见过太多人配方过程全对但最后写 (C) 的时候把系数抄错导致整个答案作废。验算这一步花不了两分钟但能救命。4.4 第四步提取惯性指数和规范形标准形 (f d_1y_1^2 d_2y_2^2 \cdots d_ny_n^2) 里正系数的个数就是正惯性指数 (p)负系数的个数是负惯性指数 (q)零系数的个数是秩的亏空 (n - r)(r) 是矩阵的秩。规范形就是把正系数全变成 (1)负系数全变成 (-1)[ f z_1^2 \cdots z_p^2 - z_{p1}^2 - \cdots - z_{pq}^2 ]从标准形到规范形只需要再做一次对角缩放变换比如 (z_1 \sqrt{d_1}y_1)这仍然是一个可逆线性变换所以不改变合同关系。惯性定理告诉我们不管用什么方法化标准形(p) 和 (q) 永远不变。这是二次型最深刻的性质之一也是判断两个二次型是否合同的充要条件——两个二次型合同当且仅当它们有相同的正惯性指数和负惯性指数。5. 常见问题与排查技巧实录5.1 配方过程中系数配错怎么快速定位配方最容易错的地方是配完一个主元后剩余部分的系数没有正确更新。我的排查方法是“代回验证”——配完一步后随便取一组具体的 (x) 值代入原式和配方后的式子看结果是否相等。比如取 (x_11, x_20, x_30)原式算一个值配方后的式子也算一个值对不上就说明这一步有问题。这个方法比重新算一遍快得多而且能精确定位到出错的步骤。5.2 特征值算错导致标准形系数全错正交变换法里特征值算错是灾难性的因为后面所有步骤都建立在它上面。我的校验三板斧迹校验特征值之和必须等于矩阵的迹。行列式校验特征值之积必须等于矩阵的行列式。秩校验非零特征值的个数必须等于矩阵的秩。这三个条件同时满足特征值基本不会错。如果有一个对不上立刻回去检查特征方程的展开过程。5.3 合同与相似的判断混淆这是概念题里最高频的坑。记住这个判断链相似存在可逆 (P)(B P^{-1}AP)。相似矩阵有相同的特征值、迹、行列式、秩。合同存在可逆 (C)(B C^{T}AC)。合同矩阵有相同的秩、正负惯性指数。实对称矩阵相似 (\Leftrightarrow) 合同因为都可以正交对角化到同一个对角矩阵。对于非对称矩阵相似和合同是两条独立的线不能互相推导。5.4 常见问题速查表问题现象可能原因排查方法标准形系数与特征值不符用了配方法而非正交变换法确认题目是否要求正交变换(C^{T}AC) 非对角变换矩阵写错逐步验算 (C) 的每一列惯性指数与秩矛盾标准形系数符号统计错重新数正负零系数个数特征向量不正交未做施密特正交化对同一特征值的向量做正交化合同判断出错只看秩没看惯性指数同时比较 (p) 和 (q)避坑技巧考试里如果时间紧判断两个二次型是否合同直接算各自的秩和正惯性指数两个都一样就合同不用真的去找变换矩阵。6. 合同变换在实际问题中的落脚点6.1 正定性判断合同变换的直接应用一个二次型正定当且仅当它的正惯性指数等于变量个数 (n)也就是所有特征值都大于零。用合同变换把二次型化成标准形后看系数符号就能判断。这比直接算所有顺序主子式有时候更快尤其是变量多的时候。正定性在优化问题里极其重要——目标函数的 Hessian 矩阵正定意味着当前点是严格局部极小值。而 Hessian 矩阵恰好就是一个二次型的矩阵判断正定就是在判断这个二次型的惯性指数。6.2 二次曲面方程的化简空间解析几何里二次曲面方程的一般形式含有交叉项很难看出是什么曲面。通过合同变换消去交叉项化成标准形后就能直接读出是椭球面、双曲面还是抛物面。这个过程本质上就是找曲面的主轴方向而主轴方向恰好是特征向量的方向。6.3 多元统计中的主成分分析主成分分析PCA的核心步骤就是对协方差矩阵做正交变换把原始变量线性组合成互不相关的主成分。协方差矩阵是实对称的正交变换同时完成合同和相似对角化得到的对角元就是各主成分的方差。方差大的主成分保留方差小的丢弃实现降维。这套逻辑的数学根基就是二次型的合同变换理论。6.4 力学中的能量表达式化简在振动系统里动能和势能通常写成二次型形式而且带有交叉项。通过合同变换在力学里叫“主坐标变换”可以把耦合的振动方程解耦成一组独立的简谐振动。每个独立振动的频率对应特征值的平方根。这套方法在结构动力学、电路分析里都是标准工具。7. 我个人在实际操作中的几点体会学这块内容我踩过的最大的坑是“把合同当相似用”。有一次做一道判断两个矩阵是否合同的题我下意识去算特征值发现特征值不一样就判定不合同结果错了——合同根本不要求特征值相同只要求惯性指数相同。这个教训让我后来每次判断合同之前都先问自己一句“我现在用的是相似的标准还是合同的标准”另一个体会是配方法和正交变换法最好都练熟不要偏废。配方法在理论推导和快速判断惯性指数时非常高效正交变换法在需要特征值信息时不可替代。两种方法各做十道题手感就出来了。最后分享一个小技巧化标准形之后把标准形再代回原变量验证一遍。具体做法是取几组随机的 (y) 值通过变换矩阵算出对应的 (x)分别代入原二次型和标准形看结果是否一致。这个验证花不了一分钟但能抓住 90% 的计算错误。我养成了这个习惯之后这块题目的正确率明显上了一个台阶。