Skip to main content

Higher order partial derivatives computation with respect to one or several tensor-like variables, application to nonlinear dynamics

Project description

ndmap, 2022-2023

Higher order partial derivatives computation with respect to one or several tensor-like variables. Taylor series function approximation (derivative table and series function representation). Parametric fixed point computation.

Install & build

$ pip install git+https://github.com/i-a-morozov/ndmap.git@main

or

$ pip install ndmap -U

Documentation

https://i-a-morozov.github.io/ndmap/

Derivative (composable jacobian)

Compute higher order function (partial) derivatives.

>>> from ndmap.derivative import derivative
>>> def fn(x):
...     return 1 + x + x**2 + x**3 + x**4 + x**5
... 
>>> import torch
>>> x = torch.tensor(0.0)
>>> derivative(5, fn, x)
[tensor(1.), tensor(1.), tensor(2.), tensor(6.), tensor(24.), tensor(120.)]
>>> from ndmap.derivative import derivative
>>> def fn(x):
...     x1, x2 = x
...     return x1**2 + x1*x2 + x2**2
... 
>>> import torch
>>> x = torch.tensor([0.0, 0.0])
>>> derivative(2, fn, x, intermediate=False)
tensor([[2., 1.],
        [1., 2.]])
>>> from ndmap.derivative import derivative
>>> def fn(x, y):
...     x1, x2 = x
...     return x1**2*(1 + y) + x2**2*(1 - y)
... 
>>> import torch
>>> x = torch.tensor([0.0, 0.0])
>>> y = torch.tensor(0.0)
>>> derivative((2, 1), fn, x, y)
[[tensor(0.), tensor(0.)], [tensor([0., 0.]), tensor([0., 0.])], [tensor([[2., 0.],
        [0., 2.]]), tensor([[ 2.,  0.],
        [ 0., -2.]])]]

Derivative (gradient)

Compute higher order function (partial) derivatives.

>>> from ndmap.gradient import series
>>> def fn(x):
...     return 1 + x + x**2 + x**3 + x**4 + x**5
... 
>>> import torch
>>> x = torch.tensor([0.0])
>>> series((5, ), fn, x, retain=False, series=False)
{(0,): tensor([1.]),
 (1,): tensor([1.]),
 (2,): tensor([2.]),
 (3,): tensor([6.]),
 (4,): tensor([24.]),
 (5,): tensor([120.])}
>>> from ndmap.gradient import series
>>> def fn(x):
...     x1, x2 = x
...     return x1**2 + x1*x2 + x2**2
...
>>> import torch
>>> x = torch.tensor([0.0, 0.0])
>>> series((2, ), fn, x, intermediate=False, retain=False, series=False)
{(2, 0): tensor(2.), (1, 1): tensor(1.), (0, 2): tensor(2.)}
>>> from ndmap.gradient import series
>>> def fn(x, y):
...     x1, x2 = x
...     y1, = y
...     return x1**2*(1 + y1) + x2**2*(1 - y1)
...
>>> import torch
>>> x = torch.tensor([0.0, 0.0])
>>> y = torch.tensor([0.0])
>>> series((2, 1), fn, x, y, retain=False, series=False)
{(0, 0, 0): tensor(0.),
 (0, 0, 1): tensor(0.),
 (1, 0, 0): tensor(0.),
 (0, 1, 0): tensor(0.),
 (1, 0, 1): tensor(0.),
 (0, 1, 1): tensor(-0.),
 (2, 0, 0): tensor(2.),
 (1, 1, 0): tensor(0.),
 (0, 2, 0): tensor(2.),
 (2, 0, 1): tensor(2.),
 (1, 1, 1): tensor(0.),
 (0, 2, 1): tensor(-2.)}

Desription

>>> import ndmap
>>> ndmap.__about__

Animations

Stable and unstable invariant manifolds approximation

Collision of fixed points

Reduce real part of a hyperbolic fixed point

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

ndmap-0.1.7.tar.gz (8.3 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ndmap-0.1.7-py3-none-any.whl (47.5 kB view details)

Uploaded Python 3

File details

Details for the file ndmap-0.1.7.tar.gz.

File metadata

  • Download URL: ndmap-0.1.7.tar.gz
  • Upload date:
  • Size: 8.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.4

File hashes

Hashes for ndmap-0.1.7.tar.gz
Algorithm Hash digest
SHA256 3e125ca121f828da43d4f331a1d91d971155292634df2f665182ef9a0a62fef3
MD5 cd67a872d59bd6fb980f27275e5d58dc
BLAKE2b-256 ac5c2bbbc5f65116fdfb281b547012fd4a1633ab80afddde9835a76ef7d89663

See more details on using hashes here.

File details

Details for the file ndmap-0.1.7-py3-none-any.whl.

File metadata

  • Download URL: ndmap-0.1.7-py3-none-any.whl
  • Upload date:
  • Size: 47.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.4

File hashes

Hashes for ndmap-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 2c2c378db3ea1c5f9ed1ad0655e03715e2ca94560140a227915fe8b811028a58
MD5 00cb57d93ae28db8706bef5935cdcb0b
BLAKE2b-256 2cfb3e31395b86ae479a964acc13b66c92d37e9af4da9f94cffa323124a6e904

See more details on using hashes here.

Supported by

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