【发布时间】:2015-07-18 17:40:16
【问题描述】:
我正在创建一个图形计算器,我需要一个算法来解释用户输入的方程。例如,如果用户键入“x^3+5x^2-4x-9”,则算法应该接受字符串输入并返回 (0, -9)、(1, -7) 等。我该怎么做呢?我可以使用任何开源库吗?提前致谢。
【问题讨论】:
标签: java android function equation graphing
我正在创建一个图形计算器,我需要一个算法来解释用户输入的方程。例如,如果用户键入“x^3+5x^2-4x-9”,则算法应该接受字符串输入并返回 (0, -9)、(1, -7) 等。我该怎么做呢?我可以使用任何开源库吗?提前致谢。
【问题讨论】:
标签: java android function equation graphing
您可以实现Shunting-Yard Algorithm,但已经有很多mathematical parsers。软件开发中有句名言:
“不要重新发明轮子。”
我在开发自己的应用程序时遇到了这个问题。如果那里已经有开源库,那么您绝对应该利用它们来发挥自己的优势。话虽如此,如果您想要双精度,我会推荐MathEval 库。就precision 而言,Double 通常就足够了,因为precision 在double 之后,例如BigDecimal,这是一种精确的数字表示方式,就@987654330 而言非常昂贵 @ 和 memory,你想在计算中减少两件事。
生成解决方案的最简单的O(n) 方法是在 for 循环中设置范围,然后根据循环中的迭代对x 使用MathEval's setVariable 方法和通过MathEval's evaluate 方法检索结果。等式中可能存在一些边界,因此请确保计算必要的限制并在循环中调节它们。
查看此链接 Terrance,其中提到了 MathEval 库:
Built-in method for evaluating math expressions in Java
如果您需要任何帮助,请告诉我,因为我已经从头开始和通过 external library 实现了 algorithm。
【讨论】: