Skip to main content

Polynomial and rational function library

Project description

PolyRat: Polynomial and Rational Function Library

PyPI version CI Coverage Status Documentation Status

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

A rational approximation of the tangent function

Reproducibility

This repository contains the code to reproduce the figures in the associated papers

Related Projects

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

polyrat-0.2.1.tar.gz (32.2 kB view details)

Uploaded Source

Built Distribution

polyrat-0.2.1-py3-none-any.whl (50.5 kB view details)

Uploaded Python 3

File details

Details for the file polyrat-0.2.1.tar.gz.

File metadata

  • Download URL: polyrat-0.2.1.tar.gz
  • Upload date:
  • Size: 32.2 kB
  • Tags: Source
  • Uploaded using 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.55.1 CPython/3.8.7

File hashes

Hashes for polyrat-0.2.1.tar.gz
Algorithm Hash digest
SHA256 b2b752bc8edb136bbc6b4b9a6c9257df9eafeedae8fd752ccb6499775fe809f0
MD5 39ea68959ec56476cd298421dbfb79cc
BLAKE2b-256 5897568d3dcd8df4d7a4088f2f8d026a68ea723b69f0708d2224ad6babe9f6c4

See more details on using hashes here.

File details

Details for the file polyrat-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: polyrat-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 50.5 kB
  • Tags: Python 3
  • Uploaded using 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.55.1 CPython/3.8.7

File hashes

Hashes for polyrat-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 0cffb0b1fa136189e62f7d4a7969a9d2fc6fdaef874da615b7399a658e085812
MD5 9da0d3d8022fb2c155e51ff59df675c0
BLAKE2b-256 53ed716cf2a47ce779e18dd8faddfe58ac157eda3f1d5f1ea9ca83c05c49cc1c

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