def test_cholesky(): rng = np.random.RandomState(4829) m, n = 100, 100 A = rng.normal(size=(m, n)) b = rng.normal(size=(m, )) x0, _, _, _ = np.linalg.lstsq(A, b) x1, _ = _cholesky(A, b, 0, transpose=False) x2, _ = _cholesky(A, b, 0, transpose=True) assert np.allclose(x0, x1) assert np.allclose(x0, x2)
def test_conjgrad(): rng = np.random.RandomState(4829) A, b = get_system(1000, 100, 2, rng=rng) sigma = 0.1 * A.max() x0, _ = _cholesky(A, b, sigma) x1, _ = _conjgrad(A, b, sigma, tol=1e-3) x2, _ = _block_conjgrad(A, b, sigma, tol=1e-3) assert np.allclose(x0, x1, atol=1e-6, rtol=1e-3) assert np.allclose(x0, x2, atol=1e-6, rtol=1e-3)
def test_scipy_solvers(): rng = np.random.RandomState(4829) A, b = get_system(1000, 100, 2, rng=rng) sigma = 0.1 * A.max() x0, _ = _cholesky(A, b, sigma) x1, _ = _conjgrad_scipy(A, b, sigma) x2, _ = _lsmr_scipy(A, b, sigma) assert np.allclose(x0, x1, atol=1e-5, rtol=1e-3) assert np.allclose(x0, x2, atol=1e-5, rtol=1e-3)
def test_conjgrad(): rng = np.random.RandomState(4829) m, n = 100, 100 d = 1 A = rng.normal(size=(m, n)) b = rng.normal(size=(m, d)) sigma = 1 x0 = _cholesky(A, b, sigma) x1, i = _conjgrad(A, b, sigma, tol=1e-3) # assert np.allclose(x0, x1, atol=1e-3, rtol=1e-5) assert np.allclose(x0, x1, atol=1e-5, rtol=1e-3)