线性数学方程的方程求解器

时间:2008-10-07 20:45:16

标签: c++ equation algebra solver

我需要在我的应用程序中解决一些数学方程式。以下是这样一个等式的典型例子:

a + b * c - d / e = a

附加规则:

  • b%10 = 0
  • b> = 0
  • b <= 100
  • 每个数字必须为整数
  • ...

我想获得a,b,c,d和e的可能解决方案集。

是否有任何库,无论是开源还是商业,我可以用它来解决这样的等式?如果是,他们提供了什么样的结果?

10 个答案:

答案 0 :(得分:3)

使用线性编程解决linear systems 通常可以解决 。我建议你看一下Boost uBLAS的初学者 - 它有一个简单的三角形求解器。然后,您可以查看定位更多特定于域的方法的库,可能是QSopt

答案 1 :(得分:2)

你正在冒险进入数值分析的世界,这里是龙。规范中看似微小的差异可以在正确的方法上产生巨大的差异。

我毫不犹豫地提出具体建议,而没有对问题域进行相当准确的描述。这听起来很肤浅,就像你正在解决有限的线性问题,这些问题很简单,有很多方法可以解决,但“......”可能是一个问题。

一般求解器等的良好资源是GAMS。对于你所要求的内容,大部分软件都可能有点沉重。

答案 2 :(得分:1)

你想要一个计算机代数系统。

请参阅 https://stackoverflow.com/questions/160911/symbolic-math-lib,其答案主要与c ++和c相关。

答案 3 :(得分:1)

我知道这不是你真正的问题,但你可以将给定的等式简化为:

d = b * c * e,e!= 0

答案 4 :(得分:0)

非常确定Numerical Recipes会有一些东西

答案 5 :(得分:0)

你正在寻找一个计算机代数系统,这不是一件小事。

很多人都可以使用,但请在维基百科上试用这个列表:

http://en.wikipedia.org/wiki/Comparison_of_computer_algebra_systems

- 亚当

答案 6 :(得分:0)

这看起来像线性编程。 this列出了帮助吗?

答案 7 :(得分:0)

除了其他帖子。你的约束集让人联想到整数编程问题,所以你可能也想检查那种东西。也许你的问题可以(重新)陈述为一个。

然而,您必须知道,整数编程问题往往是更难的计算问题之一,因此您可能最终会使用许多时钟周期来破解它。

答案 8 :(得分:0)

仅查看“附加规则”部分,它看起来像线性编程,在这种情况下,LINDO或实现单纯形算法的类似程序应该没问题。

但是,如果第一个等式实际上是典型的,它表明你的不是线性代数问题 - 没有2个变量相互相乘或相互划分应出现在线性方程中!

所以我说你肯定需要一个计算机代数系统或使用遗传算法解决问题。

由于你的限制类似于线性编程中的限制,但你并不完全在那里,如果你只是想要解决你的特定问题,我会说要选择{{3}末尾提到的任何库。并开发一个应用程序来给你结果。如果你想要一个更通用的方法,那么你必须在你的计算机上模拟代数操作,没有别的办法。

答案 9 :(得分:0)

TI-89计算器有一个“求解器”应用程序。 它是为了解决像你的例子中的问题而构建的。 我知道它不是图书馆。但是那里有几个TI-89仿真器。