高斯分布函数对程序和数学的不同答案
Gaussian distribution function different answer for program and math
我写了一个实现高斯分布函数的代码。
代码块
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));
我写了一个实现高斯分布函数的代码。
代码块
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));