PolyRat: Polynomial and Rational Function Library
PolyRat is a library for polynomial and rational approximation.
Formally we can think of polynomials as a sum of powers of :
A rational function is a ratio of two polynomial functions
The goal of this library is to construct polynomial and rational approximations
given a collection of point data consisting of pairs of
inputs
and outputs
that minimizes (for example)
The ultimate goal of this library is to provide algorithms to construct these approximations in a variety of norms with a variety of constraints on the approximants.
The polynomial approximation problem is relatively straightfoward as it is a convex problem for any p-norm with p≥1. However, there is still a need to be careful in the construction of the polynomial basis for high-degree polynomials to avoid ill-conditioning. Here we provide access to a number of polynomial bases:
- tensor-product polynomials based on Numpy (e.g., Monomial, Legendre, etc.);
- Vandermonde with Arnoldi polynomial basis;
- barycentric Lagrange polynomial bases.
The rational approximation problem is still an open research problem. This library provides a variety of algorithms for constructing rational approximations including:
- Adaptive Anderson Antoulas
- Sanathanan Koerner iteration
- Stabilized Sanathanan Koerner iteration
- Vector Fitting
Installation
> pip install --upgrade polyrat
Documentation
Full documentation is hosted on Read the Docs.
Usage
Using PolyRat follows the general pattern of scikit-learn. For example, to construct a rational approximation of the tangent function
import numpy as np
import polyrat
x = np.linspace(-1,1, 1000).reshape(-1,1) # Input data 🚨 must be 2-dimensional
y = np.tan(2*np.pi*x.flatten()) # Output data
num_degree, denom_degree = 10, 10 # numerator and denominator degrees
rat = polyrat.StabilizedSKRationalApproximation(num_degree, denom_degree)
rat.fit(x, y)
After constructing this approximation, we can then evaluate the resulting approximation by calling the class-instance
y_approx = rat(x) # Evaluate the rational approximation on X
Comparing this to training data, we note that this degree-(10,10) approximation is highly accurate
Reproducibility
This repository contains the code to reproduce the figures in the associated papers
- Multivariate Rational Approximation Using a Stabilized Sanathanan-Koerner Iteration in Reproducibility/Stabilized_SK
Related Projects
- baryrat: Pure python implementation of the AAA algorithm
- Block-AAA: Matlab implementation of a matrix-valued AAA variant
- RationalApproximations: Julia implementation AAA variants
- RatRemez Rational Remez algorithm (Silviu-Ioan Filip)
- BarycentricDC Barycentric Differential Correction (see SISC paper)
Metadata
Release files for polyrat 0.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| polyrat-0.2.2.tar.gz | 32.4 kB | Without provenance | Details for polyrat-0.2.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| polyrat-0.2.2-py3-none-any.whl | Python 3 | none | any | Details for polyrat-0.2.2-py3-none-any.whl |
Total release size: 83.2 kB
Release files / polyrat-0.2.2.tar.gz
| Download URL | polyrat-0.2.2.tar.gz |
|---|---|
| Size | 32.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
db8844edede4524c59089757bb8fcc9d313e87dad38a19ed87cfb252dc073eec
|
|
BLAKE2b-256 checksum How to use checksums |
6f4252b44a501d6e8b06b3c454a0904c097752e5db84a953991b4ce118a3d22f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.3.0 pkginfo/1.6.1 requests/2.25.1 setuptools/51.1.0 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.8.7
|
Release files / polyrat-0.2.2-py3-none-any.whl
| Download URL | polyrat-0.2.2-py3-none-any.whl |
|---|---|
| Size | 50.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7993e21d7ef62e2f5292e03245e2064a1484131257726e72b169a9444bc32793
|
|
BLAKE2b-256 checksum How to use checksums |
1c1043584e29529684dde0b28ea7a25ebf04ecd3e355f0fac2906cad4ecaa22d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.3.0 pkginfo/1.6.1 requests/2.25.1 setuptools/51.1.0 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.8.7
|
Security for polyrat 0.2.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.