【问题标题】:Compute the eigenvectors in lapack using predetermined eigenvalues?使用预定的特征值计算 lapack 中的特征向量?
【发布时间】:2013-02-27 18:49:29
【问题描述】:

我对 lapack 有一个相当不寻常的挑战,我花了几个小时寻找解决方案。

我有一个传统形式的广义特征值问题 (A - x B = 0)。通常我会使用例如 ?hegvx 或 ?hegvd 来计算特征值和特征向量。

然而我现在面临的挑战是,现在我已经从问题的构造中知道了特征值,因此我需要一个高效的 lapack 例程来仅计算特征向量?

有人对此有所了解吗?

【问题讨论】:

  • 您想计算矩阵 A-xE 的零空间(又名内核),但我也不知道 LAPACK(或 BLAS?)例程。

标签: c performance math lapack intel-mkl


【解决方案1】:

给定广义特征值问题

(A - y B) x = 0

还有一个特征值 yn:

(A - yn B) xn = 0

我们知道A、B和yn,所以我们可以形成一个新的矩阵Cn

Cn = A - yn B

Cn xn = 0

您可以使用任何线性代数求解器为每个特征值单独求解。根据LAPACK docs on linear equations,对于一般矩阵,双精度,您可以使用 DGETRS

编辑退化特征值:

矩阵 Cn 的零空间是我们在这里解决的问题(正如 MvG 所评论的那样)。如果

Cn j = 0 和
Cn k = 0

(即退化的 e-vals)然后给定 jTk = 0(两者仍然是 AB 系统的特征向量)我们可以说

调用一行Cn r:

r.k = r.k - jT.k = (r-jT).k

这样就形成了一个矩阵J,每行都是jT(这个肯定有名字,但我不知道):

(Cn - J) k = 0

定义

Dnj = Cn - J

现在求解新矩阵 Dnj。通过构造,这将是原始矩阵的一个新的正交特征向量,具有相同的退化特征值。

【讨论】:

  • 我会试试这个,但是如果它是有效的,时间会证明的。在我看来,您建议的方法面临的最大挑战是退化特征值。
  • 为了清晰和符号,我会在帖子中回复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-18
相关资源
最近更新 更多