Skip to main content

Interval library in Python using classical interval arithmetic + Kahan division in some functions

Project description

Interval library in Python

The Python module implements an algebraically closed system for working with intervals, solving interval systems of both linear and nonlinear equations, and visualizing multiple solutions.

For details, see the complete documentation on API.

Installation

Make sure you have all the system-wide dependencies, then install the module itself:

pip install intvalpy

Examples

Visualizing solutions

We can calculate the list of vertices of the convex set described by a point the system of inequalities A * x >= b or if an interval system of equations is considered A * x = b as well as visualize this set:

from intvalpy import Interval, lineqs, IntLinIncR2

import numpy as np

A1 = Interval([[-1, -1],[-1, -1]], [[1,1], [-1,1]])
b1 = Interval([1,-2], [1,2])

vertices = IntLinIncR2(A1, b1)

A2 = -np.array([[-3, -1],
                [-2, -2],
                [-1, -3],
                [1, -3],
                [2, -2],
                [3, -1],
                [3, 1],
                [2, 2],
                [1, 3],
                [-1, 3],
                [-2, 2],
                [-3, 1]])
b2 = -np.array([18,16,18,18,16,18,18,16,18,18,16,18])

vertices = lineqs(A2, b2, color='blue', alpha=0.2, size=(12,12))

SolSet

External decision evaluation:

To obtain an external estimate of an interval linear system of algebraic equations, we can use the method of crushing solutions PSS:

import intvalpy as ip

A = ip.Interval([[3.33, 0, 0], [0, 3.33, 0], [0, 0, 3.33]],
                [[3.33, 2, 2], [2, 3.33, 2], [2, 2, 3.33]])
b = ip.Interval([-1, -1, -1], [2, 2, 2])

ip.PSS(A, b)

Interval system of nonlinear equations:

This library also implements a multivariate interval Krawczyk and Hansen-Sengupta methods for solving nonlinear systems:

import intvalpy as ip

epsilon = 0.1
def f(x):
    return ip.asinterval([x[0]**2 + x[1]**2-1-ip.Interval(-epsilon, epsilon),
                          x[0] - x[1]**2])

def J(x):    
    result = [[2*x[0], 2*x[1]],
              [1, -2*x[1]]]
    return ip.asinterval(result)

ip.HansenSengupta(f, J, ip.Interval([0.5,0.5],[1,1]))

Links

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

intvalpy-1.4.10.tar.gz (21.0 kB view details)

Uploaded Source

File details

Details for the file intvalpy-1.4.10.tar.gz.

File metadata

  • Download URL: intvalpy-1.4.10.tar.gz
  • Upload date:
  • Size: 21.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.24.0 setuptools/51.0.0 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.7.3

File hashes

Hashes for intvalpy-1.4.10.tar.gz
Algorithm Hash digest
SHA256 7824722762a7b0c8fcb3e83485ef0762adb6a43f79c5489090d82af023f1d8fe
MD5 52e39d10761f9b156a477ab73749528e
BLAKE2b-256 8a4b01f36e48fdcc74272e548e54976750be974d0298bdc6dde2f69a8daba758

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page