我计划构建一个表达式解析器,它将用于用JavaScript绘制代数函数(想想TI-83 )。
函数将采用f(x)=的形式
除了典型的操作符,比如:+ - * / ^
我还想添加对内联函数的支持,例如:sin()、cos()、log()和random()。
我已经研究过如何实现用于解析表达式的分流场算法,但它看起来并不像一种有效的方法来评估具有数百或数千个输入的函数。对于这个任务,还有哪些已知的算法?
发布于 2012-03-31 17:16:19
分流场是函数长度上的O(n)。没有比这更好的渐近复杂度了,所以剩下的是潜在的线性加速比。我唯一能想到的更快的方法是将函数转换为原生javascript并使用eval。不过,你肯定想以此为基准。另一件事是只生成一次RPN版本,然后对x的每个值执行该版本。
https://softwareengineering.stackexchange.com/questions/142382
复制相似问题