アットウィキロゴ

ねこx

package neko;
 
import tool.*;
 
 
public class pro {
 
    int s,datanumber;
    String[] data=new String[600];
    int[] pp=new int[500];
int[] px=new int[60000];
int number;    
 
  double[] mu=new double[11];
   double[] sig=new double[11]; 
    double[][] q=new double[10001][11]; 
 double[] p=new double[11];
  double[] x=new double[10001]; 
     double[] mus=new double[11];
   double[] sigs=new double[11];
     double[] ps=new double[11];
 
    public static void main(String[] args) {
       pro re=new pro();
    }
    pro(){
 
 
     readfile sub2=new readfile();
        sub2.makedata("datax.csv","UTF-8");
        data=sub2.data;
        datanumber=sub2.datanumber;     
 
        for(s=2;s<datanumber+1;s++){
        String[] x=data[s].split(",");
        pp[s-1]=numx(x[2]);    
 
        }
 
        datanumber=datanumber-1;
        int sx,tx;
        tx=0;
        for(s=1;s<datanumber+1;s++){
        for(sx=1;sx<pp[s]+1;sx++){
        tx=tx+1;
        x[tx]=50*s-25;
        }   
        }
 
        number=tx;
 
        System.out.println(number);
 
         for(s=1;s<11;s++){
        mu[s]=100*s;    
        sig[s]=10;
        p[s]=0.1;
        }
 
 
         int tr;
         for(tr=1;tr<11;tr++){
 
        int t;
         for(t=1;t<number+1;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<number+1;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);   
     }
 
 
 
         }
 
     for(s=1;s<11;s++){   
    System.out.println(p[s]+","+mu[s]+","+sig[s]);
    }
 
    }
 
 
     double seekavg(int n){
        int s;
        double a1=0;
  double a2=0;
    for(s=1;s<number+1;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<number+1;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<number+1;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;
}
 
      int numx(String str){
 
    int nx;
 
    nx=0;
 
 try{
 
    nx=Integer.parseInt(str);
 
 }catch (Exception e) {}
 
 return nx;
 
 
 
}
double num(String str){
 
    double nx;
 
    nx=0;
 
 try{
 
    nx=Double.parseDouble(str);
 
 }catch (Exception e) {}
 
 return nx;
 
 
 
}
 
 
}
 
最終更新:2016年08月05日 02:36