我正在尝试编写一个JavaScript函数,它将使用Simpson规则集成函数。我完全理解Simpson规则背后的数学,但我不确定如何编写一个能够集成另一个函数的函数。这是我想要实现的代码:
integrate = function(leftBound, rightBound, numSubIntervals, expression) {
var a = leftBound,
b = rightBound,
n = numSubIntervals,
myFunc = expression;
/*implementation of simpson's rule..*/
return result;
}
我的问题是我不知道如何将数学表达式(要集成的函数)作为参数传递而不做像将其作为字符串传递并使用eval()这样的东西,这不是我想要的东西做。我也不想使用任何第三方库。我想只使用vanilla JavaScript编写函数。我在这里缺少什么 - 有一个明显的解决方案吗?
答案 0 :(得分:2)
函数本身可以是其他函数的参数。例如:
integrate
此示例采用一个给定X并将其平方的函数。在integrate
内,您可以在x的给定间隔内调用此函数,以使用Simpson规则集成此函数。
在var point = expression(x);
内,调用传递给它的函数的语法是:
x
其中expression
是传递给名为point
的函数的值,expression
是{{1}}的返回值。
答案 1 :(得分:2)
这是我的答案 - 我的评论版本。您可以将该函数作为参数传递,然后从内部调用它。
integrate = function(leftBound, rightBound, numSubIntervals, expression) {
var a = leftBound,
b = rightBound,
n = numSubIntervals,
myFunc = expression;
/*implementation of simpson's rule..*/
result = (b-a)/6 * (expression(a) + 4*f* ... );
return result;
}
var toIntegrate = function(x){
return 2*x*x*x - 3*x*x + 2*x - 1;
}
integrate(0, 10, 10, toIntegrate);