def test_least_squares_oracle_2(): A = np.array([[1.0, 2.0], [3.0, 4.0]]) b = np.array([1.0, -1.0]) matvec_Ax = lambda x: A.dot(x) matvec_ATx = lambda x: A.T.dot(x) oracle = oracles.LeastSquaresOracle(matvec_Ax, matvec_ATx, b) # Checks at point x = [1, 2] x = np.array([1.0, 2.0]) assert_almost_equal(oracle.func(x), 80.0) ok_(np.allclose(oracle.grad(x), np.array([40., 56.]))) ok_(isinstance(oracle.grad(x), np.ndarray))
def test_least_squares_oracle(): A = np.eye(3) b = np.array([1, 2, 3]) matvec_Ax = lambda x: A.dot(x) matvec_ATx = lambda x: A.T.dot(x) oracle = oracles.LeastSquaresOracle(matvec_Ax, matvec_ATx, b) # Checks at point x = [0, 0, 0] x = np.zeros(3) assert_almost_equal(oracle.func(x), 7.0) ok_(np.allclose(oracle.grad(x), np.array([-1., -2., -3.]))) ok_(isinstance(oracle.grad(x), np.ndarray)) # Checks at point x = [1, 1, 1] x = np.ones(3) assert_almost_equal(oracle.func(x), 2.5) ok_(np.allclose(oracle.grad(x), np.array([0., -1., -2.]))) ok_(isinstance(oracle.grad(x), np.ndarray))