Skip to main content

A Python implementation of the AAA algorithm for rational approximation

Project description

The AAA algorithm for rational approximation

This is a Python implementation of the AAA algorithm for rational approximation described in the paper "The AAA Algorithm for Rational Approximation" by Yuji Nakatsukasa, Olivier Sète, and Lloyd N. Trefethen, SIAM Journal on Scientific Computing 2018 40:3, A1494-A1522.

A MATLAB implementation of this algorithm is contained in Chebfun. The present Python version is a more or less direct port of the MATLAB version.

Installation

The implementation is in pure Python and requires only numpy and scipy as dependencies. Install it using pip:

pip install aaa-approx

Usage

Here's an example of how to approximate a function in the interval [0,1]:

import numpy as np
from aaa import aaa

Z = np.linspace(0.0, 1.0, 1000)
F = np.exp(Z) * np.sin(2*np.pi*Z)

r = aaa(F, Z, mmax=10)

Instead of the maximum number of terms mmax, it's also possible to specify the error tolerance tol. Both arguments work exactly as in the MATLAB version.

The returned object r is an instance of the class aaa.BarycentricRational and can be called like a function. For instance, you can compute the error on Z like this:

err = F - r(Z)
print(np.linalg.norm(err, np.inf))

If you are interested in the poles and residues of the computed rational function, you can query them like

pol,res = r.polres()

and the zeroes using

zer = r.zeros()

Finally, the nodes, values and weights used for interpolation (called zj, fj and wj in the original implementation) can be accessed as properties:

r.nodes
r.values
r.weights

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

aaa-approx-1.0.1.tar.gz (3.8 kB view details)

Uploaded Source

Built Distribution

aaa_approx-1.0.1-py3-none-any.whl (4.0 kB view details)

Uploaded Python 3

File details

Details for the file aaa-approx-1.0.1.tar.gz.

File metadata

  • Download URL: aaa-approx-1.0.1.tar.gz
  • Upload date:
  • Size: 3.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.5.0.1 requests/2.18.4 setuptools/39.2.0 requests-toolbelt/0.9.1 tqdm/4.30.0 CPython/3.6.5

File hashes

Hashes for aaa-approx-1.0.1.tar.gz
Algorithm Hash digest
SHA256 649d843d212c8b92da3d5256c013bd5a4d9399e43f427f6967aa8940f60bf277
MD5 d42b34c170f6542fcc848edd4e7ba5f9
BLAKE2b-256 f8677e1b6d7733d238eb49b3002f917669a204298b635493a42199008e894f87

See more details on using hashes here.

File details

Details for the file aaa_approx-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: aaa_approx-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 4.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.5.0.1 requests/2.18.4 setuptools/39.2.0 requests-toolbelt/0.9.1 tqdm/4.30.0 CPython/3.6.5

File hashes

Hashes for aaa_approx-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 426a761ace11d403735cf6e079277c3b8e420c3e35152ce7b2cf3dd7fec91084
MD5 ab6ba97a331f9eb26ae94bf54536d733
BLAKE2b-256 f597175974ab217e0cae378b05ce6a581beaaae2ec6a3a28350aaa803c1f7350

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