scipy.optimize.

approx_fprime#

scipy.optimize.approx_fprime(xk, f, эпсилон=np.float64(1.4901161193847656e-08), *args)[источник]#

Конечная разностная аппроксимация производных скалярной или векторнозначной функции.

Если функция отображает из \(R^n\) to \(R^m\), его производные образуют матрицу размера m на n, называемую якобианом, где элемент \((i, j)\) является частной производной f[i] по xk[j].

Параметры:
xkarray_like

Вектор координат, для которого определяется градиент f.

fcallable

Функция, для которой оцениваются производные. Имеет сигнатуру f(xk, *args) где xk является аргументом в виде одномерного массива и args является кортежем любых дополнительных фиксированных параметров, необходимых для полного определения функции. Аргумент xk переданный в эту функцию является ndarray формы (n,) (никогда скаляром, даже если n=1). Он должен возвращать 1-D array_like формы (m,) или скаляр.

Предположим, что вызываемый объект имеет сигнатуру f0(x, *my_args, **my_kwargs), где my_args и my_kwargs являются обязательными позиционными и ключевыми аргументами. Вместо передачи f0 в качестве вызываемого объекта, оберните его, чтобы он принимал только x; например, передать fun=lambda x: f0(x, *my_args, **my_kwargs) как вызываемый объект, где my_args (кортеж) и my_kwargs (dict) были собраны перед вызовом этой функции.

Изменено в версии 1.9.0: f теперь может возвращать 1-D массивоподобный объект, с \((m, n)\) Якобиан оценивается.

эпсилон{float, array_like}, необязательный

Приращение к xk для определения градиента функции. Если скаляр, использует одну и ту же конечную разность delta для всех частных производных. Если массив, должен содержать одно значение для каждого элемента xk. По умолчанию sqrt(np.finfo(float).eps), что приблизительно равно 1.49e-08.

*argsargs, optional

Любые другие аргументы, которые должны быть переданы в f.

Возвращает:
jacndarray

Частные производные от f to xk.

Смотрите также

check_grad

Проверка корректности функции градиента с помощью approx_fprime.

Примечания

Градиент функции определяется формулой прямой конечной разности:

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

Примеры

>>> import numpy as np
>>> 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.00004208])