アットウィキロゴ

mitini

package r1;
 
 
public class drive {
 
 int datanumber,number;   
 int[] y=new int[201];
 int[][] es=new int[201][4];
 double sig;
 double[] delta=new double[3];
    double[][] x=new double[201][4];
 
     double[] alpha=new double[3];
 double[][] beta=new double[3][3];
 
 double[] ddelta=new double[3];
 double dsig;
    double[] dalpha=new double[3];
  double[][] dbeta=new double[3][3];
 
 
    void makedata(int n){
 
 
 
 
 
      ex sub=new ex();
      sub.alpha=alpha;
      sub.beta=beta;
      sub.x=x;
      sub.e=es;
      sub.datanumber=datanumber;
      sub.number=number;
      double u1=sub.makedata(n);
 
 
      double de=0.01;
 
 double[] alphax=new double[3]; 
 
 alphax[n]=alpha[n]+de;
 
     ex sub2=new ex();
      sub2.alpha=alphax;
      sub2.beta=beta;
      sub2.x=x;
      sub2.e=es;
      sub2.datanumber=datanumber;
      sub2.number=number;
      double u2=sub2.makedata(n);
 
 
 
      dalpha[n]=(u2-u1)/de;
 
 
 
 
       double[][] betax=new double[3][3];
 
       int s;
 
       for(s=1;s<number+1;s++){
       int sx;
       for(sx=1;sx<number+1;sx++){
       betax[n][sx]=beta[n][sx];    
       }
 
       betax[n][s]=betax[n][s]+de;
 
 
    ex sub3=new ex();
      sub3.beta=betax;
      sub3.alpha=alpha;
      sub3.x=x;
      sub3.e=es;
      sub3.datanumber=datanumber;
      sub3.number=number;
      double u3=sub3.makedata(n);
 
      dbeta[n][s]=(u3-u1)/de;
 
 
 
    }
 
    double du=-u1/100;
 
 
    double dz=dalpha[n]*dalpha[n];
    for(s=1;s<number+1;s++){
    dz=dz+dbeta[n][s]*dbeta[n][s];    
    }
 
    double t=du/dz;
 
 
    alphax[n]=alpha[n]+t*dalpha[n];
 
    for(s=1;s<number+1;s++){
    betax[n][s]=beta[n][s]+t*dbeta[n][s];    
    }
 
    ex sub4=new ex();
      sub4.beta=betax;
      sub4.alpha=alphax;
      sub4.x=x;
      sub4.e=es;
      sub4.datanumber=datanumber;
      sub4.number=number;
      double u4=sub4.makedata(n);
 
 
   if(u1>u4){
   alpha[n]=alpha[n]+dalpha[n]*t;   
   for(s=1;s<number+1;s++){
   beta[n][s]=betax[n][s];    
   }
 
 
 
   }
 
 
 
 
 
 
 
    }}
 
 
 
package r1;
 
 
 
public class ex {
 
 int datanumber,number;   
 double[][] x=new double[201][4];
 int[][] e=new int[201][4];
 double[] alpha=new double[3];
 double[][] beta=new double[3][3];
 
 
    double makedata(int tr){
 
        int s,sx;
    double zz=0;
    for(s=1;s<datanumber+1;s++){
    double z=alpha[tr];    
    for(sx=1;sx<number+1;sx++){
    z=z+beta[tr][sx]*x[s][sx];    
    }    
    double z1=1/(1+Math.exp(-z));
    if(e[s][tr]>0.5)zz=zz+(z1-1)*(z1-1);
    if(e[s][tr]<0.5)zz=zz+z1*z1;
    }
 
 
    return zz;
 
 
    }
 
}
 
最終更新:2016年12月28日 11:32