當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Python SciPy optimize.approx_fprime用法及代碼示例

本文簡要介紹 python 語言中 scipy.optimize.approx_fprime 的用法。

用法:

scipy.optimize.approx_fprime(xk, f, epsilon=1.4901161193847656e-08, *args)#

標量或vector-valued 函數的導數的有限差分逼近。

如果一個函數從 映射到 ,它的導數形成一個稱為雅可比矩陣的 m-by-n 矩陣,其中元素 是 f[i] 相對於 xk[j] 的偏導數。

參數

xk array_like

確定 f 梯度的坐標向量。

f 可調用的

要估計其導數的函數。有簽名f(xk, *args)其中xk是一維數組形式的參數,並且參數是完全指定函數所需的任何附加固定參數的元組。參數xk傳遞給該函數的是一個形狀為 (n,) 的 ndarray(即使 n=1,也絕不是標量)。它必須返回形狀為 (m,) 或標量的一維數組。

epsilon {float, 數組},可選

增量為xk用於確定函數梯度。如果是標量,則對所有偏導數使用相同的有限差分增量。如果是一個數組,每個元素應該包含一個值xk.默認為sqrt(np.finfo(float).eps),約為 1.49e-08。

*args 參數,可選

要傳遞給 f 的任何其他參數。

返回

jac ndarray

f 到 xk 的偏導數。

注意

函數梯度由前向有限差分公式確定:

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

相關用法


注:本文由純淨天空篩選整理自scipy.org大神的英文原創作品 scipy.optimize.approx_fprime。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。