class
pro{
public static void main(String args[]){
int s;
int t1,t2,t3,t4,t5;
double lam,la1,la2;
double c1,y1,b1;
double th[]=
new double[11];
double c[]=new double[11];
double y[]=new double[11];
double cs[]=new double[11];
double ys[]=new double[11];
double w[]=new double[11];
double mu[]=new double[11];
double mx,don,yp,yps,cp,wp;
double m1,m2;
double alpha;
for (s=1;s<11;s++){
th[s]=1+0.1*s;
}
for (s=1;s<11;s++){
y[s]=0.5*th[s];
c[s]=y[s];
}
lam=0;
la1=0.5;
la2=2;
t1=0;
while(t1<
100){
lam=(la1+la2)/2;
b1=0;
for (s=1;s<11;s++){
c1=1/lam;
y1=th[s]-1/lam;
b1=b1+y1-c1;
}
if (b1>0)la2=lam;
if (b1<0)la1=lam;
if (b1*b1<0.0001)t1=1000;
t1=t1+1;
}
System.out.println(lam);
t5=0;
while(t5<
101){
for (s=1;s<11;s++){
c[s]=1/lam;
y[s]=th[s]-1/lam;
}
for (s=1;s<11;s++){
c[s]=1/lam;
y[s]=th[s]-1/lam;
}
for (s=2;s<11;s++){
w[s]=Math.log(c[s])+Math.log(1-y[s]/th[s]);
}
for (s=1;s<10;s++){
m1=0;
m2=0.4;
mx=0;
t3=0;
while(t3<100){
mx=(m1+m2)/2;
yp=y[s];
t2=0;
while(t2<100){;
don=lam-mx/(yp-th[s+1]);
yps=th[s]-1/don;
if ((yp-yps)*(yp-yps)<0.0001)t2=1000;
yp=yps;
t2=t2+1;
}
cp=(1-mx)/lam;
wp=Math.log(cp)+Math.log(1-yp/th[s+1]);
if (wp>w[s+1])m1=mx;
if (wp<w[s+1])m2=mx;
if ((wp-w[s+1])*(wp-w[s+1])<0.
000001)t3=1000;
t3=t3+1;
}
mu[s]=m2;
}
alpha=0.01*t5;
for (s=1;s<10;s++){
yp=y[s];
mx=alpha*mu[s];
t4=0;
while(t4<100){;
don=lam-mx/(yp-th[s+1]);
yps=th[s]-1/don;
if ((yp-yps)*(yp-yps)<0.0001)t4=1000;
yp=yps;
t4=t4+1;
}
ys[s]=yp;
cs[s]=(1-mx)/lam;
}
ys[10]=th[10]-1/lam;
cs[10]=1/lam;
for (s=1;s<11;s++){
c[s]=cs[s];
y[s]=ys[s];
}
t5=t5+1;
}
for (s=1;s<11;s++){
System.out.println(c[s]);
System.out.println(y[s]);
}
}
}
最終更新:2010年07月02日 20:12