descent/objectives.py
def goldstein_price(theta):
    """Goldstein-Price function"""
    x, y = theta
    obj = (1 + (x + y + 1) ** 2 * (19 - 14 * x + 3 * x ** 2 - 14 * y + 6 * x * y + 3 * y ** 2)) * \
          (30 + (2 * x - 3 * y) ** 2 *
           (18 - 32 * x + 12 * x ** 2 + 48 * y - 36 * x * y + 27 * x ** 2))
    grad = np.array([
        ((2 * x - 3 * y)**2 * (78 * x - 36 * y - 32) + (8 * x - 12 * y) *
         (39 * x**2 - 36 * x * y - 32 * x + 48 * y + 18)) *
        ((x + y + 1)**2 * (3 * x**2 + 6 * x * y - 14 * x + 3 * y**2 - 14 * y + 19) + 1) +
        ((2 * x - 3 * y)**2 * (39 * x**2 - 36 * x * y - 32 * x + 48 * y + 18) + 30) *
        ((x + y + 1)**2 *
         (6 * x + 6 * y - 14) + (2 * x + 2 * y + 2) *
         (3 * x**2 + 6 * x * y - 14 * x + 3 * y**2 - 14 * y + 19)),
        ((-36 * x + 48) * (2 * x - 3 * y)**2 + (-12 * x + 18 * y) *
         (39 * x**2 - 36 * x * y - 32 * x + 48 * y + 18)) *
        ((x + y + 1)**2 * (3 * x**2 + 6 * x * y - 14 * x + 3 * y**2 - 14 * y + 19) + 1) +
        ((2 * x - 3 * y)**2 * (39 * x**2 - 36 * x * y - 32 * x + 48 * y + 18) + 30) *
        ((x + y + 1)**2 * (6 * x + 6 * y - 14) + (2 * x + 2 * y + 2) *
         (3 * x**2 + 6 * x * y - 14 * x + 3 * y**2 - 14 * y + 19)),
    ])
    return obj, grad
def goldstein_price(theta):
    """Goldstein-Price function"""
    x, y = theta
    obj = (1 + (x + y + 1) ** 2 * (19 - 14 * x + 3 * x ** 2 - 14 * y + 6 * x * y + 3 * y ** 2)) * \
          (30 + (2 * x - 3 * y) ** 2 *
           (18 - 32 * x + 12 * x ** 2 + 48 * y - 36 * x * y + 27 * x ** 2))
    grad = np.array([
        ((2 * x - 3 * y)**2 * (78 * x - 36 * y - 32) + (8 * x - 12 * y) *
         (39 * x**2 - 36 * x * y - 32 * x + 48 * y + 18)) *
        ((x + y + 1)**2 * (3 * x**2 + 6 * x * y - 14 * x + 3 * y**2 - 14 * y + 19) + 1) +
        ((2 * x - 3 * y)**2 * (39 * x**2 - 36 * x * y - 32 * x + 48 * y + 18) + 30) *
        ((x + y + 1)**2 *
         (6 * x + 6 * y - 14) + (2 * x + 2 * y + 2) *
         (3 * x**2 + 6 * x * y - 14 * x + 3 * y**2 - 14 * y + 19)),
        ((-36 * x + 48) * (2 * x - 3 * y)**2 + (-12 * x + 18 * y) *
         (39 * x**2 - 36 * x * y - 32 * x + 48 * y + 18)) *
        ((x + y + 1)**2 * (3 * x**2 + 6 * x * y - 14 * x + 3 * y**2 - 14 * y + 19) + 1) +
        ((2 * x - 3 * y)**2 * (39 * x**2 - 36 * x * y - 32 * x + 48 * y + 18) + 30) *
        ((x + y + 1)**2 * (6 * x + 6 * y - 14) + (2 * x + 2 * y + 2) *
         (3 * x**2 + 6 * x * y - 14 * x + 3 * y**2 - 14 * y + 19)),
    ])
    return obj, grad
Goldstein-Price function