概述
精髓是这一段
核心代码段如下:
@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优化)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复