#### Previous topic

scipy.optimize.bracket

#### Next topic

scipy.optimize.line_search

# scipy.optimize.check_grad

`scipy.optimize.``check_grad`(func, grad, x0, *args, **kwargs)

  Check the correctness of a gradient function by comparing it against a (forward) finite-difference approximation of the gradient.

  Parameters:

  func : callable `func(x0, *args)`

  > Function whose derivative is to be checked.

  grad : callable `grad(x0, *args)`

  > Gradient of func.

  x0 : ndarray

  > Points to check grad against forward difference approximation of grad using func.

  args : *args, optional

  > Extra arguments passed to func and grad.

  epsilon : float, optional

  > Step size used for the finite difference approximation. It defaults to `sqrt(numpy.finfo(float).eps)`, which is approximately 1.49e-08.

  Returns:

  err : float

  > The square root of the sum of squares (i.e. the 2-norm) of the difference between `grad(x0, *args)` and the finite difference approximation of grad using func at the points x0.

  See also

  `approx_fprime`

  Examples

      >>> def func(x):
      ...     return x[0]**2 - 0.5 * x[1]**3
      >>> def grad(x):
      ...     return [2 * x[0], -1.5 * x[1]**2]
      >>> from scipy.optimize import check_grad
      >>> check_grad(func, grad, [1.5, -1.5])
      2.9802322387695312e-08