#### Previous topic

scipy.optimize.linear_sum_assignment

#### Next topic

scipy.optimize.bracket

# scipy.optimize.approx_fprime

`scipy.optimize.``approx_fprime`(xk, f, epsilon, *args)

  Finite-difference approximation of the gradient of a scalar function.

  Parameters:

  xk : array_like

  > The coordinate vector at which to determine the gradient of f.

  f : callable

  > The function of which to determine the gradient (partial derivatives). Should take xk as first argument, other arguments to f can be supplied in `*args`. Should return a scalar, the value of the function at xk.

  epsilon : array_like

  > Increment to xk to use for determining the function gradient. If a scalar, uses the same finite difference delta for all partial derivatives. If an array, should contain one value per element of xk.

  *args : args, optional

  > Any other arguments that are to be passed to f.

  Returns:

  grad : ndarray

  > The partial derivatives of f to xk.

  See also

  `check_grad`
    Check correctness of gradient function against approx_fprime.

  Notes

  The function gradient is determined by the forward finite difference formula:

               f(xk[i] + epsilon[i]) - f(xk[i])
      f'[i] = ---------------------------------
                          epsilon[i]

  The main use of `approx_fprime` is in scalar function optimizers like `fmin_bfgs`, to determine numerically the Jacobian of a function.

  Examples

      >>> from scipy import optimize
      >>> def func(x, c0, c1):
      ...     "Coordinate vector `x` should be an array of size two."
      ...     return c0 * x[0]**2 + c1*x[1]**2

      >>> x = np.ones(2)
      >>> c0, c1 = (1, 200)
      >>> eps = np.sqrt(np.finfo(float).eps)
      >>> optimize.approx_fprime(x, func, [eps, np.sqrt(200) * eps], c0, c1)
      array([   2.        ,  400.00004198])