C++:使用boost计算简单的定积分

C++: Using boost to calculate simple definite integrals

谁知道如何用Boost求解简单的定积分?

例如-x^2 + 1 从 -1 到 1?

我已经尝试阅读 boost documentation,但我似乎无法弄清楚如何正确传递函数。

谢谢

编辑:到目前为止我的尝试

using namespace boost::math;

typename function_type; // this is probably wrong

function_type f     // and this
{
    return -x*x+1;
};

int main(int, char**)
{
    const double val  =
    integral(0.0,
    1,  
    0.001,
    f);        // my question is, what do I put in here? How do I format f.
}

首先要观察的是,您展示的 Boost 库实际上没有计算积分的函数。那可能让你误入歧途了。

该库用于多精度浮点运算,根据 Riemann,其中一个示例恰好是积分的简单近似。这个例子的重点是黎曼积分非常简单,你可以用它们来演示一个奇特的库。

在您的情况下,您甚至不需要费心传递函数。直接把-x^2 + 1代入

就可以写出黎曼方法了

也就是说,将其作为参数传递的典型 C++ 方法是 [](double x) { return -x*x+1.0;}。那是一个 unnamed 函数或 lambda。它不需要自己的名称,因为参数已经有了名称。