def test_linsys_spd(): A = test_utils.get_matrix_spd() Ainv = numpy.linalg.inv(A) # solution x = numpy.ones((10,1)) # preconditioner m = numpy.array(range(1,11)) m[-1] = 1. M, Minv = numpy.diag(m), numpy.diag(1./m) params_adds = [ { 'M': [ None, Ainv ] + test_utils.get_operators(Minv) }, { 'Ml': [ None, Ainv ] + test_utils.get_operators(Minv) }, { 'Mr': [ None, Ainv ] + test_utils.get_operators(Minv) } ] solvers = [ krypy.linsys.cg, krypy.linsys.minres, krypy.linsys.gmres ] for case in produce_cases(A, x, params_adds, solvers): yield case
def test_linsys_spd(): A = test_utils.get_matrix_spd() Ainv = numpy.linalg.inv(A) # solution x = numpy.ones((10, 1)) # preconditioner m = numpy.array(range(1, 11)) m[-1] = 1. M, Minv = numpy.diag(m), numpy.diag(1. / m) params_adds = [{ 'M': [None, Ainv] + test_utils.get_operators(Minv) }, { 'Ml': [None, Ainv] + test_utils.get_operators(Minv) }, { 'Mr': [None, Ainv] + test_utils.get_operators(Minv) }] solvers = [krypy.linsys.cg, krypy.linsys.minres, krypy.linsys.gmres] for case in produce_cases(A, x, params_adds, solvers): yield case
params_add = {'maxiter': [7], 'max_restarts': [20]} solver_params = { 'x0': [None, numpy.zeros(ls.b.shape), numpy.ones(ls.b.shape)], 'tol': [1e-13, 1e-2], 'maxiter': [15], } if ls.exact_solution is not None: solver_params['x0'].append(ls.exact_solution) for params in dictproduct(dict(list(solver_params.items()) + list(params_add.items()))): yield params cases = [ # spd {'A': test_utils.get_matrix_spd(), 'normal': True, 'self_adjoint': True, 'positive_definite': True}, # hpd {'A': test_utils.get_matrix_hpd(), 'normal': True, 'self_adjoint': True, 'positive_definite': True}, # symmetric indefinite {'A': test_utils.get_matrix_symm_indef(), 'normal': True, 'self_adjoint': True}, # hermitian indefinite {'A': test_utils.get_matrix_herm_indef(), 'normal': True, 'self_adjoint': True}, # nonsymm {'A': test_utils.get_matrix_nonsymm()}, # nonsymm {'A': test_utils.get_matrix_comp_nonsymm()}, ]
'x0': [None, numpy.zeros(ls.b.shape), numpy.ones(ls.b.shape)], 'tol': [1e-13, 1e-2], 'maxiter': [15], } if ls.exact_solution is not None: solver_params['x0'].append(ls.exact_solution) for params in dictproduct( dict(list(solver_params.items()) + list(params_add.items()))): yield params cases = [ # spd { 'A': test_utils.get_matrix_spd(), 'normal': True, 'self_adjoint': True, 'positive_definite': True }, # hpd { 'A': test_utils.get_matrix_hpd(), 'normal': True, 'self_adjoint': True, 'positive_definite': True }, # symmetric indefinite { 'A': test_utils.get_matrix_symm_indef(), 'normal': True,