package nnx;
public class nn {
int number;
int number_step;
int number_var;
double[] beta=new double[5];
double[][] alpha=new double[5][5];
double[][][] theta=new double[6][5][5];
int[] y=new int[101];
double[][] x=new double[101][4];
int s,sx,tr;
double[][] a=new double[7][5];
double[][] dalpha=new double[7][5];
double[] b=new double[5];
double[] dbeta=new double[5];
double[][] dtheta=new double[5][5];
double[][][] th=new double[6][5][5];
void makedata(){
int q,s,sx;
double g1=0;
double g2;
int trial=0;
while(trial<50){
trial=trial+1;
f sub=new f();
sub.x=x;
sub.y=y;
sub.number_step=number_step;
sub.number_var=number_var;
sub.number=number;
sub.alpha=alpha;
sub.beta=beta;
sub.theta=theta;
g1=sub.makedata();
int eq,m;
for(eq=1;eq<number_var+1;eq++){
for(m=0;m<number_var+1;m++){
fresh();
double h=0.01;
a[eq][m]=a[eq][m]+h;
f sub2=new f();
sub2.x=x;
sub2.y=y;
sub2.number_step=number_step;
sub2.number_var=number_var;
sub2.number=number;
sub2.alpha=a;
sub2.beta=beta;
sub2.theta=theta;
g2=sub2.makedata();
dalpha[eq][m]=(g2-g1)/h;
}
}
for(m=0;m<number_var+1;m++){
fresh();
double h=0.01;
b[m]=b[m]+h;
f sub2=new f();
sub2.x=x;
sub2.y=y;
sub2.number_step=number_step;
sub2.number_var=number_var;
sub2.number=number;
sub2.alpha=alpha;
sub2.beta=b;
sub2.theta=theta;
g2=sub2.makedata();
dbeta[m]=(g2-g1)/h;
}
for(eq=1;eq<number_var+1;eq++){
for(m=0;m<number_var+1;m++){
double h=0.01;
fresh();
th[number_step][eq][m]=theta[number_step][eq][m]+h;
f sub3=new f();
sub3.x=x;
sub3.y=y;
sub3.number_step=number_step;
sub3.number_var=number_var;
sub3.number=number;
sub3.alpha=alpha;
sub3.beta=beta;
sub3.theta=th;
g2=sub3.makedata();
dtheta[eq][m]=(g2-g1)/h;
}
}
fresh();
double sig=0;
for(eq=1;eq<number_var+1;eq++){
for(m=0;m<number_var+1;m++){
sig=sig+dtheta[eq][m]*dtheta[eq][m];
}
}
for(eq=1;eq<number_var+1;eq++){
for(m=0;m<number_var+1;m++){
sig=sig+dalpha[eq][m]*dalpha[eq][m];
}
}
for(m=0;m<number_var+1;m++){
sig=sig+dbeta[m]*dbeta[m];
}
for(m=0;m<number_var+1;m++){
b[m]=beta[m]-0.01*g1*dbeta[m]/sig;
}
for(eq=1;eq<number_var+1;eq++){
for(m=0;m<number_var+1;m++){
a[eq][m]=alpha[eq][m]-0.01*g1*dalpha[eq][m]/sig;
}}
for(eq=1;eq<number_var+1;eq++){
for(m=0;m<number_var+1;m++){
th[number_step][eq][m]=theta[number_step][eq][m]-0.01*g1*dtheta[eq][m]/sig;
}}
f sub4=new f();
sub4.x=x;
sub4.y=y;
sub4.number_step=number_step;
sub4.number_var=number_var;
sub4.number=number;
sub4.alpha=a;
sub4.beta=b;
sub4.theta=th;
g2=sub4.makedata();
if(g2<g1)refresh();
if(g2>g1)trial=10000;
}
}
void fresh(){
int eq,m;
for(m=0;m<number_var+1;m++){
b[m]=beta[m];
}
for(eq=1;eq<number_var+1;eq++){
for(m=0;m<number_var+1;m++){
a[eq][m]=alpha[eq][m];
}}
for(tr=1;tr<number_step+1l;tr++){
for(eq=1;eq<number_var+1;eq++){
for(m=0;m<number_var+1;m++){
th[tr][eq][m]=theta[tr][eq][m];
}}}
}
void refresh(){
int eq,m;
for(m=0;m<number_var+1;m++){
beta[m]=b[m];
}
for(eq=1;eq<number_var+1;eq++){
for(m=0;m<number_var+1;m++){
alpha[eq][m]=a[eq][m];
}}
for(tr=1;tr<number_step+1l;tr++){
for(eq=1;eq<number_var+1;eq++){
for(m=0;m<number_var+1;m++){
theta[tr][eq][m]=th[tr][eq][m];
}}}
}
}
最終更新:2018年03月13日 01:46