RcppNumerical给出的积分结果与R完全不同

时间:2018-12-14 12:28:27

标签: c++ r rcpp numerical-integration

我有一个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”。为什么会这样?

0 个答案:

没有答案