gpt4 book ai didi

c++ - 如何使用 Rcpp 在 R 中的 C++ 中进行数值积分

转载 作者:搜寻专家 更新时间:2023-10-31 00:56:30 25 4
gpt4 key购买 nike

我想知道如何通过在 R 中调用 C++ 来使用 Rcpp 执行数值积分。我当前的设置需要很长时间,而且很容易出错。

我想我需要比默认 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)

在此先感谢您的帮助!

最佳答案

RcppNumericalRcpp 结合使用会轻松很多(是的,它会更快)。

代码是NumericalIntegration的一个端口,它结合了 Quantlib 的相关部分和一些其他 C++ 库,如 LibLBFGS .

这是 a nice tutorial让你开始。

要计算函数的积分,首先定义一个继承自的函数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 的文档。

关于c++ - 如何使用 Rcpp 在 R 中的 C++ 中进行数值积分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39449080/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com