public class pro06{
public static void main(String[] args) {
double cs[]=new double[101];
double xs[]=new double[101];
double uc[]=new double[101];
double ux[]=new double[101];
double h;
int s,m,n,maxn,maxm,num;
double maxv,minv;
double x1,x2,z;
int px,t1,t2,t3,t4,op;
double x[][]=new double[402][802];
h=0.02;
for (s=1;s<101;s++){
cs[s]=0.4+0.002*s;
xs[s]=1-cs[s];
}
t4=0;
while(t4<10){
h=h/2;
t3=0;
while(t3<){
for (s=1;s<101;s++){
uc[s]=1/cs[s];
ux[s]=1/xs[s];
}
for (m=0;m<402;m++){
for (n=0;n<802;n++){
x[m][n]=0;
}
}
for (n=602;n<802;n++){
x[0][n]=-1;
}
for (s=1;s<101;s++){
m=4*s-3;
x[m][1]=1;
x[m][200+m]=1;
x[m][0]=cs[s]+h;
m=4*s-2;
x[m][1]=-1;
x[m][200+m]=1;
x[m][601+2*s-1]=-1;
x[m][0]=-cs[s]+h;
m=4*s-1;
x[m][2]=1;
x[m][200+m]=1;
x[m][0]=xs[s]+h;
m=4*s;
x[m][2]=-1;
x[m][200+m]=1;
x[m][601+2*s]=-1;
x[m][0]=-xs[s]+h;
}
for(n=1;n<201;n++){
x[401][1]=1;
}
x[401][601]=1;
x[401][0]=100;
for (n=0;n<802;n++){
for (s=1;s<101;s++){
m=2*s;
x[0][n]=x[0][n]-x[m][n]-x[m+2][n];
}
}
maxv=0;
maxn=999;
for (n=1;n<802;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<10000){
minv=999;
maxm=999;
for (m=1;m<802;m++){
x1=x[m][maxn];
px=0;
if (x1==0)px=100;
if (px>50)x1=1;
x2=x[m][0]/x[m][maxn];
if (px>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<402;m++){
z=x[m][maxn]/x[maxm][maxn];
if (maxm==m)z=0;
for (n=0;n<802;n++){
x[m][n]=x[m][n]-z*x[maxm][n];
}
}
maxv=0;
maxn=999;
for (n=1;n<802;n++){
if (x[0][n]>maxv)maxn=n;
if (x[0][n]>maxv)maxv=x[0][n];
}
System.out.println(maxn);
if (maxn==999)t1=1000;
}
for (s=1;s<101;s++){
x[0][2*s-1]=uc[s];
x[0][2*s]=ux[s];
}
maxv=0;
maxn=999;
for (n=1;n<602;n++){
if (x[0][n]>maxv)maxn=n;
if (x[0][n]>maxv)maxv=x[0][n];
}
System.out.println(maxn);
t2=0;
while(t2<100){
minv=999;
maxm=999;
for (m=1;m<402;m++){
x1=x[m][maxn];
px=0;
if (x1==0)px=100;
if (px>50)x1=1;
x2=x[m][0]/x[m][maxn];
if (px>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<402;m++){
z=x[m][maxn]/x[maxm][maxn];
if (maxm==m)z=0;
for (n=0;n<602;n++){
x[m][n]=x[m][n]-z*x[maxm][n];
}
}
maxv=0;
maxn=999;
for (n=1;n<602;n++){
if (x[0][n]>maxv)maxn=n;
if (x[0][n]>maxv)maxv=x[0][n];
}
System.out.println(maxn);
if (maxn==999)t2=1000;
}
for (s=1;s<101;s++){
op=0;
for (m=1;m<402;m++){
if (x[m][2*s-1]>0)op=m;
if (x[m][2*s-1]<0)op=m;
}
cs[s]=x[op][0]/x[op][2s-1];
op=0;
for (m=1;m<402;m++){
if (x[m][2*s]>0)op=m;
if (x[m][2*s]<0)op=m;
}
xs[s]=x[op][0]/x[op][2*s];
}
System.out.println(cs[1]);
System.out.println(xs[1]);
t3=t3+1;
}
t4=t4+1;
}
}
}
最終更新:2010年06月14日 13:47