liangbch 发表于 2010-3-1 14:55:09

征集求解线性方程组的数学软件

  我在求解小素数的自然对数算法中,需要求解线性方程组,我的这个程序在运行过程中,按照一定的规则,构造出成千上万的方程组,然后逐一求解。如果方程组有解,将这个方程组和它的解保存到文件。求解的方程组具有这样的特性,系数矩阵和方程组右边的列矩阵都是整数,要求方程组的解也必须为整数(如果解不是整数,视为无解)。基于速度考虑,我自己用C言语编程实现了线程方程组解法。目前我的程序可解2到31阶的整系数线性方程组,运算速度很快。在我的实现中,参与运算的变量为64bit整数,在求解高阶的方程组时,有时会遇到整数溢出,这会漏掉部分方程组的解。我的想法是对于可导致整数溢出的线程方程组,重新采用数学软件来求解。现征集可求解线性方程组的数学软件,要求:

1.至少能求10阶以上的线性方程组。
2.必须有编程接口,或者命令行或者脚本接口。GUI接口对我来说意义不大。
3.软件是免费的,或者有破解版或者注册码,我需要在本地安装来使用。
4.最好给出使用方法。

gxqcn 发表于 2010-3-1 15:05:24

可不可这样考虑:取一个大素数为模,将待解线性方程组看做是一个同余方程组,在解同余方程时就不存在整数溢出的问题了。如果有解,再代入判定是否合法。

liangbch 发表于 2010-3-1 15:18:32

不错的主意!能给出同余方程组解法的一些资料或者给出一个简单的例子吗?

gxqcn 发表于 2010-3-1 15:27:39

估计也就是消元什么的,
模运算可以让任意非0系数变为1,消元就简单多了。
且用模运算,不存在分数,不存在小数精度损失等问题。

wayne 发表于 2010-3-1 15:30:16

GSL - GNU Scientific Library

先看看gsl文档中关于解线性代数的部分吧
http://www.gnu.org/software/gsl/manual/html_node/Linear-Algebra.html

wayne 发表于 2010-3-1 15:35:48

本帖最后由 wayne 于 2010-3-1 15:44 编辑

5# wayne


还有老牌的lapack++,大名鼎鼎的矩阵计算软件MATLAB就发源于这个库


=====================================================
哦,这个太老了,好像被TNT更新掉了:
being superseded by the Template Numerical Toolkit (TNT)

TNT由著名的NIST开发,又俗称三硝基甲苯

gxqcn 发表于 2010-3-1 15:48:31

楼主系数矩阵及解均要求为整数,不同于一般的线性方程组,应该有特殊的优化手段。
不过,wayne 提供的几个链接也很具有参考价值。
lapack++ 最新版v. 1.1a 更新于 Feb, 2000,好长时间没动静了。

wayne 发表于 2010-3-1 15:57:17

那就试试Mathematica的MathLink吧,提供c/c++接口,回家了我给你弄几个例子

不知道maxima可不可以。。。

wayne 发表于 2010-3-1 16:17:59

刚才查了boost的文档,内容也非常丰富。
http://www.boost.org/doc/libs/1_42_0/libs/numeric/ublas/doc/index.htm

liangbch 发表于 2010-3-1 16:31:26

我的解法是消元法,将系数矩阵化为上三角矩阵。
页: [1] 2 3
查看完整版本: 征集求解线性方程组的数学软件