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)) |