我想在給定的大小範圍內集成數學函數(數字密度函數)。我想要整合的函數通常由分數,指數,歐拉數和根組成。我可以使用哪些代碼?用於數學函數基本集成的解決方案
例如我找到了類「數學」,但我無法在此類中找到任何集成函數。此外,我不知道上述元素的語法(歐拉數...)
問候streight
我想在給定的大小範圍內集成數學函數(數字密度函數)。我想要整合的函數通常由分數,指數,歐拉數和根組成。我可以使用哪些代碼?用於數學函數基本集成的解決方案
例如我找到了類「數學」,但我無法在此類中找到任何集成函數。此外,我不知道上述元素的語法(歐拉數...)
問候streight
你可能會尋找numerical integration。
這是一種獲得'足夠接近'的積分數值的方法,對大多數應用程序來說通常是足夠的。
維基百科頁面鏈接到AlgLib作爲具有C++約束的實現庫。
這是我剛纔開發的代碼。它使用辛普森方法。
#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);
}
希望它有幫助。
數理論工作經常需要使用大於2^32的整數。例如,第8個歐拉數字已經超過了這個限制。你是否需要無限制的精確數字,即2^32以上整數的精確表示? –
我不知道標準庫中的任何數學類,有一個'cmath'頭文件,但它不包含任何數字或符號集成的函數。您需要編寫一個數字集成例程或使用另一個庫中的一個。 – StoryTeller
問題要求我們推薦或找到工具,圖書館或最喜歡的非現場資源,因爲他們傾向於吸引自以爲是的答案和垃圾郵件,所以不適合Stack Overflow。相反,請描述問題以及到目前爲止解決問題所做的工作。 http://stackoverflow.com/help/on-topic –