我希望解决的问题是这样的:Aw = xBw
,其中x
是一个标量(特征值),w
是一个特征向量,A
和B
是对称、方正的numpy矩阵,维度相等。如果A
和B
是d x d
,那么我应该能够找到d
个x/w对。我应该如何在numpy中解决这个问题?我在Scipy文档中查找并没有找到我想要的内容。
我希望解决的问题是这样的:Aw = xBw
,其中x
是一个标量(特征值),w
是一个特征向量,A
和B
是对称、方正的numpy矩阵,维度相等。如果A
和B
是d x d
,那么我应该能够找到d
个x/w对。我应该如何在numpy中解决这个问题?我在Scipy文档中查找并没有找到我想要的内容。
对于实对称或复共轭的密集矩阵,您可以使用scipy.linalg.eigh()
来解决广义特征值问题。通过使用subset_by_index
,您可以指定仅要提取所需的特征值:
from scipy.linalg import eigh
eigvals, eigvecs = eigh(A, B, eigvals_only=False, subset_by_index=[0, 1, 2])
你可以使用 eigvals_only=True
来仅获得特征值。
numpy.linalg.eigh
返回“按升序排列的特征值,每个特征值重复出现其重数次。” numpy.linalg.eig
没有预定义的特征值顺序。 - EA304GT你看过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.
Aw = xBw
。 - emesdayscipy.linalg.eig(a, b=None,...
: 参数 b:广义特征值问题中的右手边矩阵。默认值为None,假定为单位矩阵。 - RomanHotsiy