scipy 在python中求解B为半正定的广义特征值系统

k0pti3hp  于 2022-12-04  发布在  Python
关注(0)|答案(1)|浏览(177)

我正在尝试使用规范化切割算法 (Shi和Malik,2000) 将一个矩阵分割成两个矩阵。在这方面,我需要找到广义特征值系统中的第二小特征向量**(Ax = λ.B.x)**.在我的输入中,B是半正定矩阵.然而,scipy.linalg.eigh要求B为正定,使用它时会引发错误。我需要知道是否可以使用此输入得到解,以及如何找到解。
我试过了

eigvals, eigvecs = eigh(A, B, eigvals_only=False, subset_by_index=[0, 1])

但我得到了:

numpy.linalg.LinAlgError: The leading minor of order 2 of B is not positive definite. The factorization of B could not be completed and no eigenvalues or eigenvectors were computed.
pbwdgjma

pbwdgjma1#

如果B是半定的,这意味着它至少有一个与特征值0相关的特征向量,如果B的零空间也是A的零空间,也就是如果B @ x = 0A @ x = 0,你仍然可以有解,但在这种情况下,与x相关的广义特征值是待定的。

相关问题