def test_hamiltonian_eigenvectors(dtype, numpy, trotter): """Testing hamiltonian eigenvectors scaling.""" H1 = XXZ(nqubits=2, delta=0.5, numpy=numpy, trotter=trotter) V1 = np.array(H1.eigenvectors()) U1 = np.array(H1.eigenvalues()) np.testing.assert_allclose(H1.matrix, V1 @ np.diag(U1) @ V1.T) # Check ground state np.testing.assert_allclose(H1.ground_state(), V1[:, 0]) c1 = dtype(2.5) H2 = c1 * H1 V2 = np.array(H2._eigenvectors) U2 = np.array(H2._eigenvalues) np.testing.assert_allclose(H2.matrix, V2 @ np.diag(U2) @ V2.T) c2 = dtype(-11.1) H3 = H1 * c2 V3 = np.array(H3.eigenvectors()) U3 = np.array(H3._eigenvalues) np.testing.assert_allclose(H3.matrix, V3 @ np.diag(U3) @ V3.T) c3 = dtype(0) H4 = c3 * H1 V4 = np.array(H4._eigenvectors) U4 = np.array(H4._eigenvalues) np.testing.assert_allclose(H4.matrix, V4 @ np.diag(U4) @ V4.T)
def test_hamiltonian_eigenvalues(dtype, numpy, trotter): """Testing hamiltonian eigenvalues scaling.""" H1 = XXZ(nqubits=2, delta=0.5, numpy=numpy, trotter=trotter) H1_eigen = H1.eigenvalues() hH1_eigen = np.linalg.eigvalsh(H1.matrix) np.testing.assert_allclose(H1_eigen, hH1_eigen) c1 = dtype(2.5) H2 = c1 * H1 hH2_eigen = np.linalg.eigvalsh(c1 * H1.matrix) np.testing.assert_allclose(H2._eigenvalues, hH2_eigen) c2 = dtype(-11.1) H3 = H1 * c2 hH3_eigen = np.linalg.eigvalsh(H1.matrix * c2) np.testing.assert_allclose(H3._eigenvalues, hH3_eigen)