跳转到主要内容

解决三对角系统。

项目描述

Tests

tridiax

tridiax实现了在jax中的三对角系统求解器。所有求解器都支持CPU和GPU,与jit编译兼容,并且可以使用grad进行微分。

实现的求解器

通常,Thomas算法在CPU上会更快,而分而治之算法和Stone算法在GPU上会更快。

已知限制

目前,所有求解器仅针对维度是2的指数的系统进行了测试。

使用方法

from tridiax import thomas_solve, divide_conquer_solve, stone_solve

dim = 1024
diag = jnp.asarray(np.random.randn(dim))
upper = jnp.asarray(np.random.randn(dim - 1))
lower = jnp.asarray(np.random.randn(dim - 1))
solve = jnp.asarray(np.random.randn(dim))
solution = thomas_solve(lower, diag, upper, solve)

如果许多相同大小的系统需要求解且使用分而治之算法,则预先计算重排索引会很有帮助

from tridiax import divide_conquer_solve, divide_conquer_index

dim = 1024
diag = jnp.asarray(np.random.randn(dim))
upper = jnp.asarray(np.random.randn(dim - 1))
lower = jnp.asarray(np.random.randn(dim - 1))
solve = jnp.asarray(np.random.randn(dim))

indexing = divide_conquer_index(dim)
solution = divide_conquer_solve(lower, diag, upper, solve, indexing=indexing)

安装

git clone https://github.com/mackelab/tridiax.git
cd tridiax
pip install -e .

项目详细信息


下载文件

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

源代码发行版

tridiax-0.1.0.tar.gz (11.0 kB 查看哈希值)

上传时间 源代码

构建发行版

tridiax-0.1.0-py3-none-any.whl (11.5 kB 查看哈希值)

上传时间 Python 3

支持者