出于学术目的,我必须编写一个绘制用户输入表达式的应用程序,例如: f(x) = 1 - exp(3^(5*ln(cosx)) + x)
我选择编写解析器的方法是使用 Shunting-Yard 算法转换 RPN 中的表达式,将像“cos”这样的原始函数视为一元运算符。这意味着上面编写的函数将转换为一系列标记,例如:
1, x, cos, ln, 5, *,3, ^, exp, -
问题是要绘制函数,我必须多次评估它,因此对每个输入值应用堆栈评估算法效率非常低。我该如何解决这个问题?我必须忘记 RPN 的想法吗?