package pin;
public class pro {
double[] x=new double[101];
double[] mu=new double[11];
double[] sig=new double[11];
double[] p=new double[11];
double[][] q=new double[101][11];
double[] mus=new double[11];
double[] sigs=new double[11];
double[] ps=new double[11];
public static void main(String[] args) {
pro te=new pro();
}
pro(){
int s;
for(s=1;s<101;s++){
x[s]=s;
}
for(s=1;s<11;s++){
mu[s]=10*s;
sig[s]=10;
p[s]=0.1;
}
int t,delta;
for(delta=1;delta<11;delta++){
for(t=1;t<101;t++){
for(s=1;s<11;s++){
double ff=f(x[t],mu[s],sig[s]);
q[t][s]=p[s]*ff;
}
}
for(t=1;t<101;t++){
double q1=0;
for(s=1;s<11;s++){
q1=q1+q[t][s];
}
for(s=1;s<11;s++){
if(q1>0)q[t][s]=q[t][s]/q1;
}
}
int n;
for(n=1;n<11;n++){
ps[n]=psx(n);
}
double p1=0;
for(n=1;n<11;n++){
p1=p1+ps[n];
}
for(n=1;n<11;n++){
p[n]=ps[n]/p1;
}
for(n=1;n<11;n++){
mu[n]=seekavg(n);
sig[n]=seeksig(n);
}
System.out.println(p[5]+","+mu[5]+","+sig[5]);
}
}
double seekavg(int n){
int s;
double a1=0;
double a2=0;
for(s=1;s<101;s++){
a1=a1+x[s]*q[s][n];
a2=a2+q[s][n];
}
double z=0;
if(a2>0)z=a1/a2;
return z;
}
double seeksig(int n){
int s;
double a1=0;
double a2=0;
for(s=1;s<101;s++){
a1=a1+(x[s]-mu[n])*(x[s]-mu[n])*q[s][n];
a2=a2+q[s][n];
}
double z=0;
if(a2>0)z=a1/a2;
return Math.sqrt(z);
}
double psx(int n){
int s;
double a1=0;
double a2=0;
for(s=1;s<101;s++){
a2=a2+q[s][n];
}
return a2;
}
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年08月04日 06:23