アットウィキロゴ

lurasu

class lp{

int mx,nx;
double[][] a=new double[101][101];
double[] b=new double[101];
double[] x=new double[101];
int m,n;
int ms,ns;

void makedata(){

ns=100;
while(ns>0){
ns=seekn();
ms=0;
if(ns>0)ms=seekm(ns);
if(ms>0)cal(ms,ns);
}

for(n=1;n<nx+1;n++){
x[n]=sol(n);
}

}

double sol(int n){
int m,h,sx,ms;
double s1;
sx=0;
ms=0;
for(m=1;m<mx+1;m++){
h=0;
if(a[m][n]==0)h=100;
if(h<50)sx=sx+1;
if(h<50)ms=m;
}
s1=0;
if(sx==1)s1=b[ms]/a[ms][n];
return s1;
}

void cal(int ms,int ns){
double z;
int m,n;
for(m=0;m<mx+1;m++){
z=a[m][ns]/a[ms][ns];
if(m==ms)z=0;
for(n=1;n<nx+1;n++){
a[m][n]=a[m][n]-z*a[ms][n];
}
b[m]=b[m]-z*b[ms];
}

}

int seekm(int ns){
int h,ms,m;
double a1,minm;
ms=0;
minm=9999;
for(m=1;m<mx+1;m++){
h=0;
a1=a[m][ns];
if(a1>0)h=h+1;
if(a1==0)a1=1;
if(b[m]/a1<minm)h=h+1;
if(h==2)minm=b[m]/a1;
if(h==2)ms=m;
}
return ms;
}


int seekn(){
int n,ns;
double maxn;
maxn=0;
ns=0;
for(n=1;n<nx+1;n++){
if(a[0][n]>maxn)ns=n;
if(a[0][n]>maxn)maxn=a[0][n];
}
return ns;
}



}
最終更新:2011年08月22日 10:23