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