# bayespy.utils.misc.approx_fprime¶

`bayespy.utils.misc.``approx_fprime`(xk, f, epsilon, *args)[source]

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. grad : ndarray 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[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])
```