package miti4;
public class leo {
double[][] x=new double[500][500];
double[] y=new double[500];
int number;
double[] ex=new double[500];
double[] im=new double[500];
double x1;
double[] c=new double[540];
double[][] rate=new double[540][540];
double[] alpha=new double[540];
double[] ys=new double[540];
double[] ims=new double[540];
double[] cs=new double[540];
double[][] delta=new double[540][540];
void makedata(){
pre();
ys=y;
cs=c;
ims=im;
int s,sx;
for(s=1;s<number+1;s++){
cs=c;
ims=im;
ys=y;
cs[s]=cs[s]+1;
sol();
for(sx=1;sx<number+1;sx++){
delta[s][sx]=ys[sx]-y[sx];
}
}
}
void sol(){
int t;
double e1;
t=0;
while(t<50){
e1=cal();
if(e1<0.0001)t=100;
t=t+1;
}
}
void pre(){
double x2;
int ip,ou;
for(ip=1;ip<number+1;ip++){
x2=0;
for(ou=1;ou<number+1;ou++){
x2=x2+x[ou][ip];
}
c[ip]=y[ip]+im[ip]-ex[ip]-x2;
}
for(ou=1;ou<number+1;ou++){
for(ip=1;ip<number+1;ip++){
rate[ou][ip]=x[ou][ip]/y[ou];
}
}
for(ip=1;ip<number+1;ip++){
x2=0;
for(ou=1;ou<number+1;ou++){
x2=x2+x[ou][ip];
}
alpha[ip]=im[ip]/(c[ip]+x2);
}
}
double cal(){
double[] yp=new double[100];
double[] imp=new double[100];
int s,ip,ou;
double y1,x2;
for(ip=1;ip<number+1;ip++){
y1=ex[ip]-ims[ip]+cs[ip];
for(ou=1;ou<number+1;ou++){
y1=y1+rate[ou][ip]*ys[ou];
}
yp[ip]=y1;
}
for(ip=1;ip<number+1;ip++){
x2=cs[ip];
for(ou=1;ou<number+1;ou++){
x2=x2+rate[ou][ip]*ys[ou];
}
imp[ip]=alpha[ip]*x2;
}
double ep;
ep=0;
for(s=1;s<number+1;s++){
ep=ep+(ys[s]-yp[s])*(ys[s]-yp[s]);
}
ims=imp;
ys=yp;
return ep;
}
}
最終更新:2014年02月03日 03:26