求解丢番图(整数代数)方程组小解的python包

Diophantine的Python项目详细描述


Unit Test StatusUnit Test Coverage

作者:thomas g.close(tom.g.close@gmail.com

diophantine(http://github.com/tclose/Diophantine)是一个python包,用于 丢番图方程组的小(整数)解 (见http://en.wikipedia.org/wiki/Diophantine_equation)。它基于php KeithMatthews编写的代码(见www.number-theory.org),实现了 https://github.com/tclose/Diophantine/blob/master/algorithm.pdf中描述的算法 (有关相关出版物的列表,请参见http://www.numbertheory.org/lll.html), 它使用lll算法来计算 报纸:

基于格基归约的扩展gcd和hermite范式算法, G.Havas,B.S.Majewski,K.R.Matthews,《实验数学》,第7卷(1998)125-136

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

在github存储库中有这段代码的两个分支 (参见https://github.com/tclose/Diophantine.git),“master”,它使用 因此使用任意长的整数表示,并且 “numpy”,它使用numpy库,速度更快,但可能会受到 尽管使用Int64表示,但仍存在整数溢出错误

为了找到丢番图方程组的小解,a x=b,其中a 是系数的m x n矩阵,b是m x 1向量,x是 n x 1矢量,使用模块中的“求解”方法,例如

>>> 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可以从python包索引(http://pypi.python.org)获得,并可以使用命令安装

pip install diophantine

或者,也可以使用setuptools install命令安装master分支

python setup.py install

从github存储库的克隆(https://github.com/tclose/Diophantine)或者简单地将克隆的目录添加到pythonpath。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java OnResizeListener或OnDrawListener或类似的东西   java Orika映射嵌套子列表   保存时java Heroku请求超时代码H12   数据库在Java中出现socket读取超时异常的原因是什么?   java如何更改来自Sqlite数据库的特定数据在Listview中的行颜色   java JAXB解组器无法正确处理XML中的列表   java Android日期时区让我抓狂   java不透明属性在Swing中如何工作?   eclipse从JavaEE代码生成流程图   java如何在Hibernate中从相关表中获取计数   java Glassfish部署了项目的依赖项库   java使内容适合JavaFx中的WebView   java不满意的链接错误libcrypto。所以1.0.0   循环中java数组的使用   java找出哪个包调用服务