计算c ++中的数值积分

时间:2016-12-24 00:54:00

标签: c++

我想编写一个函数,可以在范围(a,b)上计算我的this.

ReactDOM.

这是我发现的,但我是c ++的新手,我无法使用指针 如果有其他方式,请帮助我。

2 个答案:

答案 0 :(得分:1)

您找到的那个功能允许您集成您想要的任何功能,并且该功能是积分方法的第一个参数。你可以删除第一个参数('double(* f)(double x)'),这是因为你想要整合的函数是已知的(e ^ cos(x)),所以你不需要给它作为一个论点。然后,在for循环中,您只需将de f函数替换为e ^ cos(x)。该方法如下所示:

'\n'

答案 1 :(得分:1)

#include <functional>

template<typename T>
T integral(const std::function<T(T)>& f, T a, T b, int n) {
    auto step = (b - a) / n;  // width of each small rectangle
    auto area = static_cast<T>(0);  // signed area
    for (auto i = 0; i < n; i++) 
    {
        // sum up each small rectangle
        area += f(a + (i + static_cast<T>( 0.5)) * step) * step; 
    }
    return area;
}

int main()
{
    std::function<float(float)> f_sine =  [](float in) { return sin(in); };
    auto two = integral(f_sine, 0.0f, 3.14f, 20);
    return 0;
}

这将是$ 3.50