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。它不需要自己的名称,因为参数已经有了名称。
谁知道如何用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。它不需要自己的名称,因为参数已经有了名称。