数学函数基本积分的解决方案[关闭]

问题描述 投票:0回答:2

我想在给定的大小范围内积分数学函数(数字密度函数)。我想要积分的函数通常由分数、指数、欧拉数和根组成。我可以使用什么代码来实现此目的?

例如我找到了“math”类,但在该类中找不到任何积分函数。此外,我不知道上述元素的语法(欧拉数...)

直接问候

c++ class math numerical-integration
2个回答
2
投票

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

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


1
投票

这是我不久前开发的代码。它使用辛普森方法。

#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);
}

希望有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.