アットウィキロゴ

ooo7

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