我是靠谱客的博主 高大书本,最近开发中收集的这篇文章主要介绍投影严格对角化经典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向量化,Numba优化)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部