package mono;
public class pro {
/*前提条件*/
int number;
double[][] x=new double[300][300];
double[] y=new double[300];
double[] ex=new double[300];
double[] im=new double[300];
/*基礎的計算*/
double[] c=new double[300];
double[][] rate=new double[300][300];
double[] alpha=new double[300];
/*応用*/
double[] delta=new double[300];
public static void main(String[] args) {
pro test=new pro();
}
pro(){
number=2;
x[1][1]=140;
x[1][2]=30;
x[2][1]=30;
x[2][2]=40;
y[1]=350;
y[2]=400;
ex[1]=30;
ex[2]=15;
im[1]=23;
im[2]=13;
fast sub=new fast();
sub.number=number;
sub.y=y;
sub.ex=ex;
sub.im=im;
sub.x=x;
sub.makedata();
rate=sub.rate;
alpha=sub.alpha;
c=sub.c;
leon sub2=new leon();
sub2.number=number;
sub2.c=c;
sub2.ex=ex;
sub2.y=y;
sub2.im=im;
sub2.alpha=alpha;
sub2.rate=rate;
sub2.makedata(1);
delta=sub2.delta;
System.out.println(delta[1]+","+delta[2]);
}
}
public class fast {
int number,s,ip,ou;
double[][] x=new double[300][300];
double[] y=new double[300];
double[] ex=new double[300];
double[] im=new double[300];
double x1;
double[] c=new double[300];
double[][] rate=new double[300][300];
double[] alpha=new double[300];
void makedata(){
for(s=1;s<number+1;s++){
x1=0;
for(ip=1;ip<number+1;ip++){
x1=x1+x[s][ip];
}
c[s]=y[s]+im[s]-ex[s]-x1;
}
for(ou=1;ou<number+1;ou++){
for(ip=1;ip<number+1;ip++){
rate[ou][ip]=x[ou][ip]/y[ou];
}
}
double x1;
for(s=1;s<number+1;s++){
x1=0;
for(ou=1;ou<number+1;ou++){
x1=x1+x[ou][s];
}
alpha[s]=im[s]/(c[s]+x1);
}
}
}
package mono;
public class leon{
int number,s,ip,ou;
double[][] x=new double[300][300];
double[] y=new double[300];
double[] ex=new double[300];
double[] im=new double[300];
double x1;
double[] c=new double[300];
double[][] rate=new double[300][300];
double[] alpha=new double[300];
double[] ys=new double[300];
double[] ims=new double[300];
double[] cs=new double[300];
double[] delta=new double[300];
void makedata(int page){
ys=y;
cs=c;
ims=im;
cs[page]=cs[page]+1;
sol();
for(s=1;s<number+1;s++){
delta[s]=ys[s]-y[s];
}
}
void sol(){
int t;
t=0;
while(t<50){
cal();
t=t+1;
}
}
void cal(){
double[] yp=new double[3];
double[] imp=new double[3];
int s;
double y1,x1;
for(s=1;s<number+1;s++){
y1=ex[s]-ims[s]+cs[s];
for(ou=1;ou<number+1;ou++){
y1=y1+rate[ou][s]*ys[ou];
}
yp[s]=y1;
}
for(s=1;s<number+1;s++){
x1=cs[s];
for(ou=1;ou<number+1;ou++){
x1=x1+rate[ou][s]*ys[ou];
}
imp[s]=alpha[s]*x1;
}
ims=imp;
ys=yp;
}
}
最終更新:2014年02月04日 00:54