具有 Toeplitz 内核的 Hermitian 系统的 Lanczos 算法

计算科学 线性代数 矩阵 迭代法 svd 数字
2021-12-09 15:13:36

基本上,我正在尝试计算大型 Hermitian 矩阵的 SVDH使用 Lanczos 迭代,而H包括如果一个 Toeplitz 核K,与传统的 Lanczos 算法相比,它应该能够帮助加快矩阵向量计算(使用 FFT)。

H(i,j)=PiKij(ij)Pj

总之,我需要最大的几个特征值和特征向量H,我想知道哪种 Lanczos 算法完全满足这个需求?我注意到了PROPACK包,但在我看来,它不是为这里的特定情况而设计的,而且它是用 Fortran 编写的......

2个回答

这个问题中,关于结构化矩阵的快速特征值/SVD 求解器, @GoHookies 建议查看该论文:

这也有后续

这些论文描述了加速结构化矩阵的 SVD 计算的技术(或所需算法的一部分)。Hankel 矩阵的应用自然扩展到 Toeplitz 核。一般来说,他们使用基于 FFT 的快速矩阵向量积来处理应用于 Lanczos 迭代的结构化矩阵。

网上还有一个来自同一组作者的Matlab 包(带有一些额外的解释和参考资料),它实现了他们的算法。

我个人在我的应用程序中使用了这个包,但我仍然没有确认它的好处和声称的复杂性节省(正在进行缓慢的工作)。

我们在这里谈论多大?如果问题适合单个节点,您可能只需通过 Hermitian 矩阵计算来解决它,然后就可以收工了,请参阅SLEPc以了解此问题的快速实现。请注意,SLEPc 是用 C 编写的,但也有 Fortran 和 Python 包装器。

更直接地解决您的问题:我不知道任何 SVD/EVD 求解器会在不修改的情况下利用您的 Toeplitz 内核和矩阵结构。也就是说,自己构建这样的东西应该不难。提取矩阵的最大特征值(奇异值)的常用方法是 Arnoldi 方法,通常使用ARPACK实现。在这里,您可以自己简化修改矩阵向量乘法子例程,以通过 FFT 来利用 Toeplitz 结构,如您所说。