package gei;
public class pro {
int[][] point=new int[3][1001];
int s,number;
double[][] mu=new double[3][11];
double[][] sig=new double[3][11];
double[][][] rate=new double[3][1001][21];
double[] rate_topic=new double[101];
public static void main(String[] args) {
pro test=new pro();
}
pro(){
number=100;
for(s=1;s<number+1;s++){
point[1][s]=s;
point[2][s]=s;
}
for(s=1;s<11;s++){
mu[1][s]=25+5*s;
sig[1][s]=10;
mu[2][s]=25+5*s;
sig[2][s]=10;
}
for(s=1;s<11;s++){
rate_topic[s]=0.1;
}
int tr;
for(tr=1;tr<11;tr++){
int de;
for(de=1;de<3;de++){
int sx;
for(s=1;s<number+1;s++){
double p1=0;
for(sx=1;sx<11;sx++){
p1=p1+f(point[de][s],mu[de][sx],sig[de][sx])*rate_topic[sx];
}
for(sx=1;sx<11;sx++){
rate[de][s][sx]=f(point[de][s],mu[de][sx],sig[de][sx])*rate_topic[sx]/p1;
}
}
for(sx=1;sx<11;sx++){
mu[de][sx]=seek_mu(de,sx);
sig[de][sx]=seek_sig(de,sx);
}
}
System.out.println(tr+","+mu[1][5]+","+mu[2][5]);
}
}
double seek_mu(int k,int sx){
double m1,m2;
m1=0;
int s;
for(s=1;s<number+1;s++){
m1=m1+point[k][s]*rate[k][s][sx];
}
m2=0;
for(s=1;s<number+1;s++){
m2=m2+rate[k][s][sx];
}
return m1/m2;
}
double seek_sig(int k,int sx){
double m1,m2;
m1=0;
int s;
for(s=1;s<number+1;s++){
m1=m1+(point[k][s]-mu[k][sx])*(point[k][s]-mu[k][sx])*rate[k][s][sx];
}
m2=0;
for(s=1;s<number+1;s++){
m2=m2+rate[k][s][sx];
}
double m3=m1/m2;
m3=Math.sqrt(m3);
return m3;
}
double f(double x1,double mux,double sigx){
double pi,f1,f2;
pi=Math.PI;
f2=Math.sqrt(2*pi*sigx*sigx);
f1=-(x1-mux)*(x1-mux)/(2*sigx*sigx);
return Math.exp(f1)/f2;
}
}
最終更新:2016年06月18日 02:03