严格对角化一般指计算模型的本征值和基态。这里难点是构建模型的基矢以及哈密顿量矩阵,后者存储为稀疏矩阵形式,前者由一系列二进制数组构成。利用二进制状态压缩表示态。

然后就是对角化操作。这里不是必须手写Lanczos算法。Fortan可以直接调用ARPACK库,Python中的scipy也可以调用。当然C++手写Lanczos性能也不差。

之后就是格林函数的计算,首先需要在基态的基础上,构造新的激发态。此时粒子数改变了,因此要构造新的基矢。

 Sparse Matrix的逆不一定是Sparse,因此如果这里直接调用库函数求逆乘起来。但是我们可以利用稀疏矩阵线性方程求解器,求解(z-H+E0)X = \psi>, 然后和右矢量直接内积。也可以手写Lanczos进行计算。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐