四时宝库

程序员的知识宝库

自动构建Slater-Koster系数的TB模型(完整版代码)

from numpy import *
import numpy.matlib as mtl
import matplotlib.pyplot as plt
import matplotlib
from matplotlib import cm
### lattice and orbit
# s py pz px dxy dyz dz2 dxz d(x2-y2)
# 0 1  2  3  4   5   6   7   8   
lat = [[1,0],[-1/2, sqrt(3)/2]]
lat=array(lat)
o1 = [2/3,1/3, 5]
o2 = [2/3,1/3, 7]
o3 = [1/3,2/3, 5]
o4 = [1/3,2/3, 7]

dd_sigma = 0
dd_pi = 0.4096
dd_delta = 0.0259
#orb = [o1,o2,o3,o4]
#orb = [array(i) for i in orb]
num = 4

#r=o2(x,y) - o1(0,0)
def vector(o1,o2,x,y):
    r = (o2[0:2]+array([x,y])-o1[0:2]).dot(lat)
    l = r[0]/sqrt(r[0]**2+r[1]**2)
    m = r[1]/sqrt(r[0]**2+r[1]**2)
    return r,l, m

# s py pz px dxy dyz dz2 dxz  d(x2-y2)
# 0 1  2  3  4   5   6   7     8

def sk(l,m,d1,d2,dd_sigma,dd_pi,dd_delta):   
    sk = zeros((9,9))    
    sk[4,4] =  3*l**2 *m**2 * dd_sigma + (l**2 + m**2 - 4 * l**2 * m**2) * dd_pi + l**2 * m**2 * dd_delta
    sk[4,5] =  0
    sk[4,6] =  -0.5*sqrt(3)*l*m*(l**2+m**2)*dd_sigma + 0.5*l*m*dd_delta 
    sk[4,7] =  0
    sk[4,8] =  3/2 * l * m *(l**2-m**2) * dd_sigma + 2*l*m*(m**2-l**2) * dd_pi + 0.5*l*m*(l**2-m**2)*dd_delta
    
    sk[5,4] =  0
    sk[5,5] =  m**2*dd_pi+ l**2*dd_delta
    sk[5,6] = 0
    sk[5,7] = l*m*dd_pi -l*m*dd_delta
    sk[5,8] = 0
    
    sk[6,4] = sk[4,6]
    sk[6,5] = 0
    sk[6,6] = 1/4 * (l**2+m**2)**2 * dd_sigma +  3/4 * (l**2+m**2)**2 * dd_delta  
    sk[6,7] = 0
    sk[6,8] = sqrt(3)/4 * (l**2-m**2) * dd_delta - sqrt(3)/4 * (l**2-m**2) * (l**2+m**2) * dd_sigma
    
    sk[7,4] =  0
    sk[7,5] =  sk[5,7]
    sk[7,6] =  0
    sk[7,7] = l**2 * dd_pi + m**2 * dd_delta 
    sk[7,8] = 0
    
    sk[8,4] = sk[4,8]
    sk[8,5] = 0
    sk[8,6] = sk[6,8]
    sk[8,7] = sk[7,8] 
    sk[8,8] = 3/4 * (l**2-m**2) * dd_sigma + (l**2 + m**2 - (l**2-m**2)**2) * dd_pi + \
    1/4 * (l**2-m**2)**2 * dd_delta
    return sk[d1,d2]

def hop_vec(o1,o2,x,y):
    r,l,m =vector(o1,o2,x,y)
    d1,d2 =  o1[2],o2[2]
    t=sk(l,m,d1,d2,dd_sigma,dd_pi,dd_delta)
    return t,r

t131,r131 =  hop_vec(o1,o3,0,0)
t141,r141 =  hop_vec(o1,o4,0,0)
t132,r132 =  hop_vec(o1,o3,1,0)
t142,r142 =  hop_vec(o1,o4,1,0)
t133,r133 =  hop_vec(o1,o3,0,-1)
t143,r143 =  hop_vec(o1,o4,0,-1)

t231,r231 =  hop_vec(o2,o3,0,0)
t241,r241 =  hop_vec(o2,o4,0,0)
t232,r232 =  hop_vec(o2,o3,1,0)
t242,r242 =  hop_vec(o2,o4,1,0)
t233,r233 =  hop_vec(o2,o3,0,-1)
t243,r243 =  hop_vec(o2,o4,0,-1)

def H(K):
    H=zeros((num,num),dtype=complex)
    H[0,2] = t131 * exp(1.j*K.dot(r131)) +  t132 * exp(1.j*K.dot(r132)) +  t133 * exp(1.j*K.dot(r133)) 
    H[0,3] = t141 * exp(1.j*K.dot(r141)) +  t142 * exp(1.j*K.dot(r142)) +  t143 * exp(1.j*K.dot(r143)) 
    H[1,2] = t231 * exp(1.j*K.dot(r231)) +  t232 * exp(1.j*K.dot(r232)) +  t233 * exp(1.j*K.dot(r233)) 
    H[1,3] = t241 * exp(1.j*K.dot(r241)) +  t242 * exp(1.j*K.dot(r242)) +  t243 * exp(1.j*K.dot(r243)) 
        
    for i in range(num):
        for j in range(num):
            if j > i:
                H[j,i] = conj(H[i,j])
    return H
def eH(K):
    return linalg.eigh(H(K))[0]

#reciprocal lattice
b1=array([1,1/sqrt(3)])*pi*2
b2=array([0,2/sqrt(3)])*pi*2


#高对称点
G=array([0,0])
M=0.5*b1
K= 1/3 * b1 + 1/3 * b2

#K点路径G-M
kgm = linspace(G,M,100,endpoint=False)
kmk = linspace(M,K,100,endpoint=False)
kkg = linspace(K,G,100)

##K点相对距离
def Dist(r1,r2):
    return linalg.norm(r1-r2) 
lgm=Dist(G,M)
lmk=Dist(M,K)
lkg=Dist(K,G)

lk = linspace(0,1,100)
xgm = lgm * lk
xmk = lmk * lk + xgm[-1]
xkg = lkg * lk + xmk[-1]
kpath = concatenate((xgm,xmk,xkg),axis=0)
Node = [0,xgm[-1],xmk[-1],xkg[-1]] 

Eig_gm = array(list(map(eH,kgm)))
Eig_mk = array(list(map(eH,kmk)))
Eig_kg = array(list(map(eH,kkg)))
eig_1 = hstack((Eig_gm[:,0],Eig_mk[:,0],Eig_kg[:,0]))
eig_2 = hstack((Eig_gm[:,1],Eig_mk[:,1],Eig_kg[:,1]))
eig_3 = hstack((Eig_gm[:,2],Eig_mk[:,2],Eig_kg[:,2]))
eig_4 = hstack((Eig_gm[:,3],Eig_mk[:,3],Eig_kg[:,3]))

plt.plot(kpath,eig_1)
plt.plot(kpath,eig_2)
plt.plot(kpath,eig_3)
plt.plot(kpath,eig_4)
#plt.plot(kpath,eig_5)
#plt.plot(kpath,eig_6)

plt.xticks(Node,[r'$\Gamma#39;,'M','K',r'$\Gamma#39;])
plt.show()

Python NumPy 线性代数应用(python求线性方程组)

矩阵和矢量产品

  • dot(a, b[, out]) 两个数组的点积。
  • linalg.multi_dot(arrays) 在单个函数调用中计算两个或多个数组的点积,同时自动选择最快的求值顺序。
  • vdot(a, b) 返回两个向量的点积。
  • inner(a, b) 两个数组的内积。
  • outer(a, b[, out]) 计算两个向量的外积。
  • matmul(a, b[, out]) 两个数组的矩阵乘积。

Python视频,免费分享,用python求解特征向量和拉普拉斯矩阵

学过线性代数和深度学习先关的一定知道特征向量和拉普拉斯矩阵,这两者是很多模型的基础,有着很重要的地位,那用python要怎么实现呢?

numpy和scipy两个库中模块中都提供了线性代数的库linalg,scipy更全面些。

特征值和特征向量

import scipy as sc

#返回特征值,按照升序排列,num定义返回的个数

def eignvalues(matrix, num):

return sc.linalg.eigh(matrix, eigvalues(0, num-1))[0]

使用四元数计算两个分子之间的RMSD(附Python代码)

自动构建Slater-Koster(SK)系数的TB模型代码(QAHE案例)

前文回顾

前面说到,使用python构建了自动生成Slater-Koster系数以及连接矢的代码,这一节在此基础上,构建一个六角晶格的TB模型,可以跟前文提到的两个案例和对比。这个体系是量子反常霍尔效应,

Python求解特征向量和拉普拉斯矩阵


学过线性代数和深度学习先关的一定知道特征向量和拉普拉斯矩阵,这两者是很多模型的基础,有着很重要的地位,那用python要怎么实现呢?

numpy和scipy两个库中模块中都提供了线性代数的库linalg,scipy更全面些。



特征值和特征向量

import scipy as sc

#返回特征值,按照升序排列,num定义返回的个数
def eignvalues(matrix, num):
    return sc.linalg.eigh(matrix, eigvalues(0, num-1))[0]

#返回特征向量
def eighvectors(matrix):
    return sc.linalg.eigh(matrix, eigvalues(0, num-1))[1]

「数据分析实践」-Image Matching-2DTo3D-1

数据背景

让机器学习使用互联网上免费提供的大量非结构化图像集合,来帮助更好地捕捉世界的丰富性,这个想法怎么样?从图像重建 3D 对象和建筑物的过程称为运动结构 (SfM)。通常,这些图像是由熟练的操作员在受控条件下捕获的,以确保数据的均匀、高质量。考虑到各种各样的视点、照明和天气条件、人和车辆的遮挡,甚至是用户应用的过滤器,从各种图像构建3D模型要困难得多。

高斯混合模型的解释及Python实现(高斯混合模型应用场景)

在机器学习领域,我们可以区分为两个主要领域:监督学习和无监督学习。两者的主要区别在于数据的性质以及处理数据的方法。聚类是一种无监督学习问题,我们希望在数据集中找到具有某些共同特征的点的聚类。假设我们有这样一个机器学习数据集:

我们的工作是找到一组看起来很接近的点。在这种情况下,我们可以清楚地识别出两组点,我们将分别把它们标记成蓝色和红色:

请注意,我们现在引入了一些额外的符号。这里,μ1和μ2是每个聚类的质心。一种流行的聚类算法为K-means,它将遵循迭代方法来更新每个聚类的参数。更具体地说,它将做的是计算每个聚类的均值(或质心),然后计算它们与每个数据点的距离。然后将后者标记为由其最接近的质心识别的聚类的一部分。重复此过程,直到满足某些收敛标准,例如,当我们看不到聚类分配中的进一步更改时。

centos 7 生产环境扩容硬盘容量(centos7增加磁盘空间)

突然接到客户电话,说是生产环境的系统磁盘容量已经不足,占用93%,需要扩容。

首先,进入到深信服超融合平台,找到该虚拟机,进行编辑,添加一块500G的虚拟硬盘。添加成功后,进入系统使用df -TH或lsblk进行查看磁盘分区信息

进入增加的硬盘,将硬盘进行分区 fdisk /dev/vdb,并保存分区vdb1

使用df -TH 或lsblk查看是否成功。

centos7配置网络和扩展磁盘(centos7.4怎么配置网络)

修改网络配置文件

cd /etc/sysconfig/network-scripts/

#vi ifcfg-ens160

TYPE=Ethernet

PROXY_METHOD=none

BROWSER_ONLY=no

BOOTPROTO=none

DEFROUTE=yes

IPV4_FAILURE_FATAL=no

NAME=ens160

UUID=fec95e3f-ade1-42d8-9951-a34bb83602c7

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言
    友情链接