アットウィキロゴ

ve

package ba;
 
public class pro {
 
     double[] y=new double[1000];
    double[][] x=new double[1000][10];
     double[] sol=new double[100];
  double[] e=new double[12];
 
  double[] point=new double[1001];
     double[] beta=new double[1001];
      double[] alpha=new double[1001];
              double[] sig=new double[1001];  
 
               double[] p=new double[1001];
 
 
               double sigs,alphas,betas;
 
               public static void main(String[] args) {
        pro t=new pro();
    }
 
    pro(){
 
        int s;
        for(s=1;s<11;s++){
        x[s][1]=1; 
        x[s][2]=s;
        y[s]=2*x[s][2]+5*x[s][1]+Math.random();
        }
 
 
 
        ols sub=new ols();
        sub.x=x;
        sub.y=y;
        sub.datanumber=10;
        sub.number=2;
        sub.makedata();
        sol=sub.sol;
 
        System.out.println(sol[1]+","+sol[2]);
 
        double e1=0;
        for(s=1;s<11;s++){
        double z=y[s]-sol[1]-sol[2]*x[s][2];
        e1=e1+z*z;    
        }
 
        e1=e1/9;
        double sigs=Math.sqrt(e1);
 
        alphas=sol[1];
        betas=sol[2];
 
        System.out.println(alphas+","+betas+","+sigs);
 
 
        int tr=0;
        int s1,s2,s3;
        for(s1=1;s1<11;s1++){
        for(s2=1;s2<11;s2++){
        for(s3=1;s3<11;s3++){
        tr=tr+1;
        beta[tr]=(0.95+0.01*s1)*betas;
        alpha[tr]=(0.95+0.01*s2)*alphas;
        sig[tr]=(0.95+0.01*s3)*sigs;
        p[tr]=0.001;
        }}}
 
 
          int de;
        for(de=1;de<51;de++){
 
 
        for(tr=1;tr<1001;tr++){
        double p1=p[tr];
        for(s=1;s<11;s++){
        double e2=y[s]-beta[tr]*x[s][2]-alpha[tr];    
        p1=p1*f(e2,0,sig[tr]);
        }
        point[tr]=p1;
       }
 
 
        double p1=0;
        for(s=1;s<1001;s++){
        p1=p1+point[s];    
        }
 
        for(s=1;s<1001;s++){
        p[s]=point[s]/p1;    
        }
 
        }
 
 
 
        for(s=1;s<1001;s++){
        if(p[s]>0.01)System.out.println(s+","+alpha[s]+","+beta[s]+","+sig[s]+","+p[s]);
          }
 
 
    }
 
 
    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 ba;
 
 
public class ols {
 
    int s,s1,s2;
    int datanumber,number;
    double x1;
    double[][] a=new double[100][100];
     double[] b=new double[100];
     double[] y=new double[1000];
    double[][] x=new double[1000][10];
     double[] sol=new double[100];
 
    void makedata(){
 
 
 
     for(s1=1;s1<number+1;s1++){
    for(s2=1;s2<number+1;s2++){   
     x1=0;   
    for(s=1;s<datanumber+1;s++){
    x1=x1+x[s][s1]*x[s][s2];
    }
    a[s1][s2]=x1;
    }
    }
 
 
 
    for(s1=1;s1<number+1;s1++){
    x1=0;   
    for(s=1;s<datanumber+1;s++){
    x1=x1+x[s][s1]*y[s];
    }
    b[s1]=x1;
    }
 
    double z;
 
   for(s1=1;s1<number+1;s1++){
   for(s2=1;s2<number+1;s2++){   
   z=a[s2][s1]/a[s1][s1];  
   if(s1==s2)z=0;
   for(s=1;s<number+1;s++){
   a[s2][s]=a[s2][s]-z*a[s1][s];
   } 
   b[s2]=b[s2]-z*b[s1];
   }
   }
 
   for(s1=1;s1<number+1;s1++){
   sol[s1]=b[s1]/a[s1][s1];
   }
 
 
 
 
    }
}
最終更新:2016年05月11日 17:55