我需要在我的应用程序中解决一些数学方程式。以下是这样一个等式的典型例子:
a + b * c - d / e = a
附加规则:
我想获得a,b,c,d和e的可能解决方案集。
是否有任何库,无论是开源还是商业,我可以用它来解决这样的等式?如果是,他们提供了什么样的结果?
答案 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仿真器。