跳转到主要内容

一个用于寻找丢番图(整数代数)方程组小解的Python包

项目描述

Unit Test Status Unit Test Coverage

作者:托马斯·G·克洛斯 (tom.g.close@gmail.com)

Diophantine (http://github.com/tclose/Diophantine) 是一个Python包,用于寻找丢番图方程组(见 http://en.wikipedia.org/wiki/Diophantine_equation)的小(整数)解。它基于凯斯·马修斯的PHP代码,该代码实现了https://github.com/tclose/Diophantine/blob/master/algorithm.pdf(见 http://www.numbertheory.org/lll.html 以获取相关出版物列表)中描述的算法,该算法使用LLL算法计算论文中描述的Hermite正规形式

通过格基缩减计算扩展gcd和Hermite正规形式算法,G. Havas,B.S. Majewski,K.R. Matthews,实验数学,第7卷(1998)125-136

(如果您在科学出版物中使用此代码,请引用此论文)

该代码在GitHub仓库中有两个分支(见https://github.com/tclose/Diophantine.git),分别是‘master’和‘numpy’。‘master’分支使用sympy库,因此使用任意长整数表示,而‘numpy’分支使用numpy库,虽然使用int64表示,但可能会出现整数溢出错误。

要找到不定方程组A x = b的小解,其中A是系数矩阵M x N,b是M x 1向量,x是N x 1向量,请使用模块中的’solve’方法,例如:

>>> from sympy import Matrix
>>> from diophantine import solve
>>> A = Matrix([[1, 0, 0, 2], [0, 2, 3, 5], [2, 0, 3, 1], [-6, -1, 0, 2],
                [0, 1, 1, 1], [-1, 2, 0,1], [-1, -2, 1, 0]]).T
>>> b = Matrix([1, 1, 1, 1])
>>> solve(A, b)
[Matrix([
[-1],
[ 1],
[ 0],
[ 0],
[-1],
[-1],
[-1]])]

返回的解向量通常会是一个具有最小范数的向量。如果找到具有相同范数的多个解,则都会返回。如果没有解,则返回空列表。

Diophantine以MIT许可证发布(详情见许可证)。

安装

Diophantine可在Python包索引(http://pypi.python.org)中找到,可以使用以下命令进行安装:

pip install diophantine

或者,可以从GitHub仓库的克隆版本使用setuptools安装命令进行安装

python setup.py install

从GitHub仓库的克隆版本(https://github.com/tclose/Diophantine)或直接将克隆的目录添加到您的PYTHONPATH中。

项目详情


下载文件

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

源代码分布

Diophantine-0.2.0.tar.gz(7.2 kB 查看哈希值

上传时间 源代码

构建分布

Diophantine-0.2.0-py2.py3-none-any.whl(9.8 kB 查看哈希值

上传时间 Python 2 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面