2

関数のリストを作成し、それらの関数の結果である新しい関数を作成したいと考えています。たとえば、関数を作成してから、製品を作成したいと(x-4i)^2i=1:50ますg=prod_i=1^50 (x-4i)^2。これを行った後、製品関数の積分を取りたいです。

関数のリストを作成するには、次のようにします。

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

次に、必要なすべての関数のリストがあります。私の問題は、製品を機能としてどのように作成するかです。私は多くの方法を試しましたが、常に「無限再帰」につながります。誰か助けてくれませんか?

4

1 に答える 1

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

ただし、このような大きな数では精度の問題が生じる可能性があることに注意してください。

于 2013-05-23T13:02:10.870 に答える