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