package p3;
public class pro {
int[] point=new int[100];
double[] p=new double[11];
double[] mu=new double[11];
double[] sig=new double[11];
double[][] q=new double[31][11];
public static void main(String[] args) {
pro r=new pro();
}
pro(){
int s,sx;
for(s=1;s<31;s++){
point[s]=(int)(100*Math.random());
}
for(sx=1;sx<11;sx++){
mu[sx]=3*sx;
sig[sx]=5;
p[sx]=0.1;
}
int tr;
for(tr=1;tr<11;tr++){
for(s=1;s<31;s++){
double p2=0;
for(sx=1;sx<11;sx++){
p2=p2+p[sx]*f(s,mu[sx],sig[sx]);
}
for(sx=1;sx<11;sx++){
q[s][sx]=p[sx]*f(s,mu[sx],sig[sx])/p2;
}
}
for(sx=1;sx<11;sx++){
double a1=0;
double a2=0;
for(s=1;s<31;s++){
a1=a1+q[s][sx]*point[s];
a2=a2+s*q[s][sx]*point[s];
}
mu[sx]=a2/a1;
a1=0;
a2=0;
for(s=1;s<31;s++){
a1=a1+q[s][sx]*point[s];
a2=a2+q[s][sx]*point[s]*(s-mu[sx])*(s-mu[sx]);
}
sig[sx]=Math.sqrt(a2/a1);
}
}
for(sx=1;sx<11;sx++){
System.out.println(mu[sx]+","+sig[sx]);
}
}
double f(double x,double mux,double sigx){
double pi,f1,f2;
pi=Math.PI;
f2=Math.sqrt(2*pi*sigx*sigx);
f1=-(x-mux)*(x-mux)/(2*sigx*sigx);
return Math.exp(f1)/f2;
}
}
最終更新:2017年01月01日 14:19