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
的偏导数 f 至 xk 。
参见
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])