def mat_herm_dense(): np.random.seed(1) u = qu.rand_uni(4) a = u @ qu.ldmul(np.array([-1, 2, 4, -3]), u.H) # |--|--|--|--|--|--|--| # -3 -1 2 4 return u, a
def test_eigh(self): H = qu.ham_mbl(6, dh=2.5) a_el, a_ev = qu.eigh(H, autoblock=False) el, ev = qu.eigh(H, autoblock=True) assert qu.norm(ev @ qu.ldmul(el, ev.H) - H, 'fro') < 1e-12 assert_allclose(a_el, el) assert_allclose(ev.H @ ev, np.eye(H.shape[0]), atol=1e-12)
def test_evecs(self, ham1, which, k, sigma): lk, vk = seigsys_numpy(ham1, k=k, which=which, return_vecs=True, sigma=sigma, sort=False) assert isinstance(vk, np.matrix) assert_allclose(dot(vk, ldmul(lk, vk.H)), ham1)
def ham2(): u = qu.rand_uni(7) el = np.array([-3.72, 0, 1, 1.1, 2.1, 2.2, 6.28]) return u @ qu.ldmul(el, u.H)
def ham1(): u = qu.rand_uni(7) el = np.array([-3, 0, 1, 2, 3, 4, 7]) return u @ qu.ldmul(el, u.H)
def mat_nherm_sparse(): np.random.seed(1) u, v = qu.rand_uni(5), qu.rand_uni(5) a = u @ qu.ldmul(np.array([1, 2, 4, 3, 0.1]), v.H) a = qu.sparse(a) return u, v, a
def mat_herm_sparse(): np.random.seed(1) u = qu.rand_uni(4) a = u @ qu.ldmul(np.array([-1, 2, 4, -3]), u.H) a = qu.sparse(a) return u, a
def mat_nherm_sparse(): np.random.seed(1) u, v = rand_uni(5), rand_uni(5) a = u @ ldmul(np.array([1, 2, 4, 3, 0.1]), v.H) a = qu(a, sparse=True) return u, v, a
def mat_nherm_dense(): np.random.seed(1) u, v = rand_uni(5), rand_uni(5) a = u @ ldmul(np.array([1, 2, 4, 3, 0.1]), v.H) return u, v, a
def mat_herm_sparse(): np.random.seed(1) u = rand_uni(4) a = u @ ldmul(np.array([-1, 2, 4, -3]), u.H) a = qu(a, sparse=True) return u, a
def prematsparse(): u = rand_uni(4) a = u @ ldmul(np.array([-1, 2, 4, -3]), u.H) a = qu(a, sparse=True) return u, a
def ham1(): evecs = rand_uni(5) evals = np.array([-5, -3, 0.1, 2, 4]) return dot(evecs, ldmul(evals, evecs.H))
def test_evecs(self, ham1, which, k, sigma): lk, vk = eigs_numpy(ham1, k=k, which=which, return_vecs=True, sigma=sigma, sort=False) assert isinstance(vk, qu.qarray) assert_allclose(qu.dot(vk, qu.ldmul(lk, vk.H)), ham1)