def test_dense_solve_single_rhs(self): solver = QRMUMPSSolver(self.A, verbose=False) solver.factorize() e = np.ones(self.n, dtype=np.complex64) rhs = self.A * e x = solver.solve(rhs) assert np.allclose(x, e, 1e-5)
def test_dense_solve_single_rhs(self): solver = QRMUMPSSolver((self.m, self.n, self.arow, self.acol, self.aval), verbose=False) solver.factorize() e = np.ones(self.n, dtype=np.float64) rhs = np.dot(self.A, e) x = solver.solve(rhs) assert np.allclose(np.dot(self.A,x), rhs, 1e-5)
def test_dense_solve_multiple_rhs(self): solver = QRMUMPSSolver((self.m, self.n, self.arow, self.acol, self.aval), verbose=False) solver.factorize() B = np.ones([self.n, 3], dtype=np.complex64) B[: ,1] = 2 * B[:,1] B[: ,2] = 3 * B[:,2] rhs = np.dot(self.A,B) x = solver.solve(rhs) assert np.allclose(x, B, 1e-5)
def test_dense_solve_multiple_rhs(self): solver = QRMUMPSSolver(self.A, verbose=False) solver.factorize() B = np.ones([self.m, 3], dtype=np.float64) B[:, 1] = 2 * B[:, 1] B[:, 2] = 3 * B[:, 2] x = solver.solve(B) assert np.allclose(self.A * x[:, 0], B[:, 0], 1e-5) assert np.allclose(self.A * x[:, 1], B[:, 1], 1e-5) assert np.allclose(self.A * x[:, 2], B[:, 2], 1e-5)
def test_dense_solve_multiple_rhs(self): solver = QRMUMPSSolver(self.A, verbose=False) solver.factorize() B = np.ones([self.n, 3], dtype=np.complex64) B[:, 1] = 2 * B[:, 1] B[:, 2] = 3 * B[:, 2] rhs = np.ones([self.m, 3], dtype=np.complex64) rhs[:, 0] = self.A * B[:, 0] rhs[:, 1] = self.A * B[:, 1] rhs[:, 2] = self.A * B[:, 2] x = solver.solve(rhs) assert np.allclose(x, B, 1e-5)
A = LLSparseMatrix(mm_filename=sys.argv[1], itype=types.INT32_T, dtype=types.COMPLEX128_T) (n, m) = A.shape print "A:" print A e = np.ones(n, dtype=np.complex128) rhs = A * e solver = QRMUMPSSolver(A, verbose=True) solver.analyze() solver.factorize() x = solver.solve(rhs) print "x should be 1-column vector:" print x print "=" * 80 rhs = np.ones([n, 3], dtype=np.complex128) rhs[:, 1] = 2 * rhs[:, 1] rhs[:, 2] = 3 * rhs[:, 2] x = solver.solve(rhs) print "x:" print x print x[:, 0]
print "A:" print A solver = QRMUMPSSolver((m, n, arow, acol, aval), verbose=False) solver.analyze() solver.factorize() print "\n\nSolving Ax = b where b is a vector" e = np.ones(n, dtype=np.float64) b = np.dot(A, e) print "b:" print b x = solver.solve(b) np.testing.assert_almost_equal(x, e) print "x: it should be a vector of ones" print x print "\n" + "=" * 80 + "\n" print "Solving Ax = B where B is a matrix" E = np.ones([n, 3], dtype=np.float64) E[:, 1] = 2 * E[:, 1] E[:, 2] = 3 * E[:, 2] B = np.dot(A, E) print "B:" print B
for i in xrange(0,10): print " "+"-"*76 print " i = %d"%i print " "+"-"*76 solver = QRMUMPSSolver((m, n, arow, acol, aval), verbose=False) solver.factorize('scotch') print solver.factorization_statistics e = (i+1)*np.ones(n, dtype=np.float64) rhs = np.dot(A, e) print " rhs:" print rhs x = solver.solve(rhs) print " x:" print x print "-"*80 print "solving with multiple rhs" print "-"*80 B = np.ones([n, 3], dtype=np.float64) B[:, 1] = 2 * B[:, 1] B[:, 2] = 3 * B[:, 2] rhs = np.dot(A, B) print "rhs:" print rhs