Skip to main content

pentapy: A toolbox for pentadiagonal matrizes.

Project description

Welcome to pentapy

status DOI PyPI version Build Status Coverage Status Documentation Status Code style: black

pentapy-LOGO

Purpose

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

五对角线性方程组在科学和工程领域的许多地方都会出现:例如在求解微分方程、插值问题或在有限差分等数值方法中。

安装

您可以通过 pip 安装此软件包。在 Windows 上,您可以通过安装 WinPython 来运行 Python 和 pip。

pip install pentapy

大多数 Python 版本都提供了针对 Linux、MacOS 和 Windows 的预构建轮子。

要运行 scipy 解算器,您必须安装 scipy,或者可以使用以下额外参数

pip install pentapy[all]

除了 "all" 之外,您还可以输入 "scipy" 或 "umfpack" 来获取这些特定软件包之一。

引用

如果您在出版物中使用 pentapy,请引用它

Müller, (2019). pentapy:Python 中的五对角线性系统工具箱。开源软件杂志,4(42),1759,https://doi.org/10.21105/joss.01759

要引用某个版本,请查看 Zenodo 网站:https://doi.org/10.5281/zenodo.2587158

参考文献

解算器基于 Askar 等人于 2015 年提出的 PTRANS-I 和 PTRANS-II 算法。

文档和示例

您可以在 https://pentapy.readthedocs.org 下找到文档。

求解五对角线性方程组

这是一个如何使用五对角矩阵求解 LES 的示例。

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)))

这应该会得到类似的结果

4.257890395820141e-08

性能

以下比较了几种五对角系统的求解器

Performance

pentapy 的实现几乎比 scipy 用于带状或稀疏矩阵的算法快一个数量级。

性能图是用 perfplot 创建的。请查看脚本:examples/03_perform_simple.py

需求

可选

联系方式

您可以通过 info@geostat-framework.org 联系我们。

License

MIT © 2019 - 2023

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。

源分布

pentapy-1.3.0.tar.gz (10.4 kB 查看哈希值)

上传时间 源代码

构建的分发版

pentapy-1.3.0-cp312-cp312-win_amd64.whl (85.1 kB 查看哈希值)

上传时间 CPython 3.12 Windows x86-64

pentapy-1.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (502.2 kB 查看哈希值)

上传时间 CPython 3.12 manylinux: glibc 2.17+ x86-64

pentapy-1.3.0-cp312-cp312-macosx_11_0_arm64.whl (88.9 kB 查看哈希值)

上传时间 CPython 3.12 macOS 11.0+ ARM64

pentapy-1.3.0-cp312-cp312-macosx_10_9_x86_64.whl (94.7 kB 查看哈希值)

上传时间 CPython 3.12 macOS 10.9+ x86-64

pentapy-1.3.0-cp312-cp312-macosx_10_9_universal2.whl (174.8 kB 查看哈希值)

上传时间 CPython 3.12 macOS 10.9+ universal2 (ARM64, x86-64)

pentapy-1.3.0-cp311-cp311-win_amd64.whl (84.9 kB 查看哈希值)

上传时间 CPython 3.11 Windows x86-64

pentapy-1.3.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (510.7 kB 查看哈希值)

上传时间 CPython 3.11 manylinux: glibc 2.17+ x86-64

pentapy-1.3.0-cp311-cp311-macosx_11_0_arm64.whl (88.3 kB 查看哈希值)

上传时间 CPython 3.11 macOS 11.0+ ARM64

pentapy-1.3.0-cp311-cp311-macosx_10_9_x86_64.whl (94.3 kB 查看哈希值)

上传时间 CPython 3.11 macOS 10.9+ x86-64

pentapy-1.3.0-cp311-cp311-macosx_10_9_universal2.whl (173.9 kB 查看哈希值)

上传时间 CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64)

pentapy-1.3.0-cp310-cp310-win_amd64.whl (84.9 kB 查看哈希值)

上传于 CPython 3.10 Windows x86-64

pentapy-1.3.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (474.3 kB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.17+ x86-64

pentapy-1.3.0-cp310-cp310-macosx_11_0_arm64.whl (88.5 kB 查看哈希值)

上传于 CPython 3.10 macOS 11.0+ ARM64

pentapy-1.3.0-cp310-cp310-macosx_10_9_x86_64.whl (94.5 kB 查看哈希值)

上传于 CPython 3.10 macOS 10.9+ x86-64

pentapy-1.3.0-cp310-cp310-macosx_10_9_universal2.whl (174.4 kB 查看哈希值)

上传于 CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64)

pentapy-1.3.0-cp39-cp39-win_amd64.whl (85.4 kB 查看哈希值)

上传于 CPython 3.9 Windows x86-64

pentapy-1.3.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (477.0 kB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ x86-64

pentapy-1.3.0-cp39-cp39-macosx_11_0_arm64.whl (89.3 kB 查看哈希值)

上传于 CPython 3.9 macOS 11.0+ ARM64

pentapy-1.3.0-cp39-cp39-macosx_10_9_x86_64.whl (95.2 kB 查看哈希值)

上传于 CPython 3.9 macOS 10.9+ x86-64

pentapy-1.3.0-cp39-cp39-macosx_10_9_universal2.whl (175.8 kB 查看哈希值)

上传于 CPython 3.9 macOS 10.9+ universal2 (ARM64, x86-64)

pentapy-1.3.0-cp38-cp38-win_amd64.whl (85.3 kB 查看哈希值)

上传时间 CPython 3.8 Windows x86-64

pentapy-1.3.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (484.4 kB 查看哈希值)

上传时间 CPython 3.8 manylinux: glibc 2.17+ x86-64

pentapy-1.3.0-cp38-cp38-macosx_11_0_arm64.whl (88.7 kB 查看哈希值)

上传时间 CPython 3.8 macOS 11.0+ ARM64

pentapy-1.3.0-cp38-cp38-macosx_10_9_x86_64.whl (94.8 kB 查看哈希值)

上传时间 CPython 3.8 macOS 10.9+ x86-64

pentapy-1.3.0-cp38-cp38-macosx_10_9_universal2.whl (174.7 kB 查看哈希值)

上传时间 CPython 3.8 macOS 10.9+ universal2 (ARM64, x86-64)

支持者