Распараллелить интегрировать в R - PullRequest
0 голосов
/ 30 апреля 2018

Мне было интересно, возможно ли это и как распараллелить функцию интегрирования в R для ускорения численного интегрирования.

Я напишу здесь небольшой пример на случай, если кто-то может мне помочь.

b0=function(time){0.05*sin(0.1*time)+0.1}  
d0=0.14  
#Function to integrate
f0<-Vectorize(function(t,d0){b0(t)-d0},"t")

integrate(f0,lower=0,upper=1000,d0=d0)$value

Этот небольшой пример очень быстрый, но у меня есть более сложные примеры, которые медленнее, и я хотел бы сделать их быстрее.

1 Ответ

0 голосов
/ 30 апреля 2018

Комментарий @Roland выше. Но ответ на ваш вопрос напрямую:

library(parallel)
options(mc.cores = 2)
b0=function(time){0.05*sin(0.1*time)+0.1}  
d0=0.14  
#Function to integrate
f0<-Vectorize(function(t,d0){b0(t)-d0},"t")

ans <- mclapply(
  list(c(0, 500), c(500, 1000)),
  function(i){
    integrate(f0,lower=i[1],upper=i[2],d0=d0)$value
  }
)

Reduce("+", ans)
...