pentapy is a toolbox to deal with pentadiagonal matrices in Python and solve the corresponding linear equation systems.
pip install pentapy
There are pre-built wheels for Linux, MacOS and Windows for most Python versions (2.7, 3.4-3.7).
If your system is not supported and you want to have the Cython routines of pentapy installed, you have to provide a c-compiler and run:
pip install numpy cython pip install pentapy
To get the scipy solvers running, you have to install scipy or you can use the extra argument:
pip install pentapy[all]
Instead of “all” you can also typ “scipy” or “umfpack”.
The solver is based on the algorithms
presented by Askar et al. 2015.
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:
In the following, a couple of solvers for pentadiagonal systems are compared:
- Solver 1: Standard linear algebra solver of Numpy
- Solver 2:
- Solver 3: Scipy banded solver [
- Solver 4: pentapy.solve with
- Solver 5: pentapy.solve with
The performance plot was created with