我有一个Rcpp文件,正在尝试集成功能-
f<- function(x){dexp(x-a,beta)}
。
其中a = 2和beta = 1.2该文件看起来像-
// [[Rcpp::depends(RcppEigen)]]
// [[Rcpp::depends(RcppNumerical)]]
#include <RcppNumerical.h>
#include <limits>
using namespace Numer;
class PDF: public Func
{
private:
double beta;
double M0;
public:
PDF( double beta_, double M0_): beta(beta_), M0(M0_) {};
double operator()(const double& x) const
{
return R::dexp(x-M0,beta,0);
}
};
// [[Rcpp::export]]
double integrate_test2( double beta, double M0, double upper, double lower)
{
PDF f( beta, M0);
double err_est;
int err_code;
double res = integrate ( f, lower,upper,err_est, err_code);
return(res);
}
现在,如果我想使用代码将功能从下限2集成到上限5:
> integrate_test2( beta=1.2, M0=2, upper=5, lower=2)
[1] 0.917915
它给我值“ 0.917915”。但是当我使用R代码使用code =
进行集成时> integrate(function(x){dexp(x-2,1.2,0)},2,5)
0.9726763 with absolute error < 1.1e-14
它给我结果“ 0.9726763”。为什么会这样?