最近复习考研数学时,做到有关二次型转标准型
的题目,一般题目会要求:正交变换x=Qy,求出矩阵Q
。
大致解题思路
假设 3 阶实对称矩阵A,A二次型变量表示为(x1,x2,x3).特征值为λ1,λ2,λ3,对应已单位化的特征向量为ξ1,ξ2,ξ3.
正交变换步骤:
-
构造正交矩阵P:矩阵P=(ξ1,ξ2,ξ3)是由矩阵A的单位化特征向量拼成的矩阵,因为A是实对称矩阵,其特征向量是正交的。
-
变换二次型:
xTAx=yTPTAPy
由于P是由特征向量组成的正交矩阵,且 $ P^T P = E ,即P$的逆等于其转置,因此有:
PTAP=Λ
其中Λ是A的特征值构成的对角矩阵:
Λ=⎝⎛λ1000λ2000λ3⎠⎞
-
因此,变换后的二次型化为:
xTAx=yTΛy=λ1y12+λ2y22+λ3y32
这就将原来的二次型xTAx化为标准型,标准型是关于新变量y1,y2,y3 的平方项线性组合,且系数是对应的特征值λ1,λ2,λ3。
因此,正交变换后的矩阵PTAP会变成一个由特征值λ1,λ2,λ3组成的对角矩阵。
结论:
在以上条件下,我们可以直接将Λ作为二次型转化而来的标准型
,从而节省时间再去做计算。
Numpy 实现:
在这里可以使用NumPy库来实现一下这类矩阵运算.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| import numpy as np
def transform_to_standard_form(A): """ 将 3x3 实对称矩阵 A 对应的二次型化为标准型 :param A: 3x3 实对称矩阵 :return: 特征值、特征向量、标准型矩阵 """ eigenvalues, eigenvectors = np.linalg.eigh(A)
P = eigenvectors
P_TAP = np.dot(np.dot(P.T, A), P)
print("输入的实对称矩阵 A:") print(A) print("\n特征值:") print(eigenvalues) print("\n特征向量矩阵 P:") print(P) print("\n标准型矩阵 (P^T * A * P):") print(P_TAP)
A = np.array([[4, 1, 2], [1, 2, 0], [2, 0, 3]])
transform_to_standard_form(A)
|