def test_svd(self): for M in self.Mlist: MU, MD, MV = hp.svd(M) # ensure that MD is a diagonal matrix np.testing.assert_almost_equal(MD, np.diag(np.diag(MD))) reconstructedM = hp.reconstruct(MU, MD, MV) np.testing.assert_almost_equal(M, reconstructedM)
def evaluate(self, size): """ Evaluate with a give size matrix. Args: size: Matrix size. """ m = helpers.rand(size, size) PU, PD, PV = helpers.svd(m) self.assertTrue(np.allclose(np.dot(PU, np.dot(PD, PV)), m)) for i in range(size): for j in range(size): if i != j: self.assertEqual(PD[i, j], 0)
def test_adjust_cond(self): for M in self.Mlist: MU, MD, MV = hp.svd(M) M2 = hp.adjust_cond(MU, MD, MV, 20) self.assertAlmostEqual(np.linalg.cond(M2), 20)