erf函数表达式是:erf(α)=(2/根号下派)*(exp(-z方)对z积分,积分下限是0,上限是α)。
误差函数从形式上很像正态分布的分布函数Φ(x),是对一个形如正态分布的概率密度函数做变上限积分的结果。误差函数是一个非基本函数,其在概率论、统计学以及偏微分方程和半导体物理中都有广泛的应用。
应用1、在统计学与机率论中,高斯函数是常态分布的密度函数,根据中心极限定理它是复杂总和的有限机率分布。
2、计算化学中所用的分子轨道是名为高斯轨道的高斯函数的线性组合(参见量子化学中的基组)。
3、在数学领域,高斯函数在厄尔米特多项式的定义中起著重要作用。
4、高斯函数与量子场论中的真空态相关。
#include <math.h>#define ERF_PI 3.141592653589793
#define ERF_N 100
double erf(double x)////erf(x) = the cumulation of { 2/sqrt(pi)*exp(-z*z) } from 0 to x//error function
{ // 2/sqrt(pi) * { ∑[(-1)^n / n! * x^(2n+1)/(2n+1)] + x }
double res = x
double factorial = 1 //n!
double x_pow = x
int one = 1, n
for( n=1n<100n++ ){
factorial *= n
one *= -1
x_pow *= x*x
res += one / factorial * x_pow / ( 2*n+1 )
}
res *= 2 / sqrt(ERF_PI)
return res
}
double norm_cdf(double x)//cumulation distribution function of standard normal distribution
{
return ( 1 + erf( x / sqrt(2) ) ) / 2
}
由于erf误差函数要求输入值为实数,所以在代码运行中应保证x变量为实数。因此,在自定义函数中,书写x变量时,应这样来处理。即x(1)改为real(x(1))
x(2)改为real(x(2))
。。。。。。
x(9)改为real(x(9))
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)