功能列表中的功能

时间:2013-05-23 12:26:33

标签: r

我想制作一个功能列表,然后创建一个新功能,这是这些功能的产物。例如,我想为(x-4i)^2创建函数i=1:50,然后生成产品g=prod_i=1^50 (x-4i)^2。在这之后我想采取产品功能的积分。

要制作功能列表,我这样做:

f <- lapply(1:50, function(i){ force(i); function(x) {(x-4i)^2}})

然后我列出了我想要的所有功能。我的问题是如何使产品成为一种功能?我尝试了很多方法,但它总是导致“无限递归”。有人可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

首先x-4i具有特殊含义:它变成了一个复数。我怀疑你想使用x-4*i。所以,

f <- lapply(1:50, function(i){ force(i); function(x) {(x-4*i)^2}})

要获得这些功能的产品功能,您需要在乘法之前评估它们:

fprod <- function(x) prod(sapply(f,function(y) y(x)))
fprod(0)
[1] 1.486445e+189
fprod(1)
[1] 1.394667e+188

要进行整合,您需要使用Vectorize d函数:

integrate(Vectorize(fprod),0,10)
6.328303e+188 with absolute error < 2.1e+181

但请注意,如此大的数字可能存在准确性问题。