广义特征值问题

计算科学 线性代数 本征系统 矩阵
2021-12-17 20:59:01

我需要解决一个真正的广义特征值问题

Ax=λBx()

A 和 B 由以下等式计算:

A=i,j=1NWij(KiKj)ββT(KiKj)T

B=i=1NDiiKiββTKiT

其中是实数对称矩阵,对角线条目为,非对角线条目在之间。WNN0(0,1)

D是一个对角矩阵,其中NNDii=j=1NWij

Ki是一个矩阵,所有条目均为正数。NM

β>0是一个维列向量。M

从上面的方程中,A 和 B 应该是对称半定的,B 应该是正定的(我自己做了一些证明)。

也许是因为一些数值损失(我不确定:(),似乎有小的负特征值(我使用 LAPACK 例程dsyev()进行特征值分解)并且给出了复杂的特征值。B()

我想选择这个广义特征值问题的P个最小特征值,所以这里的复数值确实是个问题。在这种情况下,有什么办法可以避免复杂的特征值?

顺便说一句,我使用犰狳作为线性代数库并直接使用 LAPACK 例程dggev() ) 。()

任何建议将不胜感激。

1个回答

如果,正如你所说,你确定你有一个对称定铅笔(即,是对称的,而是对称正定的),那么 LAPACK 已经有一些东西可以直接处理你的问题:它所做的是执行的 Cholesky 分解(如果实际上你的不是对称正定的,那么你应该看到一个警告),然后使用由此产生的 Cholesky 三角形来转换你的广义特征问题成一个可以用所有常用方法求解的正则对称特征问题。由于此方法需要反转的 Cholesky 三角形,您可能需要检查是否ABdsygv()BBBB条件良好;您可以dsycon()用于此目的。


如果 Cholesky 路线失败,还有一种基于简而言之,过程如下:给出特征分解,形成矩阵,其中是通过取对角元素的平方根来完成的。形成后,形成,其特征值与铅笔相同(我将把如何形成特征向量的过程留作练习。)BB=VDVW=VDDWC=W1AW(A,B)