ndmath
ndmath is a Python library for N-dimensional complex step and finite step differentiation, and Newton's method.
Installation
Use the package manager pip to install ndmath.
pip install ndmath
Examples
Calculating the Jacobian at a point:
import ndmath
ndmath.complexGrad(lambda x : x[0]**2+x[1], [1,2]) # returns array([2., 1.])
ndmath.finiteGrad(lambda x : x[0]**2+x[1], [1,2], 10**-7) # returns array([2.0000001, 1.])
Using the root-finding Newton's method:
def func(x):
return [(x[1]-3)**2+x[0]-5, 2*x[1]+x[0]**3]
def fprime(x):
return ndmath.complexGrad(func, x)
x0 = [0,0] #initial estimate
ndmath.nDimNewton(func, x0, fprime) # returns array([-1.02890183, 0.54461778])
Dependencies
Contributing
Pull requests are welcome. Feel free to open an issue first to discuss what you would like to change.
License
References
- Martins, J. R. R. A., Sturdza, P., and Alonso, J. J., 2003, "The Complex-Step Derivative Approximation," ACM Trans. Math. Software, 29(3), pp. 245–262.