Как использовать Rcpp для численной интеграции в C ++ в R

Мне было интересно, как Rcpp можно использовать для выполнения численного интегрирования, вызывая C ++ в R. Моя текущая настройка занимает очень много времени и подвержена ошибкам.

Я думаю, что мне нужно что-то лучше, чем стандартный пакет числовой интеграции R. Решит ли эти проблемы численное интегрирование в C ++ в R?

funk <- function(x,b) { 10^b * exp(-x/10) }

lambda <- function(y,k) { exp(-k*y) }

funk1 <- function(y,x,xb,b,k) {
funk(x-xb-y,b) *exp(- integrate(lambda, lower=0, upper = y, k=k)$value) }

funk2 <-function(x,xb,b,k) {
integrate(funk1, lower= 0, upper=x-xb, x=x,xb=xb, b=b,k=k)$value }

funk2_vc <- Vectorize(funk2)

Заранее спасибо за помощь!

2

Решение

Вам было бы намного легче использовать RcppNumerical с Rcpp (и да, это сделало бы это быстрее).

Код является портом численное интегрирование, которая объединяет соответствующие части Quantlib и несколько других библиотек C ++, таких как LibLBFGS.

Вот хороший учебник чтобы вы начали.

Чтобы вычислить интеграцию функции, сначала определите функцию, унаследованную от
Func учебный класс:

class Func
{
public:
virtual double operator()(const double& x) const = 0;
virtual void   operator()(double* x, const int n) const
{
for(int i = 0; i < n; i++)
x[i] = this->operator()(x[i]);
}
};

Учебник и пакетная документация должны быть достаточными для ваших нужд, но если вам нужна дополнительная помощь, ознакомьтесь с документацией для библиотеки C ++. NumericalIntegration,

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]