在Numpy中解决广义特征值问题

问题描述 投票:0回答:1

我想解决一个类型的问题。 Aw = xBw 其中 x 是一个标量(特征值)。w 是一个特征向量,而 AB 是对称的、等维的正方形numpy矩阵。 我应该可以找到 d xw对,如果 ABd x d. 我如何在numpy中解决这个问题? 我在Scipy文档里找了一下,没有找到我想要的东西。

java numpy octave image-recognition eigenvalue
1个回答
9
投票

对于对称致密矩阵,可以使用 scipy.linalg.eigh() 来解决这个广义特征值问题。

from scipy.linalg import eigh

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

你会发现 eigvecs 是一个复杂的 ndarray因此,也许你必须使用 eigvecs.real...

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


7
投票

你有没有见过 scipy.linalg.eig 来自 文件:

解决一个普通或 广义 方阵的特征值问题。

本方法有可选参数 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.
© www.soinside.com 2019 - 2024. All rights reserved.