scipy.optimize.approx_fprime¶
-
scipy.optimize.
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.
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 likefmin_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])