update
This commit is contained in:
parent
2603da57d1
commit
275a12024d
@ -4,9 +4,6 @@ The newest version of this code is on the web page: https://www.guanjihuan.com/a
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import matplotlib.pyplot as plt
|
|
||||||
from math import *
|
|
||||||
|
|
||||||
|
|
||||||
def matrix_00(width, length):
|
def matrix_00(width, length):
|
||||||
h00 = np.zeros((width*length, width*length))
|
h00 = np.zeros((width*length, width*length))
|
||||||
@ -20,11 +17,9 @@ def matrix_00(width, length):
|
|||||||
h00[(x+1)*width+y, x*width+y] = 1
|
h00[(x+1)*width+y, x*width+y] = 1
|
||||||
return h00
|
return h00
|
||||||
|
|
||||||
|
|
||||||
def matrix_01(width, length):
|
def matrix_01(width, length):
|
||||||
h01 = np.identity(width*length)
|
h01 = np.identity(width*length)
|
||||||
return h01
|
return h01
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
height = 2 # z
|
height = 2 # z
|
||||||
@ -40,8 +35,7 @@ def main():
|
|||||||
for j0 in range(width):
|
for j0 in range(width):
|
||||||
print(' y=', j0+1, ':')
|
print(' y=', j0+1, ':')
|
||||||
for k0 in range(length):
|
for k0 in range(length):
|
||||||
print(' x=', k0+1, ' ', -np.imag(G_ii_n_array[i0, k0*width+j0, k0*width+j0])/pi) # 态密度
|
print(' x=', k0+1, ' ', -np.imag(G_ii_n_array[i0, k0*width+j0, k0*width+j0])/np.pi) # 态密度
|
||||||
|
|
||||||
|
|
||||||
def G_ii_n_with_Dyson_equation(width, length, height, E, eta, h00, h01):
|
def G_ii_n_with_Dyson_equation(width, length, height, E, eta, h00, h01):
|
||||||
dim = length*width
|
dim = length*width
|
||||||
@ -76,27 +70,22 @@ def G_ii_n_with_Dyson_equation(width, length, height, E, eta, h00, h01):
|
|||||||
G_ii_n_array[i, :, :] = G_ii_n_minus
|
G_ii_n_array[i, :, :] = G_ii_n_minus
|
||||||
return G_ii_n_array
|
return G_ii_n_array
|
||||||
|
|
||||||
|
|
||||||
def Green_nn_n(E, eta, H00, V, G_nn_n_minus): # n>=2
|
def Green_nn_n(E, eta, H00, V, G_nn_n_minus): # n>=2
|
||||||
dim = H00.shape[0]
|
dim = H00.shape[0]
|
||||||
G_nn_n = np.linalg.inv((E+eta*1j)*np.identity(dim)-H00-np.dot(np.dot(V.transpose().conj(), G_nn_n_minus), V))
|
G_nn_n = np.linalg.inv((E+eta*1j)*np.identity(dim)-H00-np.dot(np.dot(V.transpose().conj(), G_nn_n_minus), V))
|
||||||
return G_nn_n
|
return G_nn_n
|
||||||
|
|
||||||
|
|
||||||
def Green_in_n(G_in_n_minus, V, G_nn_n): # n>=2
|
def Green_in_n(G_in_n_minus, V, G_nn_n): # n>=2
|
||||||
G_in_n = np.dot(np.dot(G_in_n_minus, V), G_nn_n)
|
G_in_n = np.dot(np.dot(G_in_n_minus, V), G_nn_n)
|
||||||
return G_in_n
|
return G_in_n
|
||||||
|
|
||||||
|
|
||||||
def Green_ni_n(G_nn_n, V, G_ni_n_minus): # n>=2
|
def Green_ni_n(G_nn_n, V, G_ni_n_minus): # n>=2
|
||||||
G_ni_n = np.dot(np.dot(G_nn_n, V.transpose().conj()), G_ni_n_minus)
|
G_ni_n = np.dot(np.dot(G_nn_n, V.transpose().conj()), G_ni_n_minus)
|
||||||
return G_ni_n
|
return G_ni_n
|
||||||
|
|
||||||
|
|
||||||
def Green_ii_n(G_ii_n_minus, G_in_n_minus, V, G_nn_n, G_ni_n_minus): # n>=i
|
def Green_ii_n(G_ii_n_minus, G_in_n_minus, V, G_nn_n, G_ni_n_minus): # n>=i
|
||||||
G_ii_n = G_ii_n_minus+np.dot(np.dot(np.dot(np.dot(G_in_n_minus, V), G_nn_n), V.transpose().conj()),G_ni_n_minus)
|
G_ii_n = G_ii_n_minus+np.dot(np.dot(np.dot(np.dot(G_in_n_minus, V), G_nn_n), V.transpose().conj()),G_ni_n_minus)
|
||||||
return G_ii_n
|
return G_ii_n
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
@ -4,9 +4,6 @@ The newest version of this code is on the web page: https://www.guanjihuan.com/a
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import matplotlib.pyplot as plt
|
|
||||||
from math import *
|
|
||||||
|
|
||||||
|
|
||||||
def matrix_00(width, length):
|
def matrix_00(width, length):
|
||||||
h00 = np.zeros((width*length, width*length))
|
h00 = np.zeros((width*length, width*length))
|
||||||
@ -20,12 +17,10 @@ def matrix_00(width, length):
|
|||||||
h00[(x+1)*width+y, x*width+y] = 1
|
h00[(x+1)*width+y, x*width+y] = 1
|
||||||
return h00
|
return h00
|
||||||
|
|
||||||
|
|
||||||
def matrix_01(width, length):
|
def matrix_01(width, length):
|
||||||
h01 = np.identity(width*length)
|
h01 = np.identity(width*length)
|
||||||
return h01
|
return h01
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
height = 2 # z
|
height = 2 # z
|
||||||
width = 3 # y
|
width = 3 # y
|
||||||
@ -36,7 +31,6 @@ def main():
|
|||||||
h01 = matrix_01(width, length)
|
h01 = matrix_01(width, length)
|
||||||
G_ii_n_with_Dyson_equation_version_II(width, length, height, E, eta, h00, h01)
|
G_ii_n_with_Dyson_equation_version_II(width, length, height, E, eta, h00, h01)
|
||||||
|
|
||||||
|
|
||||||
def G_ii_n_with_Dyson_equation_version_II(width, length, height, E, eta, h00, h01):
|
def G_ii_n_with_Dyson_equation_version_II(width, length, height, E, eta, h00, h01):
|
||||||
dim = length*width
|
dim = length*width
|
||||||
G_11_1 = np.linalg.inv((E+eta*1j)*np.identity(dim)-h00)
|
G_11_1 = np.linalg.inv((E+eta*1j)*np.identity(dim)-h00)
|
||||||
@ -71,29 +65,24 @@ def G_ii_n_with_Dyson_equation_version_II(width, length, height, E, eta, h00, h0
|
|||||||
for j0 in range(width):
|
for j0 in range(width):
|
||||||
print(' y=', j0+1, ':')
|
print(' y=', j0+1, ':')
|
||||||
for k0 in range(length):
|
for k0 in range(length):
|
||||||
print(' x=', k0+1, ' ', -np.imag(G_ii_n_minus[k0*width+j0, k0*width+j0])/pi) # 态密度
|
print(' x=', k0+1, ' ', -np.imag(G_ii_n_minus[k0*width+j0, k0*width+j0])/np.pi) # 态密度
|
||||||
|
|
||||||
|
|
||||||
def Green_nn_n(E, eta, H00, V, G_nn_n_minus): # n>=2
|
def Green_nn_n(E, eta, H00, V, G_nn_n_minus): # n>=2
|
||||||
dim = H00.shape[0]
|
dim = H00.shape[0]
|
||||||
G_nn_n = np.linalg.inv((E+eta*1j)*np.identity(dim)-H00-np.dot(np.dot(V.transpose().conj(), G_nn_n_minus), V))
|
G_nn_n = np.linalg.inv((E+eta*1j)*np.identity(dim)-H00-np.dot(np.dot(V.transpose().conj(), G_nn_n_minus), V))
|
||||||
return G_nn_n
|
return G_nn_n
|
||||||
|
|
||||||
|
|
||||||
def Green_in_n(G_in_n_minus, V, G_nn_n): # n>=2
|
def Green_in_n(G_in_n_minus, V, G_nn_n): # n>=2
|
||||||
G_in_n = np.dot(np.dot(G_in_n_minus, V), G_nn_n)
|
G_in_n = np.dot(np.dot(G_in_n_minus, V), G_nn_n)
|
||||||
return G_in_n
|
return G_in_n
|
||||||
|
|
||||||
|
|
||||||
def Green_ni_n(G_nn_n, V, G_ni_n_minus): # n>=2
|
def Green_ni_n(G_nn_n, V, G_ni_n_minus): # n>=2
|
||||||
G_ni_n = np.dot(np.dot(G_nn_n, V.transpose().conj()), G_ni_n_minus)
|
G_ni_n = np.dot(np.dot(G_nn_n, V.transpose().conj()), G_ni_n_minus)
|
||||||
return G_ni_n
|
return G_ni_n
|
||||||
|
|
||||||
|
|
||||||
def Green_ii_n(G_ii_n_minus, G_in_n_minus, V, G_nn_n, G_ni_n_minus): # n>=i
|
def Green_ii_n(G_ii_n_minus, G_in_n_minus, V, G_nn_n, G_ni_n_minus): # n>=i
|
||||||
G_ii_n = G_ii_n_minus+np.dot(np.dot(np.dot(np.dot(G_in_n_minus, V), G_nn_n), V.transpose().conj()),G_ni_n_minus)
|
G_ii_n = G_ii_n_minus+np.dot(np.dot(np.dot(np.dot(G_in_n_minus, V), G_nn_n), V.transpose().conj()),G_ni_n_minus)
|
||||||
return G_ii_n
|
return G_ii_n
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
@ -4,9 +4,6 @@ The newest version of this code is on the web page: https://www.guanjihuan.com/a
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import matplotlib.pyplot as plt
|
|
||||||
from math import *
|
|
||||||
|
|
||||||
|
|
||||||
def hamiltonian(width, length, height):
|
def hamiltonian(width, length, height):
|
||||||
h = np.zeros((width*length*height, width*length*height))
|
h = np.zeros((width*length*height, width*length*height))
|
||||||
@ -27,7 +24,6 @@ def hamiltonian(width, length, height):
|
|||||||
h[k0*width*length+(i0+1)*width+j0, k0*width*length+i0*width+j0] = 1
|
h[k0*width*length+(i0+1)*width+j0, k0*width*length+i0*width+j0] = 1
|
||||||
return h
|
return h
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
height = 2 # z
|
height = 2 # z
|
||||||
width = 3 # y
|
width = 3 # y
|
||||||
@ -40,10 +36,7 @@ def main():
|
|||||||
for j0 in range(width):
|
for j0 in range(width):
|
||||||
print(' y=', j0+1, ':')
|
print(' y=', j0+1, ':')
|
||||||
for i0 in range(length):
|
for i0 in range(length):
|
||||||
print(' x=', i0+1, ' ', -np.imag(green[k0*width*length+i0*width+j0, k0*width*length+i0*width+j0])/pi) # 态密度
|
print(' x=', i0+1, ' ', -np.imag(green[k0*width*length+i0*width+j0, k0*width*length+i0*width+j0])/np.pi) # 态密度
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
|
||||||
|
|
@ -4,9 +4,6 @@ The newest version of this code is on the web page: https://www.guanjihuan.com/a
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import matplotlib.pyplot as plt
|
|
||||||
from math import *
|
|
||||||
|
|
||||||
|
|
||||||
def matrix_00(width):
|
def matrix_00(width):
|
||||||
h00 = np.zeros((width, width))
|
h00 = np.zeros((width, width))
|
||||||
@ -15,12 +12,10 @@ def matrix_00(width):
|
|||||||
h00[width0+1, width0] = 1
|
h00[width0+1, width0] = 1
|
||||||
return h00
|
return h00
|
||||||
|
|
||||||
|
|
||||||
def matrix_01(width):
|
def matrix_01(width):
|
||||||
h01 = np.identity(width)
|
h01 = np.identity(width)
|
||||||
return h01
|
return h01
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
width = 2
|
width = 2
|
||||||
length = 3
|
length = 3
|
||||||
@ -34,8 +29,7 @@ def main():
|
|||||||
# print(G_ii_n_array[i0, :, :],'\n')
|
# print(G_ii_n_array[i0, :, :],'\n')
|
||||||
print('x=', i0+1, ':')
|
print('x=', i0+1, ':')
|
||||||
for j0 in range(width):
|
for j0 in range(width):
|
||||||
print(' y=', j0+1, ' ', -np.imag(G_ii_n_array[i0, j0, j0])/pi) # 态密度
|
print(' y=', j0+1, ' ', -np.imag(G_ii_n_array[i0, j0, j0])/np.pi) # 态密度
|
||||||
|
|
||||||
|
|
||||||
def G_ii_n_with_Dyson_equation(width, length, E, eta, h00, h01):
|
def G_ii_n_with_Dyson_equation(width, length, E, eta, h00, h01):
|
||||||
G_ii_n_array = np.zeros((length, width, width), complex)
|
G_ii_n_array = np.zeros((length, width, width), complex)
|
||||||
@ -69,27 +63,22 @@ def G_ii_n_with_Dyson_equation(width, length, E, eta, h00, h01):
|
|||||||
G_ii_n_array[i, :, :] = G_ii_n_minus
|
G_ii_n_array[i, :, :] = G_ii_n_minus
|
||||||
return G_ii_n_array
|
return G_ii_n_array
|
||||||
|
|
||||||
|
|
||||||
def Green_nn_n(E, eta, H00, V, G_nn_n_minus): # n>=2
|
def Green_nn_n(E, eta, H00, V, G_nn_n_minus): # n>=2
|
||||||
dim = H00.shape[0]
|
dim = H00.shape[0]
|
||||||
G_nn_n = np.linalg.inv((E+eta*1j)*np.identity(dim)-H00-np.dot(np.dot(V.transpose().conj(), G_nn_n_minus), V))
|
G_nn_n = np.linalg.inv((E+eta*1j)*np.identity(dim)-H00-np.dot(np.dot(V.transpose().conj(), G_nn_n_minus), V))
|
||||||
return G_nn_n
|
return G_nn_n
|
||||||
|
|
||||||
|
|
||||||
def Green_in_n(G_in_n_minus, V, G_nn_n): # n>=2
|
def Green_in_n(G_in_n_minus, V, G_nn_n): # n>=2
|
||||||
G_in_n = np.dot(np.dot(G_in_n_minus, V), G_nn_n)
|
G_in_n = np.dot(np.dot(G_in_n_minus, V), G_nn_n)
|
||||||
return G_in_n
|
return G_in_n
|
||||||
|
|
||||||
|
|
||||||
def Green_ni_n(G_nn_n, V, G_ni_n_minus): # n>=2
|
def Green_ni_n(G_nn_n, V, G_ni_n_minus): # n>=2
|
||||||
G_ni_n = np.dot(np.dot(G_nn_n, V.transpose().conj()), G_ni_n_minus)
|
G_ni_n = np.dot(np.dot(G_nn_n, V.transpose().conj()), G_ni_n_minus)
|
||||||
return G_ni_n
|
return G_ni_n
|
||||||
|
|
||||||
|
|
||||||
def Green_ii_n(G_ii_n_minus, G_in_n_minus, V, G_nn_n, G_ni_n_minus): # n>=i
|
def Green_ii_n(G_ii_n_minus, G_in_n_minus, V, G_nn_n, G_ni_n_minus): # n>=i
|
||||||
G_ii_n = G_ii_n_minus+np.dot(np.dot(np.dot(np.dot(G_in_n_minus, V), G_nn_n), V.transpose().conj()),G_ni_n_minus)
|
G_ii_n = G_ii_n_minus+np.dot(np.dot(np.dot(np.dot(G_in_n_minus, V), G_nn_n), V.transpose().conj()),G_ni_n_minus)
|
||||||
return G_ii_n
|
return G_ii_n
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -4,9 +4,6 @@ The newest version of this code is on the web page: https://www.guanjihuan.com/a
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
import matplotlib.pyplot as plt
|
|
||||||
from math import *
|
|
||||||
|
|
||||||
|
|
||||||
def hamiltonian(width, length):
|
def hamiltonian(width, length):
|
||||||
h = np.zeros((width*length, width*length))
|
h = np.zeros((width*length, width*length))
|
||||||
@ -20,7 +17,6 @@ def hamiltonian(width, length):
|
|||||||
h[(i0+1)*width+j0, i0*width+j0] = 1
|
h[(i0+1)*width+j0, i0*width+j0] = 1
|
||||||
return h
|
return h
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
width = 2
|
width = 2
|
||||||
length = 3
|
length = 3
|
||||||
@ -32,10 +28,7 @@ def main():
|
|||||||
# print(green[i0*width+0: i0*width+width, i0*width+0: i0*width+width], '\n')
|
# print(green[i0*width+0: i0*width+width, i0*width+0: i0*width+width], '\n')
|
||||||
print('x=', i0+1, ':')
|
print('x=', i0+1, ':')
|
||||||
for j0 in range(width):
|
for j0 in range(width):
|
||||||
print(' y=', j0+1, ' ', -np.imag(green[i0*width+j0, i0*width+j0])/pi)
|
print(' y=', j0+1, ' ', -np.imag(green[i0*width+j0, i0*width+j0])/np.pi)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main()
|
main()
|
||||||
|
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user