我想在给定的大小范围内积分数学函数(数字密度函数)。我想要积分的函数通常由分数、指数、欧拉数和根组成。我可以使用什么代码来实现此目的?
例如我找到了“math”类,但在该类中找不到任何积分函数。此外,我不知道上述元素的语法(欧拉数...)
直接问候
这是我不久前开发的代码。它使用辛普森方法。
#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);
}
希望有帮助。