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)
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)
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)
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)