Advertisement
Guest User

Untitled

a guest
May 19th, 2020
23
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.11 KB | None | 0 0
  1. import numpy as np
  2. import scipy.sparse as sp
  3. import scipy.sparse.linalg as spl
  4.  
  5. denseM = [[ 0.75, 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,
  6. 0. , 0. , 0. , 0. , 0. , 0. , 0. ],
  7. [ 0. , 0.25, 0.5 , 0. , 0. , 0. , 0. , 0. , 0. ,
  8. 0. , 0. , 0. , 0. , 0. , 0. , 0. ],
  9. [ 0. , 0.5 , -0.25, 0. , 0.5 , 0. , 0. , 0. , 0. ,
  10. 0. , 0. , 0. , 0. , 0. , 0. , 0. ],
  11. [ 0. , 0. , 0. , 0.25, 0. , 0.5 , 0. , 0. , 0. ,
  12. 0. , 0. , 0. , 0. , 0. , 0. , 0. ],
  13. [ 0. , 0. , 0.5 , 0. , -0.25, 0. , 0. , 0. , 0.5 ,
  14. 0. , 0. , 0. , 0. , 0. , 0. , 0. ],
  15. [ 0. , 0. , 0. , 0.5 , 0. , -0.75, 0.5 , 0. , 0. ,
  16. 0.5 , 0. , 0. , 0. , 0. , 0. , 0. ],
  17. [ 0. , 0. , 0. , 0. , 0. , 0.5 , -0.25, 0. , 0. ,
  18. 0. , 0.5 , 0. , 0. , 0. , 0. , 0. ],
  19. [ 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0.25, 0. ,
  20. 0. , 0. , 0.5 , 0. , 0. , 0. , 0. ],
  21. [ 0. , 0. , 0. , 0. , 0.5 , 0. , 0. , 0. , 0.25,
  22. 0. , 0. , 0. , 0. , 0. , 0. , 0. ],
  23. [ 0. , 0. , 0. , 0. , 0. , 0.5 , 0. , 0. , 0. ,
  24. -0.25, 0.5 , 0. , 0. , 0. , 0. , 0. ],
  25. [ 0. , 0. , 0. , 0. , 0. , 0. , 0.5 , 0. , 0. ,
  26. 0.5 , -0.75, 0. , 0.5 , 0. , 0. , 0. ],
  27. [ 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0.5 , 0. ,
  28. 0. , 0. , -0.25, 0. , 0.5 , 0. , 0. ],
  29. [ 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,
  30. 0. , 0.5 , 0. , 0.25, 0. , 0. , 0. ],
  31. [ 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,
  32. 0. , 0. , 0.5 , 0. , -0.25, 0.5 , 0. ],
  33. [ 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,
  34. 0. , 0. , 0. , 0. , 0.5 , 0.25, 0. ],
  35. [ 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. , 0. ,
  36. 0. , 0. , 0. , 0. , 0. , 0. , 0.75]]
  37. denseM = np.array(denseM)
  38.  
  39. dense_vals = np.linalg.eigh(denseM)
  40. sparseM = sp.csr_matrix(denseM)
  41. sparse_vals = spl.eigs(sparseM, 1)
  42.  
  43. dense_eval, dense_evec = dense_vals[0][0], dense_vals[1][:, 0]
  44. sparse_eval, sparse_evec = sparse_vals[0][0], sparse_vals[1].ravel()
  45.  
  46. # checks
  47. if not denseM.dtype == sparseM.dtype == np.float64:
  48. print('wrong dtypes')
  49. if not np.array_equal(denseM, denseM.T):
  50. print('not symmetric')
  51. if np.isclose(*dense_vals[0][:2]):
  52. print('degenerate ground state')
  53. if not (denseM == sparseM).all():
  54. print('dense != sparse')
  55. if not np.allclose(denseM @ dense_evec - dense_eval * dense_evec, 0):
  56. print('not a dense eigenvector')
  57. if not np.allclose(sparseM @ sparse_evec - sparse_eval * sparse_evec, 0):
  58. print('not a sparse eigenvector')
  59. if not np.isclose(dense_eval, sparse_eval):
  60. print('not the same eigenvalues')
  61. if not np.allclose(sparse_evec, dense_evec):
  62. print('not the same eigenvectors')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement