合同变换法
已知二次型 f=xTAx,求变换 x=Py,使得二次型化为标准型 f=yTΛy,且 PTAP=Λ。该过程的实质是一次合同变换,即
[A,E]对A,E作初等行变换,对A作相应的初等列变换−−−−−−−−−−−−−−−−−−→[Λ,PT]
具体的操作看下面几个例子。
一、实对称矩阵 A 对角元素均不为零
【例 1】将二次型 f(x1,x2,x3)=x21+5x22+5x23+2x1x2−4x1x3 化为标准型。
【解】由合同变换得
⎡⎢
⎢⎣11−2100150010−205001⎤⎥
⎥⎦r2−r1−−−−−−→⎡⎢
⎢⎣11−2100042−110−205001⎤⎥
⎥⎦c2−c1−−−→⎡⎢
⎢⎣10−2100042−110−225001⎤⎥
⎥⎦r3+2r1−−−−−−→⎡⎢
⎢⎣10−2100042−110021201⎤⎥
⎥⎦c3+2c1−−−−→⎡⎢
⎢⎣100100042−110021201⎤⎥
⎥⎦(∗)r3−12r2−−−−−−→⎡⎢
⎢⎣100100042−11000052−121⎤⎥
⎥⎦c3−12c2−−−−→⎡⎢
⎢⎣100100040−11000052−121⎤⎥
⎥⎦
所以标准型为 y21+4y22,所作变换矩阵为 P=⎡⎢
⎢⎣1−15201−12001⎤⎥
⎥⎦,使 x=Py。
若要求规范型,需对上述继续作合同变换,将 Λ 上的对角元素 a 化为 −1 或 1 或 0,为此需作一次初等倍乘行变换(rn/√a),再对应作一次初等倍乘列变换(cn/√a)。
r2/√4−−−→⎡⎢
⎢
⎢⎣100100020−1212000052−121⎤⎥
⎥
⎥⎦c2/√4−−−→⎡⎢
⎢
⎢⎣100100010−1212000052−121⎤⎥
⎥
⎥⎦
所以规范型为 z21+z22,所作变换矩阵为 Q=⎡⎢
⎢⎣1−1252012−12001⎤⎥
⎥⎦,使 x=Qz。
需要注意的是,合同变换的实质仍是配方,但配方法只是用了某种坐标变换,得到标准型的系数,不一定是特征值(不要以为使用该方法得到的 Λ 就是特征值!Λ 只能指示正、负和零特征值的个数,即正、负惯性指数一定是唯一的)。只有进行正交变换得到的系数才是特征值。
由此可知,二次型的标准型并不唯一,但是规范型唯一!如对(*)处还可作如下合同变换
(∗)r3↔r2−−−−−→⎡⎢
⎢⎣100100021201042−110⎤⎥
⎥⎦c3↔c2−−−→⎡⎢
⎢⎣100100012201024−110⎤⎥
⎥⎦r3−2r2−−−−−→⎡⎢
⎢⎣100100012201000−51−2⎤⎥
⎥⎦c3−2c2−−−−→⎡⎢
⎢⎣100100010201000−51−2⎤⎥
⎥⎦
所以标准型为 y21+y22,所作变换矩阵为 P=⎡⎢⎣12−500101−2⎤⎥⎦,使 x=Py。
【例 2】(2014 年数二第 14 题)设二次型 f(x1,x2,x3)=x21−x22+2ax1x2+4x2x3 的负惯性指数为 1,求 a 的取值范围。
【解】本题可使用配方法,但对于填空题来说比较麻烦。不妨采用合同变换法迅速解决本题。
⎡⎢
⎢⎣10a1000−12010a20001⎤⎥
⎥⎦r3−ar1−−−−→⎡⎢
⎢⎣10a1000−1201002−a21−a01⎤⎥
⎥⎦c3−ac1−−−−→⎡⎢
⎢⎣1001000−1201002−a21−a01⎤⎥
⎥⎦r3+2r2−−−−→⎡⎢
⎢⎣1001000−12010004−a21−a21⎤⎥
⎥⎦c3+2c2−−−−→⎡⎢
⎢⎣1001000−10010004−a21−a21⎤⎥
⎥⎦
因为负惯性指数为 1,所以 4−a2≥0,解得 −2≤a≤2。
二、实对称矩阵 A 对角元素有零
当发现二次型所对应的实对称矩阵 A 上的对角元素为 0 时,需要先想办法将对角线上的元素变成不为 0 的数,具体看下例。
【例 3】将二次型 f(x1,x2,x3)=2x1x2+2x1x3+2x2x3 化为标准型。
【解】发现对角线上第一个元素为 0,为使其不为 0,可将第二行加到第一行上,相应的就要作一次列变换,将第二列加到第一列上。对角线上其他位置为 0 的元素也是类似的处理方法。
⎡⎢
⎢⎣011100101010110001⎤⎥
⎥⎦r1+r2−−−−→⎡⎢
⎢⎣112110101010110001⎤⎥
⎥⎦c1+c2−−−→⎡⎢
⎢⎣212110101010210001⎤⎥
⎥⎦r2−12r1−−−−→⎡⎢
⎢⎣2121100−120−12120210001⎤⎥
⎥⎦c2−12c1−−−−→⎡⎢
⎢⎣2021100−120−12120200001⎤⎥
⎥⎦r3−r1−−−−→⎡⎢
⎢⎣2021100−120−1212000−2−1−11⎤⎥
⎥⎦c3−c1−−−→⎡⎢
⎢⎣2001100−120−1212000−2−1−11⎤⎥
⎥⎦
所以标准型为 2y21−12y22−2y23,所作变换矩阵为 P=⎡⎢
⎢⎣1−12−1112−1001⎤⎥
⎥⎦,使 x=Py。
若要求规范型,则继续进行变换
r1/√2−−−→⎡⎢
⎢
⎢⎣√2001√21√200−120−1212000−2−1−11⎤⎥
⎥
⎥⎦c1/√2−−−→⎡⎢
⎢
⎢⎣1001√21√200−120−1212000−2−1−11⎤⎥
⎥
⎥⎦r2/1√2−−−→⎡⎢
⎢
⎢
⎢⎣1001√21√200−1√20−1√21√2000−2−1−11⎤⎥
⎥
⎥
⎥⎦c2/1√2−−−→⎡⎢
⎢
⎢
⎢⎣1001√21√200−10−1√21√2000−2−1−11⎤⎥
⎥
⎥
⎥⎦r3/√2−−−→⎡⎢
⎢
⎢
⎢
⎢⎣1001√21√200−10−1√21√2000−√2−1√2−1√21√2⎤⎥
⎥
⎥
⎥
⎥⎦c3/√2−−−→⎡⎢
⎢
⎢
⎢
⎢⎣1001√21√200−10−1√21√2000−1−1√2−1√21√2⎤⎥
⎥
⎥
⎥
⎥⎦
所以规范型为 z21−z22−z23,所作变换矩阵为 Q=⎡⎢
⎢
⎢
⎢⎣1√2−1√2−1√21√21√2−1√2001√2⎤⎥
⎥
⎥
⎥⎦,使 x=Qz。
三、实战一道题
【例 4】(2021年数一张宇八套卷卷一第21题)已知实对称矩阵 A=[222a] 和 B=[4331],其中 a 为正整数,求可逆矩阵 C,使得 CTAC=B。
【解】由于 A 有未知参数,先对 B 进行合同变换。
[43103101]r2−34r1−−−−→[43100−54−341]c2−34c1−−−−→[40100−54−341]r1/2−−−−→⎡⎣201200−54−341⎤⎦c1/2−−→⎡⎣101200−54−341⎤⎦r2/√52−−−−→⎡⎢⎣101200−√52−32√52√5⎤⎥⎦c2/√52−−−→⎡⎢⎣101200−1−32√52√5⎤⎥⎦
由此可知 B 的正、负惯性指数均为 1,变换矩阵为 C2=⎡⎢⎣12−32√502√5⎤⎥⎦,使得 CT2BC2=[100−1]。下面来对 A 进行合同变换。
[22102a01]r2−r1−−−→[22100a−2−11]c2−c1−−−→[20100a−2−11]
由于 CTAC=B,即 A 与 B 合同,所以两者的正、负惯性指数相等,于是有 a−2<0,又因为 a 为正整数,所以 a=1。继续对 A 进行合同变换得
[20100−1−11]r1/√2−−−→⎡⎣√201√200−1−11⎤⎦c1/√2−−−→⎡⎣101√200−1−11⎤⎦
由此可知变换矩阵为 C1=[1√2−101],使得 CT1AC1=[100−1]。
因此有 CT1AC1=CT2BC2,即 (C1C−12)TA(C1C−12)=B,因此所求矩阵为
C=C1C−12=[1√2−101]⎡⎣2320√52⎤⎦=⎡⎢⎣√23√2−2√540√52⎤⎥⎦
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通