【问题标题】:Generalised Eigenvalues in PythonPython中的广义特征值
【发布时间】:2012-04-07 20:28:50
【问题描述】:

我正在尝试解决广义特征值问题 A.c = (lam).B.c 其中 A 和 B 是 nxn 矩阵,c 是 nx1 向量。 (lam) 是特征值。

我正在使用 python。我从 numpy.linalg 尝试了类似 eig(dot(inv(B),A)) 的东西,但结果证明它在我的问题中非常不稳定,因为它涉及反转。所以我一直在阅读可以在 MATLAB 中执行此操作,但我找不到任何函数或方法可以在 python 中执行此操作。任何想法将不胜感激。谢谢...

【问题讨论】:

  • 我对线性代数的了解还不够,无法构思一个通用的算法/方法来解决这个问题。你能描述一下你打算使用的算法吗?如果是这样,那么我可能会为您提供执行此操作的 Python 代码。或者您是否正在寻找已经为您执行此操作的库?
  • 可能值得再次查看您的问题 - 您几乎不需要 反转矩阵,有时看起来就是这样。 johndcook.com/blog/2010/01/19/dont-invert-that-matrix 反转,正如您所指出的,通常在数值上非常不稳定,应该避免(如果可能的话!)。

标签: python eigenvalue


【解决方案1】:

您为什么不尝试使用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.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-23
    • 1970-01-01
    • 2014-09-05
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多