def testSvd(self): tol = 10**-6 A = numpy.random.rand(10, 3) P, s, Q = numpy.linalg.svd(A, full_matrices=False) A = P[:, 0:2].dot(numpy.diag(s[0:2]).dot(Q[0:2, :])) P2, s2, Q2 = Util.svd(A) self.assertTrue(numpy.linalg.norm(P2.dot(numpy.diag(s2)).dot(Q2) -A) < tol ) self.assertTrue(numpy.linalg.norm(P2.conj().T.dot(P2) - numpy.eye(P2.shape[1])) < tol) self.assertTrue(numpy.linalg.norm(Q2.dot(Q2.conj().T) - numpy.eye(Q2.shape[0])) < tol)
def testSvd(self): tol = 10**-6 A = numpy.random.rand(10, 3) P, s, Q = numpy.linalg.svd(A, full_matrices=False) A = P[:, 0:2].dot(numpy.diag(s[0:2]).dot(Q[0:2, :])) P2, s2, Q2 = Util.svd(A) self.assertTrue( numpy.linalg.norm(P2.dot(numpy.diag(s2)).dot(Q2) - A) < tol) self.assertTrue( numpy.linalg.norm(P2.conj().T.dot(P2) - numpy.eye(P2.shape[1])) < tol) self.assertTrue( numpy.linalg.norm(Q2.dot(Q2.conj().T) - numpy.eye(Q2.shape[0])) < tol)