一个用于寻找丢番图(整数代数)方程组小解的Python包
项目描述
作者:托马斯·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的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c9ad7026ca0d26dffd3e5754bf550020789212b892d80c4a5ce6ae6548ffa196 |
|
MD5 | e80f741d7c3eddc5cb4762cb3b961cb2 |
|
BLAKE2b-256 | e178c95b809d675dc1bda65e547a7a53ba9c8ad6053644b56500fd959ac9d1fc |
Diophantine-0.2.0-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 70e00e728ebfb2ed426ef98591a78edf8e3c87fbd5f1080b26494ae65ec83d5d |
|
MD5 | 9a0541d62f6f175b6315fdc44803c620 |
|
BLAKE2b-256 | bddb92ebaf5f25d87b181139846b9452a94fa7f14c3b664fbdc320c4b106288f |