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