我是靠谱客的博主 高大书本,这篇文章主要介绍投影严格对角化经典Python代码(Numpy向量化,Numba优化),现在分享给大家,希望可以做个参考。

精髓是这一段

核心代码段如下: 

@jit(nopython=True)
def solve_Heff(nk, V):
    L, nk = V.shape
    def  Mterm2(q):
        M2 = np.zeros((nk, nk), dtype=np.complex128)
        Ap = np.power(np.absolute(V),2).sum(axis=1).copy()  # 预处理一个常数项
        for i in range(nk):
            M2[i,i] += np.sum(Ap*np.power(np.absolute(V[:,(i - q + nk) % nk]), 2))
        return M2 / nk

    def Mterm3(q):
        M3 = np.zeros((nk, nk), dtype=np.complex128)
        for i in range(nk):
            for j in range(nk):
                M3[i, j] += np.sum(np.conj(V[:, (i - q + nk) % nk]) * V[:, i] * V[:,(j - q + nk) % nk] * np.conj(V[:,j]))
        return M3 / nk

    Ek = np.zeros((nk, nk))
    for i in range(nk):
        Heff = Mterm2(i) - Mterm3(i)
        E, _ = LA.eigh(Heff)
        Ek[:,i] = E
    return Ek

其中用Numba优化时,需要查阅文档,看是否支持对应numpy操作,如果不支持,需要改位支持的形式。

 

 

最后

以上就是高大书本最近收集整理的关于投影严格对角化经典Python代码(Numpy向量化,Numba优化)的全部内容,更多相关投影严格对角化经典Python代码(Numpy向量化内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(182)

评论列表共有 0 条评论

立即
投稿
返回
顶部