Skip to main content

The AAA algorithm for rational approximation Build Status

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. (doi)

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.

The "cleanup" feature for spurious poles and zeros is not currently implemented.

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

Metadata

Release files for aaa-approx 1.0.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for aaa-approx 1.0.2
File Size Uploaded
aaa-approx-1.0.2.tar.gz 5.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for aaa-approx 1.0.2
File Interpreter ABI Platform
aaa_approx-1.0.2-py3-none-any.whl Python 3 none any Details

Total release size: 9.4 kB

Release files / aaa-approx-1.0.2.tar.gz

Download URL aaa-approx-1.0.2.tar.gz
Size 5.3 kB
Tags Source
SHA-256 checksum
How to use checksums
b3739ff6cfb1d9de6397136fcfb89c32109b634f99c5d4220b0fa759ce0276aa
BLAKE2b-256 checksum
How to use checksums
6eb3396f743df69389f1f05e5317962138c21f679457dd9b0b3e0f794fb042c0
Upload date
Uploaded using Trusted Publishing?
What is 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

Release files / aaa_approx-1.0.2-py3-none-any.whl

Download URL aaa_approx-1.0.2-py3-none-any.whl
Size 4.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7560f5364fa28bbbeff9a8163b9e83b2e51c89b7e95bb1ab4b81eb50935dab45
BLAKE2b-256 checksum
How to use checksums
48a0a0a536c51c8aaf6d29536d087a10086341048c24c206ab0104a454285204
Upload date
Uploaded using Trusted Publishing?
What is 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

Release history Release notifications | RSS feed

This release

1.0.2 This release

2 release files

1.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page