Пример #1
0
def run_deflation_solver(Solver, ls, params):
    sol = Solver(ls, **params)
    test_linsys.check_solver(sol, Solver, ls, params)

    if params['store_arnoldi']:
        (n_, n) = sol.H.shape

        # check E
        assert_array_almost_equal(
            sol.E,
            krypy.utils.inner(sol.projection.U, ls.MlAMr*sol.projection.U,
                              ip_B=ls.ip_B))

        # check C
        assert_array_almost_equal(
            sol.C,
            krypy.utils.inner(sol.projection.U, ls.MlAMr*sol.V[:, :n],
                              ip_B=ls.ip_B))

        # check B_
        assert_array_almost_equal(
            sol.B_,
            krypy.utils.inner(sol.V, sol.projection.AU,
                              ip_B=ls.ip_B))

        # check Ritz pairs
        check_Ritz(sol, ls)
Пример #2
0
def run_RitzFactorySimple(Solver, ls, which):
    vector_factory = krypy.recycling.factories.RitzFactorySimple(
        n_vectors=3, which=which)
    recycling_solver = Solver()
    sols = []
    params = {'maxiter': 50, 'tol': 1e-5, 'x0': None}
    for i in range(3):
        sols.append(recycling_solver.solve(ls, vector_factory=vector_factory,
                                           **params))
        test_linsys.check_solver(sols[-1], Solver, ls, params)
        if i > 0:
            assert(len(sols[-1].resnorms) <= len(sols[0].resnorms))