特征值分解
如果一个向量v是方阵A的特征向量,可以表示成如下形式:
其中λ称为特征向量v对应的特征值,一个矩阵的一组特征向量是一组正交向量。
需要注意的是:只有方阵才能进行特征分解。
特征值分解是将一个矩阵分解成下面的形式:
其中Q是这个矩阵A的特征向量组成的矩阵,Σ是一个对角阵,每一个对角线上的元素就是一个特征值。
代码实现
python:
//方阵A
dataA = np.array([[0.00178, -0.00296, 0.000427],
[-0.00296, 0.00704, -0.00093],
[0.00043, -0.00093, 0.000197]])
//求特征值和特征向量
eigVals, eigVectors = np.linalg.eig(dataA)
//定义特征值的对角阵
smat = np.zeros((3, 3))
smat = np.diag(eigVals)
//根据特征值和特征向量重新计算A = QΣQ(-1)
result = np.dot(eigVectors, np.dot(smat, np.linalg.inv(eigVectors)))
print(result)
print(dataA)
//对比两个矩阵值是否相同
print(np.allclose(dataA, result))