我必须在 Fortran 编写的代码中对一个块三对角 Toeplitz Hermitian 矩阵进行对角化,例如
其中是 Hermitian 矩阵。目前,我只是对 Hermitian 矩阵使用标准的 Lapack 例程。ZHEEV
你对如何利用这个矩阵的一个或多个属性来获得更快的计算有什么建议吗?
我必须在 Fortran 编写的代码中对一个块三对角 Toeplitz Hermitian 矩阵进行对角化,例如
其中是 Hermitian 矩阵。目前,我只是对 Hermitian 矩阵使用标准的 Lapack 例程。ZHEEV
你对如何利用这个矩阵的一个或多个属性来获得更快的计算有什么建议吗?
有道德上等效的例程通过不同的算法寻求相同的结果:ZHEEVD(分而治之)和 ZHEEVR(乘以相对稳健的表示)。也许其中之一可以超越 ZHEEV?(它使用 QR 迭代)。
您可能还想尝试 ZHBEV(利用带状的厄米特特征求解器)。我认为带状结构主要会加速前端,带状到三对角线的减少,所以最终可能不会那么快。
我认为另一个值得进行的实验是将 ZHBTRD(将带厄米特矩阵减少为实三对角形式)应用于您的矩阵。如果三对角形式也是 Toeplitz**,您可以分析计算其特征值(请参阅三对角矩阵的维基百科页面)。
如果您不需要整个频谱,则最好使用 Krylov 技术(在此设置中,简化为三对角形式可能仍然有用,作为加速 matvec 动作的前端)。
** 不幸的是,我对 Toeplitz 系统没有足够的经验来确定是否通过三对角化保留了 Toeplitz-ness。