
简介高等代数二次型专项习题文档面向数学专业本科生及备考线性代数的学习者聚焦二次型的矩阵表示、合同变换、标准形与规范形等核心概念。文档按题型编排包含填空题、单项选择题、判断题与练习题覆盖二次型秩、正交变换、正定充要条件、顺序主子式判定、实对称矩阵合同与规范型关系等考点练习题部分针对非退化线性替换与配方法给出逐步推导并完整展示将二次型化为标准形、规范形的过程有助于巩固概念与提升计算能力。题目由浅入深从概念辨析到综合证明层层递进。资源为单个doc文件压缩包大小323KB可直接用Word打开编辑便于按需打印或摘录练习。目前已有819人浏览学习可配合教材使用适合课堂课后强化与考研数学二次型模块的专项训练。1. 二次型从多项式配方到矩阵合同的视角转换在高等代数和线性代数里二次型常被误判成“只是给多项式配个方”的琐碎章节但后续的多元函数极值、二次曲线分类、主成分分析里到处都有它的影子。它的核心不是配方技巧而是把一个二次齐次多项式对应到唯一的对称矩阵把变量替换对应成矩阵合同再把“标准形长什么样”升级为“正负惯性指数是多少”。这篇笔记按矩阵表示、标准形与规范形、正定判据、正交对角化、高频踩坑的顺序完整拆开附带可直接跑的数值验证代码适合正在学高等代数的学生也适合准备考研数学或研究生复试时快速回补这部分内容的读者。2. 二次型的矩阵表示与标准形对称矩阵唯一性与配方法可逆替换2.1 为什么二次型一定要写成 x^T A x二次型是 n 个变量的二次齐次多项式一般形式为f(x1, x2, ..., xn) Σ a_ii xi^2 2Σ_{ij} a_ij xi xj这里有个约定俗成的系数处理交叉项写成 2a_ij xi xj 而不是 a_ij xi xj。这样做的直接原因是让矩阵表示唯一。如果把交叉项系数直接放进矩阵那 a_ij 和 a_ji 各放一半还是全放会有歧义而写成 2a_ij 后令矩阵 A 的第 i 行第 j 列等于 a_ij第 j 行第 i 列也等于 a_ijA 自然是对称矩阵并且和二次型一一对应。反过来给定任意对称矩阵 A展开 x^T A x 得到的二次型也唯一确定。这一步的实质是矩阵 A 完全承载了二次型的信息后续研究二次型可以全部等价地转换为研究对称矩阵。常见做法是先把二次型的每个系数“抄”进矩阵主对角线放平方项系数交叉项系数除以 2 后对称地放在对应位置。例如后面的例子 f x1^2 2x1x2 2x1x3 2x2^2 2x2x3 3x3^2对应矩阵就是A [[1, 1, 1], [1, 2, 1], [1, 1, 3]]注意交叉项 2x1x2 的系数 2 除以 2 得 1填入 (1,2) 和 (2,1) 两个位置。熟练之后这个“系数搬运”应当能做到不动笔直接写出来因为后面的合同变换、正定性判断全都依赖这个矩阵。2.2 非退化线性替换与合同关系的边界对变量做线性替换 x C y要求 C 可逆这就是非退化线性替换也叫可逆线性替换。代入二次型后f(x) x^T A x (C y)^T A (C y) y^T (C^T A C) y也就是说新二次型的矩阵是 B C^T A C。如果存在可逆矩阵 C 使得 B C^T A C就说 A 与 B 合同。注意这里和相似变换的区别相似是 P^{-1} A P合同是 C^T A C。一般情况下两者毫无关系只有在 C 是正交矩阵时C^T C^{-1}合同才退化为相似。这一点后面第 5 章还会专门作为坑来讲。合同变换保留哪些量秩一定保留正负惯性指数一定保留但特征值一般不保留。也就是说你不能因为 A 与 B 合同就说它们的特征值相同。这一点初学者最容易踩。判断两个矩阵是否合同最可靠的标准就是惯性定理秩相等且正惯性指数相等。任何一对满足这两个条件的实对称矩阵都一定合同。2.3 配方法一步步求标准形并保证替换可逆配方法的基本思路是把二次型逐项配成完全平方。拿上面的例子完整走一遍f x1^2 2x1x2 2x1x3 2x2^2 2x2x3 3x3^2先看含 x1 的项x1^2 2x1x2 2x1x3配成 (x1 x2 x3)^2展开后多出 x2^2 2x2x3 x3^2所以要减去这一块。于是f (x1 x2 x3)^2 - (x2 x3)^2 2x2^2 2x2x3 3x3^2化简剩下的部分- (x2^2 2x2x3 x3^2) 2x2^2 2x2x3 3x3^2 x2^2 2x3^2。整理得到f (x1 x2 x3)^2 x2^2 2x3^2此时令 y1 x1 x2 x3, y2 x2, y3 x3标准形就是f y1^2 y2^2 2y3^2对应矩阵 D diag(1, 1, 2)。变量代换关系写成矩阵是 y C x其中C [[1, 1, 1], [0, 1, 0], [0, 0, 1]]det(C) 1可逆所以这是一个合法的非退化线性替换。验证时要用 y C x 这个方向f x^T A x (C x)^T D (C x) x^T (C^T D C) x所以应该有 C^T D C A。很多人在这一步把 C 和 C^{-1} 搞反导致验证对不上后面第 6 章会给代码来自动核对。还有一种情况如果二次型一开始就没有平方项比如 f 2x1x2 2x2x3配方法会卡住。常见做法是先做一个“凑平方”的替换令 x1 y1 y2, x2 y1 - y2, x3 y3这样 2x1x2 变成 2(y1^2 - y2^2)有了平方项之后再用常规配方法。这套两段式替换的完整矩阵是两次替换矩阵的乘积写的时候要按替换发生的顺序左乘并且最终验证行列式不为 0。考试和作业里最常扣分的地方就在这里配方结果对但可逆变换写不出来或者写出来的矩阵不可逆。3. 规范形与惯性定理正负惯性指数与符号差的判定路径3.1 标准形不唯一但正负惯性指数唯一同一个二次型用不同的配方顺序会得到不同的标准形。比如先配 x2 再配 x1系数会变甚至正项和负项出现的顺序也会变。但惯性定理保证无论怎么配标准形里正平方项的个数 p 和负平方项的个数 q 是不变的。p 叫正惯性指数q 叫负惯性指数p - q 叫符号差p q 等于二次型矩阵的秩。这个唯一性是把“标准形”进一步收敛成“规范形”的基础。规范形要求每个平方项系数只能取 1 或 -1其他为 0z1^2 z2^2 ... zp^2 - z_{p1}^2 - ... - z_{pq}^2因为任意正系数都可以通过把变量缩放来变成 1例如 2y3^2令 z3 sqrt(2) y3就变成 z3^2。前面的配方法例子中 p 3, q 0所以规范形就是 z1^2 z2^2 z3^2正定。判断两个实对称矩阵是否合同的统一口径由此建立秩相等且正惯性指数相等。这个说法比“找得到可逆矩阵 C”好验证得多实际做题时也建议先把秩和惯性指数算出来再下结论。3.2 雅可比判据顺序主子式符号序列定正负惯性指数如果二次型矩阵 A 的各阶顺序主子式 Δ1, Δ2, ..., Δn 全不为 0雅可比定理给出了一个非常快的惯性指数判定法。规定 Δ0 1看序列Δ0, Δ1, Δ2, ..., Δn的符号相邻两个数符号变化的次数就是负惯性指数 q正惯性指数 p r - q。用前面的矩阵验证Δ1 det([1]) 1 Δ2 det([[1, 1], [1, 2]]) 1 Δ3 det(A) 2序列是 1, , , 没有变号所以 q 0, p 3。这和配方法结果一致。这个判据的实用价值在于不用做变量替换只算几次行列式就能得出惯性指数特别适合选择题和填空题。但要注意雅可比判据的前提条件很苛刻所有顺序主子式都不能是 0。一旦某个 Δk 0这套符号法就直接失效。举例来说矩阵 [[1, 1], [1, 1]] 的 Δ1 1, Δ2 0无法用雅可比判据此时需要改用特征值法。特征值法虽然计算量大一些但适用范围无限制实对称矩阵 A 的正特征值个数就是 p负特征值个数就是 q零特征值个数是 n - r。这条路径以后面第 6 章的数值验证完全对应。3.3 规范形与惯性指数在题目里的高频考法考研和期末题里最常见的问法有两类。第一类已知二次型的规范形或惯性指数反求参数。比如“规范形是 z1^2 z2^2 - z3^2”意味着 p 2, q 1秩为 3矩阵必须满秩且有正有负。第二类判断两个二次型是否等价或合同。此时不需要真的找出替换矩阵只需要验证秩相等且符号差相等。实际做题时我一般用一个两层流程。第一步把二次型矩阵写出来求秩如果秩不同直接判定不合同。第二步求特征值符号或算顺序主子式序列的变号次数看 p 和 q 是否一致。这里需要提醒一个细节特征值为 0 的项既不贡献 p 也不贡献 q所以秩必须单独验证不能只看符号差。比如矩阵 diag(1, 0, 0) 和 diag(1, 1, 0) 都不是正定也都不是负定但前者符号差 1后者符号差 2显然不合同。4. 正定二次型顺序主子式判据与 Hessian 极值判断实战4.1 正定、半正定、不定的等价刻画正定二次型的定义是对任意非零向量 xf(x) 0。这个定义直接验证很麻烦所以通常用等价条件。最常用的五条判据条件顺序主子式所有顺序主子式全大于 0特征值所有特征值全大于 0合同与单位矩阵合同即存在可逆矩阵 P 使 A P^T P行列式与符号所有顺序主子式全为正且秩等于阶数数值探针存在 Cholesky 分解半正定的判据更容易出错它要求所有主子式不只是顺序主子式都大于等于 0同时所有特征值大于等于 0。顺序主子式全非负不足以保证半正定这一点在第 5 章专门展开。不定就是既有正特征值又有负特征值对应 f(x) 在某些方向上为正、某些方向上为负。几何上n 2 时正定是椭圆型负定也是椭圆但开口向下不定是双曲型。二次曲线的分类就是靠这套东西。4.2 顺序主子式判据实战步骤与边界用顺序主子式判断正定步骤很机械。设 A 是 n 阶对称矩阵依次计算Δ1 a11 Δ2 det([[a11, a12], [a21, a22]]) ... Δn det(A)如果 Δ1 0, Δ2 0, ..., Δn 0则 A 正定。三个常见边界问题需要留意。第一个问题是数值误差。手算没问题用计算机算时行列式可能因为浮点误差出现 -1e-15 这种值不能直接按 “小于 0 就是不大于 0” 来处理要设容差。一般用 1e-8 作为阈值绝对值小于阈值的当成 0这个在第 6 章代码里有体现。第二个问题是半正定不能用顺序主子式。例如矩阵 [[0, 0], [0, -1]]顺序主子式 Δ1 0, Δ2 0全是 0 不小于 0按“全大于等于 0”来说似乎能过但它显然不是半正定因为取 x (0, 1) 时 x^T A x -1 0。原因在于半正定要求所有主子式非负而这里的一阶主子式 a22 -1 是负的。所以正定可以只看顺序主子式半正定必须看全部主子式。第三个问题是次序问题。有些教材把“顺序主子式全大于等于 0”当作半正定的必要条件这是对的但必须同时强调它不是充分条件。做题时如果遇到半正定判断优先用特征值法全面地多。4.3 多元函数极值Hessian 矩阵正定性与驻点性质二次型正定性最直接的高等应用是多元函数极值判定。设 f(x, y) 二阶连续可微驻点处梯度为 0那么该点附近的行为由 Hessian 矩阵决定Hessian 就是二阶偏导数矩阵H [[∂²f/∂x², ∂²f/∂x∂y], [∂²f/∂y∂x, ∂²f/∂y²]]H 正定对应局部极小H 负定对应局部极大H 不定对应鞍点H 半正定或半负定时信息不足需要更高阶项。经典例子是 f(x, y) x³ - 3xy y³。求驻点梯度 (3x² - 3y, -3x 3y²)解方程组 x² y, y² x得到驻点 (0, 0) 和 (1, 1)。Hessian 为H [[6x, -3], [-3, 6y]]在 (0, 0) 处是 [[0, -3], [-3, 0]]特征值 ±3一正一负所以 (0, 0) 是鞍点不是极值点。在 (1, 1) 处是 [[6, -3], [-3, 6]]顺序主子式 Δ1 6 0, Δ2 36 - 9 27 0正定所以 (1, 1) 是局部极小点。这个例子把顺序主子式判据和特征值判据同时用上也展示了为什么不能只靠“二阶导大于 0”这种一元结论。实际计算中手算特征值很慢我一般都先算 Hessian 的顺序主子式用符号判断正定或负定。只有在顺序主子式出现 0 或者符号混乱时才去算特征值。这个习惯对三维以上的函数同样成立只是主子式的数量从 2 个涨到 n 个。5. 避坑指南二次型里最容易翻车的五个细节5.1 把合同变换当成相似变换直接套用特征值结论现象做完变量替换后得到新矩阵 B C^T A C然后直接说 B 的特征值和 A 的特征值相同或者用 B 的特征值判定原二次型的正惯性指数结果怎么都算不对。原因合同变换不保证特征值不变只有正交变换下 C^T C^{-1}合同才等于相似特征值才会保留。解决判定惯性指数时不要依赖特征值在替换前后不变改用秩加雅可比或特征值符号法。如果题目确实要求标准形系数那就用正交变换不要用一般的可逆替换。5.2 配方之前不做 A 是否对称的检查现象把交叉项系数填进矩阵时只在 (i, j) 位置填了系数忘了填 (j, i)导致后面 C^T A C 的验证全是错的。原因默认“系数除以 2”这件事只在一边做。解决形成条件反射每写一个二次型矩阵就断言 A A^T。数值上可以用代码检查 np.allclose(A, A.T)手算时则按“对称位置必须相等”的规则逐步复核。不要嫌这一步多余实际翻车率很高。5.3 用顺序主子式判断半正定现象某个矩阵的所有顺序主子式都大于等于 0于是判定为半正定但随后发现存在某个非零向量使二次型取负值。比如 [[0, 0], [0, -1]]。原因半正定要求全部主子式非负顺序主子式只是其中一部分。矩阵 [[0, 0], [0, -1]] 的顺序主子式是 0 和 0但它有一个一阶主子式 -1显然不满足半正定。解决正定才允许只看顺序主子式半正定一律用特征值符号判断即所有特征值都大于等于 0。5.4 正交对角化时拿到非正交的特征向量直接拼矩阵现象算出了全部特征向量拼成矩阵 P但 P^T A P 并不是对角阵或者对角线元素不是特征值。原因同一个特征值的多个特征向量之间不一定天然正交必须做施密特正交化不同特征值的特征向量虽然自动正交但整体还要归一化否则 P 不是正交矩阵P^T A P 就退化成普通合同变换。解决手算时对每个特征值对应的子空间选一组正交归一基用代码时直接调用 numpy.linalg.eigh它会返回按特征值升序排列的正交矩阵和对应特征值不需要自己重新处理。5.5 忽略“实二次型”这个前提把符号差用到复二次型上现象拿到一个复系数二次型开口就谈正惯性指数和负惯性指数。原因惯性定理和规范形只对实数域上的实二次型成立。复数域上由于任意复数都可以开平方二次型的规范形只有秩这一个指标即 z1² z2² ... zr²没有正负之分。解决做题前先确认系数取值范围。如果题目说“实数域上”或“实二次型”惯性定理才可用如果没说明默认按题目给定数域处理。这类题不算难但概念不清很容易白算一整页。6. 收尾用 numpy 把惯性指数与配方验证串成一条命令判断正定、求惯性指数、验证配方法有没有写反这些都可以用几行代码一次性完成。下面以第 2 章的矩阵为例给出完整流程。import numpy as np A np.array([[1., 1., 1.], [1., 2., 1.], [1., 1., 3.]]) # 第一步断言对称防止系数搬运出错 assert np.allclose(A, A.T), A 不对称 # 第二步顺序主子式判正定 n A.shape[0] minors [np.linalg.det(A[:k, :k]) for k in range(1, n 1)] print(顺序主子式:, minors) print(按顺序主子式判正定:, all(m 1e-8 for m in minors)) # 第三步特征值符号法求惯性指数 w, _ np.linalg.eigh(A) tol 1e-8 p int(np.sum(w tol)) q int(np.sum(w -tol)) print(正惯性指数 p , p, 负惯性指数 q , q, 符号差 , p - q) # 第四步验证配方法得到的变量代换矩阵 C np.array([[1., 1., 1.], [0., 1., 0.], [0., 0., 1.]]) # y C x D np.diag([1., 1., 2.]) print(C^T D C 与 A 一致:, np.allclose(C.T D C, A))这段代码的逻辑按“对称检查 → 主子式判据 → 特征值符号 → 配方验证”四步走。np.linalg.eigh 专为对称矩阵设计比 np.linalg.eig 数值上更稳定返回的特征值按升序排列tol 取 1e-8 是为了容忍浮点误差避免把 -1e-15 这种数值噪声当成负特征值。最后一步很重要如果 y C x那么验证公式是 C.T D C不是 C D C.T。写反了会得到完全不同的矩阵这个坑我见过很多次。如果只想快速判断一个矩阵是否正定还有一个更省事的探针np.linalg.cholesky(A)。正定矩阵存在唯一的 Cholesky 分解非正定矩阵会抛出 LinAlgError。但要注意半正定矩阵同样会抛错所以这个探针只适用于“确认正定”不能用来区分半正定和不定。从那以后我每次处理二次型问题都强制自己走一遍这套流程先断言对称再算主子式或特征值符号最后用一个非零向量代回原式验证数值三步缺一不可。这套习惯帮我在极值判定和合同关系题目上省掉了大量返工时间希望帮到你。本文还有配套的精品资源点击获取