2-кратный (повторный) интеграл в R

Я хочу вычислить двукратный повторяющийся интеграл (не двойной интеграл) в R, например,

куда

На практике и f(x), и g(x) довольно сложны, но для проведения эксперимента упростим g(x)=1 и f(x)=cos(x), в R я использую integrate для вычисления:

> phi = function(x){integrate(function(x){cos(x)},lower=x,upper=3)[["value"]]^2}

> foldintegral = integrate(phi,lower=0,upper=3)

И я получил это сообщение об ошибке:

Error in integrate(phi, lower = 0, upper = 3) : 
  evaluation of function gave a result of wrong length

Любая идея, как это сделать?


person skyindeer    schedule 31.10.2016    source источник


Ответы (1)


Все, что нужно, это

integrate(Vectorize(phi), lower=0, upper=3)
# 1.067943 with absolute error < 1.2e-14

Сравнивать

phi(1)
#[1] 0.4904915

phi(1:3)
# [1] 0.4904915

Vectorize(phi)(1:3)
# [1] 0.4904915 0.5900965 0.0000000

integrate ожидает векторизованную функцию.

person Zheyuan Li    schedule 31.10.2016
comment
Понятно ! Большое спасибо !! - person skyindeer; 31.10.2016