Мне было интересно, как 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)
Заранее спасибо за помощь!
Вам было бы намного легче использовать 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
,
Других решений пока нет …