public class lp01{
public static void main(String[] args) {
double x[][]=new double[6][8];
double c1,x1,u1,uc,ux;
double h;
int m,n,p;
int maxn,maxm;
double maxv,minv;
double x2,z,cs,xs;
int t1,t2;
h=0.001;
cs=0.7;
xs=0.3;
t2=0;
while(t2<1000){
u1=Math.log(cs)+Math.log(xs);
uc=1/cs;
ux=1/xs;
h=0.001;
for (m=0;m<6;m++){
for (n=0;n<8;n++){
x[m][n]=0;
}
}
x[0][1]=uc;
x[0][2]=ux;
x[1][1]=1;
x[1][0]=2*h;
x[2][4]=1;
x[1][3]=1;
x[2][2]=1;
x[3][1]=1;
x[3][0]=2*h;
x[3][5]=1;
x[3][2]=1;
x[2][0]=2*h;
maxv=0;
maxn=0;
for (n=1;n<6;n++){
if (x[0][n]>maxv)maxn=n;
if (x[0][n]>maxv)maxv=x[0][n];
}
System.out.println(maxn);
t1=0;
while(t1<100){
minv=900;
maxm=0;
for (m=1;m<4;m++){
x1=x[m][maxn];
p=0;
if (x1==0)p=100;
if (p>50)x1=1;
x2=x[m][0]/x1;
if (p>50)x2=1000;
if (x2<0)x2=1000;
if (x2<minv)maxm=m;
if (x2<minv)minv=x2;
}
System.out.println(maxm);
for (m=0;m<4;m++){
z=x[m][maxn]/x[maxm][maxn];
if (m==maxm)z=0;
for (n=0;n<6;n++){
x[m][n]=x[m][n]-z*x[maxm][n];
}
}
maxv=0;
maxn=0;
for (n=1;n<6;n++){
if (x[0][n]>maxv)maxn=n;
if (x[0][n]>maxv)maxv=x[0][n];
}
System.out.println(maxn);
t1=t1+1;
if (maxv<0.0001)t1=1000;
}
System.out.println(x[0][0]);
z=0;
p=0;
for (m=1;m<4;m++){
if (x[m][1]>0)p=p+1;
if (x[m][1]<0)p=p+1;
if (x[m][1]>0)z=x[m][0]/x[m][1];
if (x[m][1]<0)z=x[m][0]/x[m][1];
}
if (p>1)z=0;
cs=cs+z-h;
p=0;
for (m=1;m<4;m++){
if (x[m][2]>0)p=p+1;
if (x[m][2]<0)p=p+1;
if (x[m][2]>0)z=x[m][0]/x[m][2];
if (x[m][2]<0)z=x[m][0]/x[m][2];
}
if (p>1)z=0;
xs=xs+z-h;
System.out.println(cs);
System.out.println(xs);
t2=t2+1;
}
}
}
最終更新:2010年06月09日 10:45