アットウィキロゴ

gaku

package p6;
import tool.*;
 
public class pro {
 
 
int number;
  double[] mu=new double[11];
  double[] sig=new double[11];
 double[] mux=new double[11];
  double[] sigx=new double[11];
  double[] p=new double[11];
  int datanumber;
 
    double[] avg_mu=new double[30];
   double[] avg_sig=new double[30];
   double[] y_max=new double[30];
   double[] y_min=new double[30];
    double[] avg=new double[31];
    int[] point=new int[31];
   int s;
 
   double[] delta=new double[50001];
   String[] data=new String[600];
 
    public static void main(String[] args) {
        pro t=new pro();
    }
 
    pro(){
 
         readfile sub2=new readfile();
        sub2.makedata("data.csv","UTF-8");
        data=sub2.data;
        datanumber=sub2.datanumber;     
 
        for(s=2;s<datanumber+1;s++){
        data[s]=rev_csv(data[s]);
        String[] x=data[s].split(",");
        point[s-1]=num_int(x[1]);
        avg[s-1]=num_double(x[2]);
        }
 
 
        datanumber=datanumber-1;
 
 
 
 
        for(s=1;s<datanumber+1;s++){
        y_min[s]=50*s-50;
        y_max[s]=50*s;
        }
 
        y_max[datanumber]=2000;
 
 
 
        number=10;
 
 
 
        for(s=1;s<number+1;s++){
        mu[s]=100*s;
        sig[s]=100;
        mux[s]=100*s;
        sigx[s]=100;
        p[s]=0.1;
        }
 
        nike sub=new nike();
        sub.mu=mu;
        sub.sig=sig;
        sub.mux=mux;
        sub.sigx=sigx;
        sub.p=p;
        sub.point=point;
        sub.number=number;
        sub.datanumber=datanumber;
        sub.y_max=y_max;
        sub.y_min=y_min;
        sub.makedata();
        avg_mu=sub.avg_mu;
        avg_sig=sub.avg_sig;
 
    for(s=1;s<datanumber+1;s++){
    System.out.println(avg_mu[s]+","+avg_sig[s]);  
    }
 
 
        ex sub3=new ex();
        sub3.point=point;
       sub3.datanumber=datanumber;
        sub3.avg_mu=avg_mu;
        sub3.avg_sig=avg_sig;
        sub3.avg=avg;
        double u1=sub3.makedata();
 
        System.out.println(u1);
 
 
 
 
 
 
 
 
 
 
 
    }
 
 
       int num_int(String str){
 
    int nx;
 
    nx=0;
 
 try{
 
    nx=Integer.parseInt(str);
 
 }catch (Exception e) {}
 
 return nx;
 
 
 
}    
   double num_double(String str){
 
    double nx;
 
    nx=0;
 
 try{
 
    nx=Double.parseDouble(str);
 
 }catch (Exception e) {}
 
 return nx;
 
 
 
}    
    String rev_csv(String str){
 
        String str5=str;
        int px=str5.indexOf("\"");
 
 
 
        while(px>-1){
       str5=rev(str5);
       px=str5.indexOf("\"");   
        }
        return str5;
    }
 
    String rev(String str){
 
        int p1=str.indexOf("\"");
        int p2=str.indexOf("\"",p1+1);
 
     String str1=str.substring(0,p1);   
        String str2=str.substring(p1+1,p2);  
        String str3=str.substring(p2+1,str.length());
        str2=str2.replace(",","");
 
        return str1+str2+str3;
 
    }
 
 
 
    int randx(){
 
 
    int s;
    double[] px=new double[100];
    px[1]=p[1];
    for(s=2;s<number+1;s++){
    px[s]=px[s-1]+p[s];
    }
 
    double m1=Math.random();
    int nn=1;
    for(s=1;s<number;s++){
    if(m1>px[s])nn=s;
    }
 
 
 
    return nn;
}  
 
 
 
 
 
 
       double f(double x,double mu,double sig){
double pi,f1,f2;
 
        pi=Math.PI;
 
        f2=Math.sqrt(2*pi*sig*sig);
        f1=-(x-mu)*(x-mu)/(2*sig*sig);
 
        return Math.exp(f1)/f2;
}
 
}
 
 
package p6;
 
public class nike{
 
int number;
  double[] mu=new double[11];
  double[] sig=new double[11];
 double[] mux=new double[11];
  double[] sigx=new double[11];
  double[] p=new double[11];
 
   double[] y1=new double[10001];
   double[] y2=new double[10001];
   double[] y3=new double[10001];
   double[] y4=new double[10001];
 
   double[] avg_mu=new double[30];
   double[] avg_sig=new double[30];
 
    double[] y_max=new double[30];
   double[] y_min=new double[30];
 
   int[] point=new int[100];
   int datanumber;
 
    void makedata(){
 
 
        int s;
 
 
     for(s=1;s<10001;s++){
     int sx=randx();    
     y1[s]=sample(mu[sx],sig[sx]);
     y2[s]=sample(mux[sx],sigx[sx]);
      }  
 
 
      for(s=1;s<datanumber+1;s++){    
 
      mini sub=new mini();
      sub.y1=y1;
      sub.y2=y2;
      sub.makedata(point[s],y_min[s],y_max[s]);
      avg_sig[s]=sub.sigp;
      avg_mu[s]=sub.mup;
      }
 
 
 
    }
 
    double sample(double mumu,double sigsig) {
 
 
 
 
  double pi = Math.PI;
 
  double p1 = 0;
  double p2 = 0;
 
 
  double x1=Math.random();
  double x2=Math.random();
 
  double f1=Math.log(x1);
  double r=Math.sqrt(-2*f1)*Math.cos(2 * pi * x2);
 
  double z=mumu+sigsig*r;
 
 
 return z;
 
}
 
 
 
    int randx(){
 
 
    int s;
    double[] px=new double[100];
    px[1]=p[1];
    for(s=2;s<number+1;s++){
    px[s]=px[s-1]+p[s];
    }
 
    double m1=Math.random();
    int nn=1;
    for(s=1;s<number;s++){
    if(m1>px[s])nn=s;
    }
 
 
 
    return nn;
}  
 
 
 
 
}
 
 
package p6;
 
 
public class mini{
 
int number;
  double[] mu=new double[11];
  double[] sig=new double[11];
 double[] mux=new double[11];
  double[] sigx=new double[11];
  double[] p=new double[11];
 
   double[] y1=new double[10001];
   double[] y2=new double[10001];
   double[] y3=new double[10001];
   double[] y4=new double[10001];
 
   double sigp,mup;
 
 
    void makedata(int number_tr,double tr1,double tr2){
 
 
        int s;
 
 
 
      int sx=0;
       for(s=1;s<10001;s++){
       int h=0;
       if(y1[s]>tr1)h=h+1;
       if(y1[s]<tr2)h=h+1;
       if(h==2)sx=sx+1;
       if(h==2)y3[sx]=y2[s];
       }  
 
 
       int de=sx;
       double a1=0;
       for(s=1;s<de+1;s++){
       a1=a1+y3[s];    
       }
       a1=a1/de;
 
 
       double s1=0;
       for(s=1;s<de+1;s++){
       s1=s1+(y3[s]-a1)*(y3[s]-a1);    
       }
       s1=Math.sqrt(s1/de);
 
 
 
      for(s=1;s<10001;s++){
      double pc=0;
      for(sx=1;sx<number_tr+1;sx++){   
      pc=pc+sample(a1,s1);
      }  
    y4[s]=pc/number_tr;
      }
 
     double a2=0;
       for(s=1;s<10001;s++){
       a2=a2+y4[s];    
       }
       a2=a2/10000;
 
 
       double s2=0;
       for(s=1;s<10001;s++){
       s2=s2+(y4[s]-a2)*(y4[s]-a2);    
       }
       s2=Math.sqrt(s2/10000);
 
 
       sigp=s2;
       mup=a2;
 
 
 
 
    }
 
    double sample(double mumu,double sigsig) {
 
 
 
 
  double pi = Math.PI;
 
  double p1 = 0;
  double p2 = 0;
 
 
  double x1=Math.random();
  double x2=Math.random();
 
  double f1=Math.log(x1);
  double r=Math.sqrt(-2*f1)*Math.cos(2 * pi * x2);
 
  double z=mumu+sigsig*r;
 
 
 return z;
 
}
 
 
 
    int randx(){
 
 
    int s;
    double[] px=new double[100];
    px[1]=p[1];
    for(s=2;s<number+1;s++){
    px[s]=px[s-1]+p[s];
    }
 
    double m1=Math.random();
    int nn=1;
    for(s=1;s<number;s++){
    if(m1>px[s])nn=s;
    }
 
 
 
    return nn;
}  
 
 
 
 
}
 
 
 
package p6;
 
public class ex {
 
    int s,datanumber;
 
    int[] point=new int[30];
     double[] avg_mu=new double[30];
   double[] avg_sig=new double[30];
  double[] avg=new double[30];
 
double  makedata(){
 
    double z=0;
    for(s=1;s<datanumber+1;s++){
    z=z+point[s]*f(avg[s],avg_mu[s],avg_sig[s]);    
    }
 
   return z; 
}
 
 
        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月20日 15:37