Skip to main content

Compute numerical derivatives.

Project description

https://img.shields.io/pypi/v/jacobi https://img.shields.io/badge/github-docs-success https://img.shields.io/badge/github-source-blue

Fast numerical derivatives for real analytic functions with arbitrary round-off error.

Features

  • Robustly compute the generalised Jacobi matrix for an arbitrary real analytic mapping ℝⁿ → ℝⁱ¹ × … × ℝⁱⁿ

  • Derivative is either computed to specified accuracy (to save computing time) or until maximum precision of function is reached

  • Algorithm based on John D’Errico’s DERIVEST: works even with functions that have large round-off error

  • Up to 1200x faster than numdifftools at equivalent precision

  • Returns error estimates for derivatives

  • Supports arbitrary auxiliary function arguments

  • Perform statistical error propagation based on numerically computed jacobian

  • Lightweight package, only depends on numpy

Planned features

  • Compute the Hessian matrix numerically with the same algorithm

  • Further generalize the calculation to support function arguments with shape (N, K), in that case compute the Jacobi matrix for each of the K vectors of length N

Examples

from matplotlib import pyplot as plt
import numpy as np
from jacobi import jacobi


# function of one variable with auxiliary argument; returns a vector
def f(dx, x):
    y = x + dx
    return np.sin(y) / y


x = np.linspace(-10, 10, 1000)
fx = f(0, x)
fdx, fdex = jacobi(f, 0, x)

plt.plot(x, fx, label="f(x) = sin(x) / x")
plt.plot(x, fdx, ls="--", label="f'(x)")
plt.legend()
https://hdembinski.github.io/jacobi/_images/example.svg
from jacobi import propagate
import numpy as np


def f(x):
    a = 1.5
    b = 3.1
    return a * np.exp(-x ** 2) + b

x = [1.0, 2.0]
xcov = [[1.1, 0.1], [0.1, 2.3]]
y, ycov = propagate(f, x, xcov)

Comparison to numdifftools

Speed

Jacobi makes better use of vectorised computation than numdifftools. Smaller run-time is better (and ratio > 1).

https://hdembinski.github.io/jacobi/_images/speed.svg

Precision

The machine precision is indicated by the dashed line.

https://hdembinski.github.io/jacobi/_images/precision.svg

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

jacobi-0.2.2.tar.gz (431.9 kB view details)

Uploaded Source

Built Distribution

jacobi-0.2.2-py3-none-any.whl (7.2 kB view details)

Uploaded Python 3

File details

Details for the file jacobi-0.2.2.tar.gz.

File metadata

  • Download URL: jacobi-0.2.2.tar.gz
  • Upload date:
  • Size: 431.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/33.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.63.0 importlib-metadata/4.11.2 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.10

File hashes

Hashes for jacobi-0.2.2.tar.gz
Algorithm Hash digest
SHA256 007da53d937e9da929c8bfd6d514ec84c3aab32e69de661ccf5de05a09187c10
MD5 fe357c2369240eb29188f44ed7a412c3
BLAKE2b-256 1e08ffc0a9ee2657dedb463201691ccd1d251bf8d5033e9aed808a608dbc1a87

See more details on using hashes here.

File details

Details for the file jacobi-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: jacobi-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 7.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 pkginfo/1.8.2 readme-renderer/33.0 requests/2.27.1 requests-toolbelt/0.9.1 urllib3/1.26.8 tqdm/4.63.0 importlib-metadata/4.11.2 keyring/23.5.0 rfc3986/2.0.0 colorama/0.4.4 CPython/3.9.10

File hashes

Hashes for jacobi-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 6b45e9a0e7d6b9eb549694169864ca5b555406e9e05b21549b2ec94387f3cde7
MD5 dfbff346ccd0d39e9e93cabc446506ec
BLAKE2b-256 2a32b4d8a34aae40e825000dde29a83d44412571b621ab79c905d483b2b631d1

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page