pentapy: A toolbox for pentadiagonal matrizes.

# Welcome to pentapy

## Purpose

pentapy is a toolbox to deal with pentadiagonal matrices in Python.

Pentadiagonal linear equation systems arise in many areas of science and engineering: e.g. when solving differential equations, in interpolation problems, or in numerical schemes like finite difference.

## Installation

The package can be installed via pip. On Windows you can install WinPython to get Python and pip running.

pip install pentapy


There are pre-built wheels for Linux, MacOS and Windows for most Python versions.

To get the scipy solvers running, you have to install scipy or you can use the following extra argument:

pip install pentapy[all]


Instead of "all" you can also typ "scipy" or "umfpack" to get one of these specific packages.

## Citation

If you use pentapy in your publication, please cite it:

Müller, (2019). pentapy: A Python toolbox for pentadiagonal linear systems. Journal of Open Source Software, 4(42), 1759, https://doi.org/10.21105/joss.01759

To cite a certain release, have a look at the Zenodo site: https://doi.org/10.5281/zenodo.2587158

## References

The solver is based on the algorithms PTRANS-I and PTRANS-II presented by Askar et al. 2015.

## Documentation and Examples

You can find the documentation under https://pentapy.readthedocs.org.

### Solving a pentadiagonal linear equation system

This is an example of how to solve a LES with a pentadiagonal matrix.

import numpy as np
import pentapy as pp

size = 1000
# create a flattened pentadiagonal matrix
M_flat = (np.random.random((5, size)) - 0.5) * 1e-5
V = np.random.random(size) * 1e5
# solve the LES with M_flat as row-wise flattened matrix
X = pp.solve(M_flat, V, is_flat=True)

# create the corresponding matrix for checking
M = pp.create_full(M_flat, col_wise=False)
# calculate the error
print(np.max(np.abs(np.dot(M, X) - V)))


This should give something like:

4.257890395820141e-08


### Performance

In the following a couple of solvers for pentadiagonal systems are compared:

The implementations of pentapy are almost one order of magnitude faster than the scipy algorithms for banded or sparse matrices.

The performance plot was created with perfplot. Have a look at the script: examples/03_perform_simple.py.

## Contact

MIT © 2019 - 2023

## Release history Release notifications | RSS feed

### Source Distribution

pentapy-1.3.0.tar.gz (10.4 kB view hashes)

Uploaded Source

### Built Distributions

pentapy-1.3.0-cp312-cp312-win_amd64.whl (85.1 kB view hashes)

Uploaded CPython 3.12 Windows x86-64

pentapy-1.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (502.2 kB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

pentapy-1.3.0-cp312-cp312-macosx_11_0_arm64.whl (88.9 kB view hashes)

Uploaded CPython 3.12 macOS 11.0+ ARM64

pentapy-1.3.0-cp312-cp312-macosx_10_9_x86_64.whl (94.7 kB view hashes)

Uploaded CPython 3.12 macOS 10.9+ x86-64

pentapy-1.3.0-cp312-cp312-macosx_10_9_universal2.whl (174.8 kB view hashes)

Uploaded CPython 3.12 macOS 10.9+ universal2 (ARM64, x86-64)

pentapy-1.3.0-cp311-cp311-win_amd64.whl (84.9 kB view hashes)

Uploaded CPython 3.11 Windows x86-64

pentapy-1.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (510.7 kB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

pentapy-1.3.0-cp311-cp311-macosx_11_0_arm64.whl (88.3 kB view hashes)

Uploaded CPython 3.11 macOS 11.0+ ARM64

pentapy-1.3.0-cp311-cp311-macosx_10_9_x86_64.whl (94.3 kB view hashes)

Uploaded CPython 3.11 macOS 10.9+ x86-64

pentapy-1.3.0-cp311-cp311-macosx_10_9_universal2.whl (173.9 kB view hashes)

Uploaded CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64)

pentapy-1.3.0-cp310-cp310-win_amd64.whl (84.9 kB view hashes)

Uploaded CPython 3.10 Windows x86-64

pentapy-1.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (474.3 kB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

pentapy-1.3.0-cp310-cp310-macosx_11_0_arm64.whl (88.5 kB view hashes)

Uploaded CPython 3.10 macOS 11.0+ ARM64

pentapy-1.3.0-cp310-cp310-macosx_10_9_x86_64.whl (94.5 kB view hashes)

Uploaded CPython 3.10 macOS 10.9+ x86-64

pentapy-1.3.0-cp310-cp310-macosx_10_9_universal2.whl (174.4 kB view hashes)

Uploaded CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64)

pentapy-1.3.0-cp39-cp39-win_amd64.whl (85.4 kB view hashes)

Uploaded CPython 3.9 Windows x86-64

pentapy-1.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (477.0 kB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

pentapy-1.3.0-cp39-cp39-macosx_11_0_arm64.whl (89.3 kB view hashes)

Uploaded CPython 3.9 macOS 11.0+ ARM64

pentapy-1.3.0-cp39-cp39-macosx_10_9_x86_64.whl (95.2 kB view hashes)

Uploaded CPython 3.9 macOS 10.9+ x86-64

pentapy-1.3.0-cp39-cp39-macosx_10_9_universal2.whl (175.8 kB view hashes)

Uploaded CPython 3.9 macOS 10.9+ universal2 (ARM64, x86-64)

pentapy-1.3.0-cp38-cp38-win_amd64.whl (85.3 kB view hashes)

Uploaded CPython 3.8 Windows x86-64

pentapy-1.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (484.4 kB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

pentapy-1.3.0-cp38-cp38-macosx_11_0_arm64.whl (88.7 kB view hashes)

Uploaded CPython 3.8 macOS 11.0+ ARM64

pentapy-1.3.0-cp38-cp38-macosx_10_9_x86_64.whl (94.8 kB view hashes)

Uploaded CPython 3.8 macOS 10.9+ x86-64

pentapy-1.3.0-cp38-cp38-macosx_10_9_universal2.whl (174.7 kB view hashes)

Uploaded CPython 3.8 macOS 10.9+ universal2 (ARM64, x86-64)