scipy.optimize.approx_fprime

scipy.optimize.approx_fprime(xk, f, epsilon=1.4901161193847656e-08, *args)[源代码]

标量函数梯度的有限差分逼近。

参数
xkarray_like

要确定其渐变的坐标矢量 f

f可调用

确定梯度(偏导数)的函数。应该带上 xk 作为第一个参数,其他参数 f 可以在以下位置提供 *args 。应返回标量,则函数的值为 xk

epsilon{FLOAT,ARRAY_LIKE},可选

递增到 xk 用于确定函数梯度。如果是标量,则对所有偏导数使用相同的有限差增量。如果是数组,则每个元素应包含一个值 xk 。默认为 sqrt(np.finfo(float).eps) ,约为1.49e-08。

*args参数,可选

要传递给 f

退货
gradndarray

的偏导数 fxk

参见

check_grad

对照Approx_fPrime检查梯度函数的正确性。

注意事项

函数梯度由正向有限差分公式确定:

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

的主要用途 approx_fprime 在标量函数优化器中,比如 fmin_bfgs ,在数值上确定函数的雅可比。

示例

>>> 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])