cpo*_*rte 10 java math parsing formula
我正在寻找一个用于公式解析和评估的java库(或带有java API的本机库).
使用这里的建议,我看了很多库:
但它们都不能满足我的需求,那就是:
也许一个例子会更好.假设我们按此顺序输入系统:
我希望能够按此顺序输入这4行,并询问"a"(或"b",无论如何)的结果.然后,如果在用户界面(基本上是一个表变量<>公式)"b"更改为"2*d",库将自动更改"b"和"a"的值,并返回我(或午餐事件,或调用函数)更改列表
最好的库就像JEP一样,但具有无序变量功能和自动评估因变量的可能性
我知道编译器和电子表格软件使用这样的机制,但我没有找到任何直接可用的java或java兼容库
有人知道吗?
编辑:精确:问题实际上是关于一个库,或最终是一组链接在一起的库.问题是公司的项目,并且想法是花费最少的时间."自己动手"的解决方案已经被估算,不在问题的范围内
不知道有什么图书馆。
假设您拥有一组方程,方程的至少一侧有一个变量(不允许 A+B=CD)并且 没有循环(例如,A=B+1;B=A-2),从技术上讲,您需要做的是构建一个数据流图,显示每个运算符如何依赖于其操作数。对于无副作用的方程(例如,纯数学),这非常简单;您最终会得到一个有向无环图(具有代表共享子表达式的共享子树的森林)。然后,如果变量的值发生更改,或者引入新公式,则可以修改 dag 并重新评估更改的部分,将 dag 的更改传播到 dag 根。因此,您需要为表达式构建树,然后共享它们(通常通过对子树进行散列来查找潜在的等效候选者)。因此,需要进行大量结构操作来保留 dag(并且是根值)
但如果它只有 50 个你所显示的复杂性变量,它就会起作用,你可以简单地重新评估它们。如果将表达式存储为树(或者更好的是,反向抛光),您可以非常快速地评估每棵树,并且无需支付任何开销来使所有这些数据结构保持最新。
如果您有数百个方程,则 dag 方案可能要好得多。
如果您有约束方程(例如,您不受两边的限制),那么您就脱离了电子表格范例并进入了约束求解器,这是一项复杂得多的技术。
归档时间: |
|
查看次数: |
1339 次 |
最近记录: |