Example #1
0
def test_arnoldi(j, rng, seed):
    d = 11
    A = random.random_spsd_matrix(d=d, random_state=rng)
    b = random.random_vector(d=d, random_state=rng)

    with Timer(text='Arnoldi done in {:.4f} seconds', logger=_logger.info):
        v = arnoldi.arnoldi(A, b, j=j)

    np.testing.assert_almost_equal(np.eye(v.shape[0]), v @ v.T)
Example #2
0
def test_conjugate_gradient(d, rng, seed):
    minimiser = cg.ConjugateGradient(A=random.random_spsd_matrix(
        d=d, random_state=rng),
                                     b=random.random_vector(d=d,
                                                            random_state=rng))
    with Timer(text='Conjugate gradient minimiser done in {:.4f} seconds',
               logger=_logger.info):
        x_star = minimiser()
    _logger.info('Conjugate gradient minimiser took %d iterations.',
                 minimiser.niter)
    np.testing.assert_allclose(minimiser.A @ x_star, minimiser.b)
Example #3
0
def test_rayleigh_iteration(rng, seed):
    A = random.random_spsd_matrix(d=10, random_state=rng)
    w_eigh, v_eigh = la.eigh(A)

    weighting = .9
    lambda_ = weighting * w_eigh[-1] + (1 - weighting) * w_eigh[-2]
    w_power = inverse_iteration.rayleigh_iteration(A,
                                                   lambda_,
                                                   niter=100,
                                                   random_state=rng)

    np.testing.assert_allclose(w_eigh[-1], w_power)
Example #4
0
def test_power_method(rng, seed):
    print(rng.uniform())

    A = random.random_spsd_matrix(d=10, random_state=rng)
    w_power, v_power, sigma_power = power.power_method(A,
                                                       niter=100,
                                                       random_state=rng)

    w_eigh, v_eigh = la.eigh(A)

    np.testing.assert_allclose(v_eigh[:, -1], v_power)
    np.testing.assert_allclose(w_eigh[-1], w_power)