我想制作一个功能列表,然后创建一个新功能,这是这些功能的产物。例如,我想为(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}})
然后我列出了我想要的所有功能。我的问题是如何使产品成为一种功能?我尝试了很多方法,但它总是导致“无限递归”。有人可以帮助我吗?
答案 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
但请注意,如此大的数字可能存在准确性问题。