我对 lapack 有一个相当不寻常的挑战,我花了几个小时寻找解决方案。
我有一个传统形式的广义特征值问题(A - x B = 0)。通常我会使用例如 ?hegvx 或 ?hegvd 来计算特征值和特征向量。
但是我现在面临的挑战是,现在我已经从问题的构造中知道了特征值,因此我需要一个有效的lapack 例程来仅计算特征向量?
有人对此有破解吗?
我对 lapack 有一个相当不寻常的挑战,我花了几个小时寻找解决方案。
我有一个传统形式的广义特征值问题(A - x B = 0)。通常我会使用例如 ?hegvx 或 ?hegvd 来计算特征值和特征向量。
但是我现在面临的挑战是,现在我已经从问题的构造中知道了特征值,因此我需要一个有效的lapack 例程来仅计算特征向量?
有人对此有破解吗?
给定广义特征值问题
(A - y B) x = 0
和一个特征值 yn:
(A - y n B) x n = 0
我们知道 A、B 和 yn,所以我们可以形成一个新的矩阵 Cn
C n = A - y n B
C n x n = 0
您可以使用任何线性代数求解器为每个特征值单独求解。根据LAPACK docs on linear equations,对于一般矩阵,双精度,您可以使用 DGETRS
编辑退化特征值:
矩阵 Cn 的零空间是我们在这里解决的问题(正如 MvG 评论的那样)。如果
C n j = 0 和
C n k = 0
(即退化的 e-vals)然后给定 j T k = 0 (两者仍然是 AB 系统的特征向量)我们可以说
调用一行 C n r:
rk = rk - j T .k = (rj T ).k
从而形成一个矩阵 J ,其行是每个 j T(必须有一个名称,但我不知道):
(C n - J) k = 0
定义
D nj = C n - J
现在求解新矩阵 D nj。通过构造,这将是具有相同退化特征值的原始矩阵的新正交特征向量。