我编写了一段代码来实现高斯分布函数。
代码块
import java.lang.Math.*;public class gauss {public static void main(String args[]){ gauss c = new gauss(); c.gu1(5.0,3.0,2.0);}public static double gu1(double mu,double sigm2,double x){ double a; a=1/(Math.sqrt(2*Math.PI))*sigm2; double b; b= Math.exp(-0.5)*(Math.pow(((x-mu)/sigm2)),2); double z= a*b; System.out.println(z); return(z); }}
输入:x = 2, μ = 5 且 σ = 3输出:0.7259121735574301
然而,如果我用笔和纸进行数学计算,我得到的答案是0.0805。
我没有发现为什么编程答案和手动计算答案之间会有如此大的差异?
高斯分布公式
回答:
a
和 b
的表达式是错误的。应该是
a=1/(Math.sqrt(2*Math.PI))/sigm2;b= Math.exp(-0.5*Math.pow((x-mu)/sigm2,2));