数学函数基本积分的解决方案

时间:2014-02-12 10:47:55

标签: c++ class math integration

我想在给定的大小范围内整合数学函数(numberdensity-function)。我想要整合的功能通常包括分数,指数,euler数和根。我可以使用哪些代码?

例如我找到了类“math”,但是在这个类中找不到任何集成函数。此外,我不知道上面提到的元素的语法(euler number ...)

问候直播

2 个答案:

答案 0 :(得分:2)

您可能正在寻找numerical integration
这是一种与积分的数值“足够接近”的方法,通常足以满足大多数应用。

维基百科页面链接到AlgLib作为具有C ++实现的实现库。

答案 1 :(得分:1)

这是我刚才开发的代码。它使用Simpson方法。

#include <iostream>
#include <math.h>

using namespace std;

double NormSDist(double x);
template <typename T> T SimpsonMethod(T (*pfunc)(T), float a, float b,int n=100);

int main()
{
    double area=SimpsonMethod<double>(&NormSDist,-5,1.2);
    cout << area << endl;
    return 0;
}

template <typename T> T SimpsonMethod(T (*pfunc)(T), float a, float b,int n)
{
    T h,x,y,retVal;
    h=(b-a)/n;

    x=a;
    y=(*pfunc)(x);retVal=y;
    for(int i=1;i<n;i++)
    {
        x=a+i*h;
        if(i%2==0) y=2*(*pfunc)(x);
        if(i%2==1) y=4*(*pfunc)(x);
        retVal=retVal+y;
    }
    x=b;y=(*pfunc)(x);retVal=retVal+y;

    return retVal*h/3;
}

double NormSDist(double x)
{
    return 1/sqrt(2*3.1415926536)*exp(-0.5*x*x);
}

希望它有所帮助。