我想解决一个类型的问题。 Aw = xBw
其中 x
是一个标量(特征值)。w
是一个特征向量,而 A
和 B
是对称的、等维的正方形numpy矩阵。 我应该可以找到 d
xw对,如果 A
和 B
是 d x d
. 我如何在numpy中解决这个问题? 我在Scipy文档里找了一下,没有找到我想要的东西。
对于对称致密矩阵,可以使用 scipy.linalg.eigh()
来解决这个广义特征值问题。
from scipy.linalg import eigh
eigvals, eigvecs = eigh(A, B, eigvals_only=False)
你会发现 eigvecs
是一个复杂的 ndarray
因此,也许你必须使用 eigvecs.real
...
在同一模块中,你有 eigvalsh()
对于你的情况,它可能会执行得更快,但它不会返回特征向量。
你有没有见过 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.