Solves automatic numerical differentiation problems in one or more variables.
Project description
Suite of tools written in _Python to solve automatic numerical differentiation problems in one or more variables. Finite differences are used in an adaptive manner, coupled with a Romberg extrapolation methodology to provide a maximally accurate result. The user can configure many options like; changing the order of the method or the extrapolation, even allowing the user to specify whether complex-step, central, forward or backward differences are used.
The methods provided are:
Derivative: Compute the derivatives of order 1 through 10 on any scalar function.
Gradient: Compute the gradient vector of a scalar function of one or more variables.
Jacobian: Compute the Jacobian matrix of a vector valued function of one or more variables.
Hessian: Compute the Hessian matrix of all 2nd partial derivatives of a scalar function of one or more variables.
Hessdiag: Compute only the diagonal elements of the Hessian matrix
All of these methods also produce error estimates on the result.
The documentation for numdifftools is available here http://numdifftools.readthedocs.org/
To test if the toolbox is working paste the following in an interactive python session:
import numdifftools as nd nd.test(coverage=True, doctests=True)
Examples
Compute 1’st and 2’nd derivative of exp(x), at x == 1:
>>> import numpy as np >>> import numdifftools as nd >>> fd = nd.Derivative(np.exp) # 1'st derivative >>> fdd = nd.Derivative(np.exp, n=2) # 2'nd derivative >>> fd(1) array([ 2.71828183])
Nonlinear least squares:
>>> xdata = np.reshape(np.arange(0,1,0.1),(-1,1)) >>> ydata = 1+2*np.exp(0.75*xdata) >>> fun = lambda c: (c[0]+c[1]*np.exp(c[2]*xdata) - ydata)**2 >>> Jfun = nd.Jacobian(fun) >>> np.abs(Jfun([1,2,0.75])) < 1e-14 # should be numerically zero array([[ True, True, True], [ True, True, True], [ True, True, True], [ True, True, True], [ True, True, True], [ True, True, True], [ True, True, True], [ True, True, True], [ True, True, True], [ True, True, True]], dtype=bool)
Compute gradient of sum(x**2):
>>> fun = lambda x: np.sum(x**2) >>> dfun = nd.Gradient(fun) >>> dfun([1,2,3]) array([ 2., 4., 6.])
See also
scipy.misc.derivative
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for numdifftools-0.9.2-py2-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f4823acf003a38d264dc33d7320539682551ab1099676e9b065eb0bcd43e356a |
|
MD5 | 676c72cff814c4345f509c0d9265b75b |
|
BLAKE2b-256 | 31b734098c2c5e8fb1f75099da45494aaf38027ca90aeef6a52d4cead1973cd3 |