2008-10-07 152 views
3

我需要在我的应用程序中求解一些数学方程。这里是这样的方程的一个典型的例子:线性数学方程的方程求解器

a + b * c - d/e = a 

附加规则:

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

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

是否有任何图书馆那里,无论是开源或商业,我可以用它来解决这样一个方程式?如果是,他们提供什么样的结果?

+0

这看起来不像家庭作业Bill K.大多数家庭作业不需要外部库。请重新考虑,然后再重新登录。 – Landon 2008-10-07 23:45:10

回答

3

解决linear systems可以一般来解决使用线性编程。我建议首先看看Boost uBLAS - 它有一个简单的三角解算器。然后,您可以检出针对更多特定于域的方法的库,可能为QSopt

0

这看起来像线性规划。 this列表帮助吗?

+0

这看起来几乎不像线性编程。 – 2008-10-17 20:19:00

0

除了其他职位。你的约束集让人想起整数编程问题,所以你可能也想检查这种事情。也许你的问题可以(重新)表达为一个。

但是你必须知道,整数规划问题往往是计算困难的问题之一,所以你最终可能会用很多时钟周期来破解它。

2

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

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

一般求解器等的一个很好的资源将是GAMS。大部分软件可能会对你所要求的内容有一定的影响。

1

我知道这是不是你真正的问题,但你可以简化给出的公式:

d = B * C * E与E = 0

+0

这对d = 0,b = 1,c = 1不起作用。我想出的最好的是b * c = d/e – dummy 2008-10-07 21:24:29

0

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

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

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

由于你有类似于线性编程中的那些限制,虽然你不是那里,如果你只是想解决你的具体问题,我会说拿起任何在Wikipedia's article on genetic algorithms末尾提到的库和开发一个应用程序给你的结果。如果你想要一个更通用的方法,那么你必须在你的计算机上模拟代数操作,没有其他办法。

0

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