使用 SVD 对左右特征向量进行双正交化?

计算科学 线性代数 算法 svd 基组
2021-12-08 18:54:49

我有一组来自非对称特征问题的左右特征向量,我想对它们进行双正交化。

我尝试了 Gram-Schmidt,但在大多数情况下都失败了。

然后我读到 SVD 是获得矩阵正交基的最佳方法,其中 U 是我的基。

如何将 SVD 扩展到两组特征向量的情况?或者有没有更好的方法来双正交化我的左右特征向量?

编辑:更多细节

我有一个复杂的非厄米矩阵,

M=[ABBA]

在哪里表示共轭转置。我通过 ZGEEV 求解左右特征向量,所以我有

MXR=XREXLM=EXL

在哪里E是特征值的对角矩阵,并且XLXR是分别包含我的左右特征向量的矩阵。

我可以轻松地将左右特征向量相互正交化,即XRXR=I要么XLXL=I,但我想要的是对它们进行双正交化,例如获得:

XLXR=I

我已经编写了自己修改过的 Gram-Schmidt 来完成此操作,但就像我说的,它在很多情况下都不起作用。我看不到任何使用 LAPACK 例程(即 ZGEQRF 后跟 ZUNGQR)来完成此操作的方法,也看不到使用 SVD 对我来说似乎很明显。

1个回答

我想,最终的结果是受到 Gram-Schmidt 的不稳定性(相对)的影响,即使是修改/稳定的形式。在这种情况下,我们可以从最终结果开始,而不是从头开始:修改正交化过程。

因此,在解决了一个非厄米特特征值问题(使用可靠算法)后,我们得到XLXR,分别是左右特征向量的矩阵。

我们渴望

XLXR=I
然而,
XLXR=Y
其中矩阵Y可惜与身份不同I. 现在,我们可以计算 LU 分解(它应该比 Gram-Schmidt 在数值上更稳定)Y=LYUY.
XLXR=LYUY

现在,通过正向求解具有多个 RHS 的两个三角系统(对于LY)和反向替换(对于UY):

LYXL=XLXRUY=XR
我们可以解决双正交化的XLXR通过一个相对稳定的数值过程。

所以,算法(在计算复杂度方面绝对不是最好的):

  1. 计算Y=XLXR
  2. 计算 LU 分解Y
  3. 求解具有多个 RHS 的 2 个三角系统,以获得双正交矩阵的最终结果。

如果一组特征向量是退化的会发生什么,有一个小问题,但我不明白为什么 LU 在这种情况下也会失败。