human
Give me a Python program to determine the gradient of `f` given the following:
Complete the below
def 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])'
    '''
assistant
#Here is Python program to determine the gradient of `f`.
    return _approx_fprime_helper(xk, f, epsilon, args=args)