Polynomial and rational function library

# 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:

The rational approximation problem is still an open research problem. This library provides a variety of algorithms for constructing rational approximations including:

## 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

## Project details

This version 0.2.2 0.2.1 0.2.0 0.1.3 0.1.2 0.1.1 0.1.0

Uploaded `source`
Uploaded `py3`