在scipy中获得非标准化的特征向量

时间:2015-06-19 20:03:20

标签: scipy eigenvector

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]]

3 个答案:

答案 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)

请注意,归一化特征向量还可以更改向量的方向/符号,这一点很重要。这可能会对某些应用程序产生影响,程序员应仔细检查以确保这些标志有意义。