求解Numpy中的广义特征值问题

时间:2014-07-15 07:32:44

标签: python numpy scipy linear-algebra

我希望解决类型问题:Aw = xBw其中x是标量(特征值),w是特征向量,A和{{ 1}}是相等维度的对称方形numpy矩阵。如果BdA,我应该能够找到B x / w对。我怎么能在numpy中解决这个问题?我正在查看Scipy文档而没有找到我想要的东西。

2 个答案:

答案 0 :(得分:7)

您似乎需要scipy.linalg.eigh()来解决此广义特征值问题:

from scipy.linalg import eigh

eigvals, eigvecs = eigh(A, B, eigvals_only=False)

您会看到eigvecs是一个复杂的ndarray,所以也许您必须使用eigvecs.real ......

在同一模块中,eigvalsh()可能会对您的情况执行得更快,但它不会返回特征向量。

答案 1 :(得分:6)

你见过scipy.linalg.eig吗?来自documentation

  

求解方阵的普通或广义特征值问题。

此方法具有可选参数b

scipy.linalg.eig(a, b=None, ...
b : (M, M) array_like, optional
Right-hand side matrix in a generalized eigenvalue problem. 
          Default is None, identity matrix is assumed.