pentapy 1.3.0

Last updated:

0 purchases

pentapy 1.3.0 Image
pentapy 1.3.0 Images
Add to Cart

Description:

pentapy 1.3.0

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:

Solver 1: Standard linear algebra solver of Numpy np.linalg.solve
Solver 2: scipy.sparse.linalg.spsolve
Solver 3: Scipy banded solver scipy.linalg.solve_banded
Solver 4: pentapy.solve with solver=1
Solver 5: pentapy.solve with solver=2




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.
Requirements:

NumPy >= 1.14.5

Optional

SciPy
scikit-umfpack

Contact
You can contact us via [email protected].
License
MIT © 2019 - 2023

License:

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Customer Reviews

There are no reviews.