Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript后缀数学_Javascript_Evaluation_Postfix Notation - Fatal编程技术网

Javascript后缀数学

Javascript后缀数学,javascript,evaluation,postfix-notation,Javascript,Evaluation,Postfix Notation,我遇到了一个关于程序速度的小问题,我想知道如何解决它。我接受一个用户输入等式,形式如下: "y = 3*x^2 - 2*x" 为了简洁起见,我将使用这个示例。将其转换为后缀后,我得到: [ 3, x, 2, ^, *, 2, x, *, - ] 所以如果我想把它画出来,我只需要做一个x值的数组,然后找到相应的y值,让我的线通过。但是,如果我能够将此用户输入转化为以下功能,则该功能的评估速度会更快(这对于制作动画图形至关重要): function userExpression( x ){

我遇到了一个关于程序速度的小问题,我想知道如何解决它。我接受一个用户输入等式,形式如下:

"y = 3*x^2 - 2*x"
为了简洁起见,我将使用这个示例。将其转换为后缀后,我得到:

[ 3, x, 2, ^, *, 2, x, *, - ]
所以如果我想把它画出来,我只需要做一个x值的数组,然后找到相应的y值,让我的线通过。但是,如果我能够将此用户输入转化为以下功能,则该功能的评估速度会更快(这对于制作动画图形至关重要):

function userExpression( x ){
  return 3*Math.pow(x,2)-2*x
}
是否有任何方法将此字符串转换为函数,以便更快地进行计算。我很清楚,我可以解析我制作的后缀表达式,它会工作,但我相当确定这将成为一个非常糟糕的瓶颈,特别是如果我使用3D图形的话


我本来想在页面中插入带有
脚本
标记的html,但我想听听其他人在这种情况下会怎么做。另外,我很想知道你是如何用C++或C++、Python之类的其他语言来做的。

< p>如果你已经知道如何解析表达式并生成一个必需的JavaScript作为一个字符串,那么你可以通过使用<代码>函数< /COD>构造函数:< /P>创建编译函数来优化性能。
var expression=“return 3*Math.pow(x,2)-2*x;”;
var func=新函数(“x”,表达式);
log(func(-2));
log(func(-1));
log(func(0));
log(func(1));
log(func(2))


我不知道您要解决的实际问题是什么。这是一个关于性能的问题,还是一个关于如何解析文本等式并将其转换为函数的问题。“我相当确定这将成为一个非常糟糕的瓶颈”请先尝试一下,看看它是否会导致性能问题。避免过早优化。@phari我确实尝试过,而且确实有效!这不是过早的优化,这是一个重要的优化,以避免每帧调用数千次后缀分析器。@jfriend00我已经分析了字符串,我想知道如何将其作为函数进行计算,而不是使用post script计算器。@user2662833:您不应该运行数千次分析器,只有评估者。这应该很快。很好,这正是我所需要的。如果我已经将字符串解析为后缀,会有其他不可预见的问题吗?我从来没有使用过eval,因为它会引起很多仇恨:P@user2662833您只需要小心确保用户不能在公式中包含任何恶意代码。如果您的解析算法只允许数字、已知运算符和变量名,那么您可能状态良好。非常感谢:)我非常感谢您的帮助!