package sigma;
public class pro {
int[] y_max=new int[50];
int[] y_min=new int[50];
double[][] mat_p=new double[12][23];
double[] mu=new double[12];
double[] sig=new double[12];
double[] p=new double[12];
double[] mu_rev=new double[12];
double[] sig_rev=new double[12];
double[][] ps=new double[24][12];
double[] mu_rank=new double[24];
double[] sig_rank=new double[24];
public static void main(String[] args) {
pro t=new pro();
}
pro(){
int s;
for(s=1;s<22;s++){
y_min[s]=50*s-50;
y_max[s]=50*s;
}
y_max[21]=2000;
for(s=1;s<11;s++){
mu[s]=100*s-50;
sig[s]=50;
p[s]=0.1;
mu_rev[s]=100*s-50;
sig_rev[s]=50;
}
int k;
for(k=1;k<11;k++){
double p1=0;
for(s=0;s<2000;s++){
p1=p1+f(s,mu[k],sig[k]);
}
int tr=6;
for(tr=1;tr<22;tr++){
int tr1=y_min[tr];
int tr2=y_max[tr];
double p2=0;
for(s=tr1;s<tr2;s++){
p2=p2+f(s,mu[k],sig[k]);
}
mat_p[k][tr]=p2/p1;
}
}
int sx;
for(s=1;s<22;s++){
for(sx=1;sx<11;sx++){
ps[s][sx]=0;
}
}
for(s=1;s<22;s++){
for(sx=1;sx<11;sx++){
ps[s][sx]=ps[s][sx]+p[sx]*mat_p[sx][s];
}
}
for(s=1;s<22;s++){
double m1=0;
double m2=0;
for(sx=1;sx<11;sx++){
m1=m1+ps[s][sx];
m2=m2+ps[s][sx]*mu_rev[sx];
}
mu_rank[s]=m2/m1;
System.out.println(y_min[s]+","+m2/m1);
}
for(s=1;s<22;s++){
double m1=0;
double m2=0;
for(sx=1;sx<11;sx++){
m1=m1+ps[s][sx];
m2=m2+ps[s][sx]*sig_rev[sx];
}
sig_rank[s]=m2/m1;
}
}
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;
}
}
}
最終更新:2016年12月21日 14:24