32 lines
1.1 KiB
Python
32 lines
1.1 KiB
Python
"""
|
||
This code is supported by the website: https://www.guanjihuan.com
|
||
The newest version of this code is on the web page: https://www.guanjihuan.com/archives/17789
|
||
"""
|
||
|
||
import numpy as np
|
||
|
||
def hamiltonian(width=2, length=2):
|
||
h00 = np.zeros((width*length, width*length))
|
||
for i0 in range(length):
|
||
for j0 in range(width-1):
|
||
h00[i0*width+j0, i0*width+j0+1] = 1
|
||
h00[i0*width+j0+1, i0*width+j0] = 1
|
||
for i0 in range(length-1):
|
||
for j0 in range(width):
|
||
h00[i0*width+j0, (i0+1)*width+j0] = 1
|
||
h00[(i0+1)*width+j0, i0*width+j0] = 1
|
||
return h00
|
||
|
||
print('矩阵:\n', hamiltonian(), '\n')
|
||
|
||
eigenvalue, eigenvector = np.linalg.eig(hamiltonian())
|
||
print('eig求解特征值:', eigenvalue)
|
||
print('eig求解特征向量:\n',eigenvector)
|
||
print('判断特征向量是否正交:\n', np.dot(eigenvector.transpose(), eigenvector))
|
||
|
||
print()
|
||
|
||
eigenvalue, eigenvector = np.linalg.eigh(hamiltonian())
|
||
print('eigh求解特征值:', eigenvalue)
|
||
print('eigh求解特征向量:\n',eigenvector)
|
||
print('判断特征向量是否正交:\n', np.dot(eigenvector.transpose(), eigenvector)) |