我试图解决广义特征值问题A.c =(lam).B.c其中A和B是nxn矩阵,c是nx1向量。 (lam)是特征值。
我正在使用python。我从numpy.linalg尝试了类似eig(dot(inv(B),A))的东西,但事实证明它在我的问题中非常不稳定,因为它涉及到反转。所以我一直在阅读它可以在MATLAB中完成,但我找不到任何在python中执行它的函数或方法。任何想法将不胜感激。感谢...
答案 0 :(得分:6)
为什么不尝试使用scipy?它在线性代数模块scipy.linalg.eig中有一个方法,可用于“解决普通或广义特征值问题。”
scipy.linalg.eig(a, b=None, left=False, right=True, overwrite_a=False, overwrite_b=False)[source]
Solve an ordinary or generalized eigenvalue problem of a square matrix.
Find eigenvalues w and right or left eigenvectors of a general matrix:
a vr[:,i] = w[i] b vr[:,i]
a.H vl[:,i] = w[i].conj() b.H vl[:,i]
where .H is the Hermitean conjugation.