我刚刚进入 fortran 95 进行一些量子力学模拟。老实说,我被 Octave 宠坏了,所以我认为矩阵求幂是理所当然的。给定一个(小,) skew -Hermitian 矩阵大小,使用LAPACK解决这个问题最有效的方法是什么?我没有使用 LAPACK95 包装器,只是直接调用 LAPACK。
具有 fortran 95 和 LAPACK 的斜厄米特矩阵的矩阵指数
计算科学
正则
拉帕克
2021-12-20 03:22:39
4个回答
由于我在手机上,我无法轻松链接东西,稍后会添加链接。您可能需要查看论文“19 Dubious Ways to Calculate the Matrix Exponential”、Fortran 库 EXPOKIT、Jitse Niesen 关于计算矩阵指数的 Krylov 方法的论文,以及 Nick Higham 最近关于矩阵指数的一些论文。与单独的矩阵指数相比,需要矩阵指数和向量的乘积更为常见,在这里,Krylov 方法非常有用。对于像您描述的那样更小、更密集的矩阵,Padé 方法可能会更好,但是当在 ODE 数值积分的指数方法中使用 Krylov 方法时,我已经取得了很大的成功。
复本征解法在数学上是正确的,但它所做的工作比必要的要多。不幸的是,我将要描述的改进方法不能用 LAPACK 调用来实现。
看看 RC Ward 和 LJ Gray,ACM Trans。数学。柔软的。4, 278, (1978)。这描述了 TOMS 算法 530 中可用的软件,您可以从 netlib 下载该软件。这描述了如何分解偏斜对称矩阵作为
在哪里是实正交且是真正的斜对称和块对角线。对角线子块是或者. 因为它是块对角线,所以您可以分别对每个子块取幂。这块为零,并且,所以这些都是微不足道的。这子块完成
然后,您想要的指数矩阵由下式给出
几十年来,我一直在我的量子化学代码中使用这种方法,并且我从未遇到过任何涉及的软件问题。
如果您只需要矩阵指数乘以向量,那么这个 fortran 子例程可能对您有用。它计算:
其中 v 是一个向量,A 是一个正则厄米矩阵。它是来自EXPOKIT库的子程序
否则,您可能需要考虑这个适用于任何一般复矩阵 A 的子例程。
其它你可能感兴趣的问题