直接利用泰勒公式,在正态分布公式在0处的展开。具体的推导以后补充。
#include<iostream>
using namespace std;
double normal_x(double x);/*正态函数*/
int main(){/*主函数----列出x=0.0到5.0步长0.1的正态函数值*/
double x=0.0;
int i=0;
for(i=0;i<50;i++){
cout<<normal_x(x)<<endl;
x+=0.1;
}
}
double normal_x(double x){ // 函数积分exp(-x^2/2)
const double con=0.398942; //1/根号下 2*pi
double z=x;
double x_2=x*x;
double n=0.0;
double sum=0.0;
int i=0;
while(1){
sum+=z;
n+=1.0;
z*=((1-2*n)/(2*n+4*n*n))*x_2;//递推公式
if(z<1e-20) {
if(z>-1e-20) break;
}
}
return 0.5+con*sum;
}