Scipy和Numpy返回标准化的特征向量。我正在尝试将这些向量用于物理应用程序,我需要它们不进行规范化。
例如
a = np.matrix('-3, 2; -1, 0')
W,V = spl.eig(a)
scipy返回[-2,-1]
的特征值(W)和模态矩阵(V)(特征值为列)[[ 0.89442719 0.70710678][ 0.4472136 0.70710678]]
我需要原始模态矩阵[[2 1][1 1]]
答案 0 :(得分:1)
根据各种相关主题(1) (2) (3),没有“非标准化”特征向量。
实际上,对应于矩阵v
的特征值l
的特征向量A
由
A*v = l*v
因此可以乘以任何标量并保持有效。
虽然取决于算法,计算的特征向量可以具有不同于1的范数,但这不具有任何特定含义(物理或其他),并且不应该依赖。习惯上在大多数数值库(scipy,R,matlab等)中返回一个归一化的特征向量。
答案 1 :(得分:0)
你应该看一下同情。这个包试图通过代数计算而不是数字计算来解决这个问题(就像numpy那样)。
import sympy as sp
sp.init_printing(use_unicode=True)
mat_a = sp.Matrix([[-3, 2], [-1, 0]])
mat_a.eigenvects()
结果是(特征值,多重性,特征向量):
[(-2, 1, [[2],[1]]), (-1, 1, [[1],[1]])]
答案 2 :(得分:0)
请注意,归一化特征向量还可以更改向量的方向/符号,这一点很重要。这可能会对某些应用程序产生影响,程序员应仔细检查以确保这些标志有意义。