如何在R中使用Rcpp在c++中做数值积分
How to use Rcpp to do numerical integration in C++ within R
我想知道Rcpp
如何通过在r中调用c++来执行数值积分。我目前的设置需要很长时间,并且非常容易出错。
我想我需要比默认的R数值积分包更好的东西。在R中用c++做数值积分能解决这些问题吗?
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
会容易得多(是的,它会使它更快)。
该代码是NumericalIntegration的一个移植,它结合了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
的文档。
相关文章:
- 如何在 SCIP C++ 接口中获取 MILP 约束矩阵中的系数值
- 在C++中返回不正确的楼层函数值
- 如何从文本文件中读取数值,直到遇到字符类型?
- 基于字节数组生成静态范围整数值
- 如何在逗号后使用 cout 打印整数值,而无需在逗号后添加额外的零C++?
- 如何为静态常量模板化专用整数值分配存储
- 测试整数值以确定它是奇数还是偶数C++
- C++交换来自同一类成员的参数值,处理多个类
- 没有额外参数的函数的 GSL 数值积分
- 特征版本 3.2.0 和 3.3.4 之间的数值差异
- 传递通用函数,用于梯形规则的数值积分
- 用矩阵将函数中的整数值替换定义的常量
- gsl多变量数值积分
- 计算C 中的数值积分
- 数值积分:使模板函数只接受函数名或使用两个参数调用的函数
- lambda函数与gsl的数值积分
- 物理引擎的数值积分有哪些好算法
- 用c++在给定网格上进行数值积分,离散化为固定常数
- 梯形规则的数值积分c++
- 如何在R中使用Rcpp在c++中做数值积分