# scipy.optimize.approx_fprime¶

scipy.optimize.approx_fprime(xk, f, epsilon, *args)[source]

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

Parameters
xkarray_like

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

fcallable

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.

epsilonarray_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.

*argsargs, optional

Any other arguments that are to be passed to f.

Returns

The partial derivatives of f to xk.

`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**2 + c1*x**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])
```