我正在创建一个图形计算器,我需要一种算法来解释用户输入的方程式。例如,如果用户键入“x ^ 3 + 5x ^ 2-4x-9”,则算法应采用字符串输入并返回(0,-9),(1,-7)等。我该怎么做呢?我可以使用任何开源库吗?提前谢谢。
答案 0 :(得分:1)
您可以实施Shunting-Yard Algorithm
,但已经有很多mathematical parsers
。在软件开发中有一句非常着名的说法:
"不要重新发明轮子。"
我在开发自己的应用时遇到了这个问题。如果那里已经有开源库,你肯定应该利用它们。话虽这么说,如果你想要双精度,我会推荐MathEval
库。在Double
方面,precision
通常就足够了,因为precision
之后的double
,例如BigDecimal
,这是表示数字的确切方式非常昂贵的就speed
和memory
而言,您希望在计算中减少两件事。
生成解决方案的最简单的O(n)
方法是在for循环中设置范围,并使用MathEval's setVariable
方法基于x
循环中的迭代并通过MathEval's evaluate
方法检索结果。等式中可能存在一些边界,因此请确保计算必要的限制并将其置于循环内。
查看此链接Terrance,提及MathEval
库:
Built-in method for evaluating math expressions in Java
如果您需要任何帮助,请告诉我,因为我已从头开始实施algorithm
和external library
。