计算几乎退化的特征值和向量

计算科学 矩阵 特征值
2021-12-06 15:49:12

在量子物理计算中,我必须处理一个矩阵,它有很多彼此非常接近的特征值(106例如相对差异),我无法获得足够准确的特征向量和特征值。确实,我想达到机器精度,但我只得到109来自zheevLAPACK 的 MKL 和 ATLAS。

意味着这是由于 LAPACK 本身造成的,并且可以使用其他方法获得更好的精度。我知道我的矩阵完全有可能,因为我达到了预期的精度,numpy.linalg.eigh但我不知道我对 LAPACK 的使用与在 numpy 中所做的有什么不同。(我在那里解释了两者之间的比较,但我的问题是不同的)。

我想知道是否有一种已知对非常接近的特征值有效的算法。限制是我不使用非常大的Hermitian矩阵(目前少于 100 行),而且我知道特征值都包含在 0 和 2 之间(都包括在内)。

我必须以最大精度计算所有特征值和向量。

1个回答

由于您的特征值非常本地化,我可以建议尝试FEAST算法。它确实受益于紧凑的搜索间隔,并且可以在速度和准确性方面受益(并且 v2.1 可从英特尔 MKL 轻松获得,而您可以通过单独的库下载选择使用较新的版本)。