ん、

class pro{
public static void main(String args[]){
int s;
double th[]=new double[11];
double c[]=new double[11];
double y[]=new double[11];
double w[]=new double[11];
double lam,la1,la2;
double mu[]=new double[11];
double b1,c1,u1,u2;
double alpha;
double m1,m2,m3;
double z1,z2,z3;
double y1,y2,ys,cs,us,bs;
double mumu;
int t1,t2,t3,t4,t5,t6,t7;
for (s=1;s<11;s++){
th[s]=1+0.1*s;
}
b1=0;
la1=0.1;
la2=3;
t1=0;
lam=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;
}
for (s=1;s<11;s++){
c[s]=1/lam;
y[s]=th[s]-1/lam;
}

t7=0;
while(t7<100){
alpha=0.5;
for (s=1;s<10;s++){
u1=Math.log(c[s+1])+Math.log(1-y[s+1]/th[s+1]);
u2=Math.log(c[s])+Math.log(1-y[s]/th[s+1]);
w[s]=u1+alpha*(u2-u1);
}

for (s=1;s<10;s++){
m1=0;
m2=0.3;
mumu=0;
us=0;
t3=0;
while(t3<100){
mumu=(m1+m2)/2;
y1=0;
y2=0.9*th[s];
z1=-1/(th[s]-y1)+lam+mumu/(th[s+1]-y1);
z2=-1/(th[s]-y2)+lam+mumu/(th[s+1]-y2);
t2=0;
ys=0;
while(t2<100){
ys=(y1+y2)/2;
z3=-1/(th[s]-ys)+lam+mumu/(th[s+1]-ys);
if (z3>0)y1=ys;
if (z3<0)y2=ys;
if (z3*z3<0.0001)t2=1000;
t2=t2+1;
}
cs=(1-mumu)/lam;
us=Math.log(cs)+Math.log(1-ys/th[s+1]);
if (us>w[s])m1=mumu;
if (us<w[s])m2=mumu;
if ((us-w[s])*(us-w[s])<0.0001)t3=1000;
t3=t3+1;
}
mu[s]=mumu;
}


la1=0.7*lam;
la2=1.3*lam;
t5=0;
lam=0;
while(t5<100){
lam=(la1+la2)/2;  
bs=0;
for (s=1;s<10;s++){
y1=0;
y2=0.9*th[s];
z1=-1/(th[s]-y1)+lam+mu[s]/(th[s+1]-y1);
z2=-1/(th[s]-y2)+lam+mu[s]/(th[s+1]-y2);
t4=0;
ys=0;
while(t4<100){
ys=(y1+y2)/2;
z3=-1/(th[s]-ys)+lam+mu[s]/(th[s+1]-ys);
if (z3>0)y1=ys;
if (z3<0)y2=ys;
if (z3*z3<0.0001)t4=1000;
t4=t4+1;
}
cs=(1-mu[s])/lam;
bs=bs+ys-cs;
}
cs=1/lam;
ys=th[10]-1/lam;
bs=bs+ys-cs;
if (bs>0)la2=lam;
if (bs<0)la1=lam;
if (bs*bs<0.0001)t5=1000;
t5=t5+1;
}
System.out.println(lam);
for (s=1;s<10;s++){
y1=0;
y2=0.9*th[s];
z1=-1/(th[s]-y1)+lam+mu[s]/(th[s+1]-y1);
z2=-1/(th[s]-y2)+lam+mu[s]/(th[s+1]-y2);
t6=0;
ys=0;
while(t6<100){
ys=(y1+y2)/2;
z3=-1/(th[s]-ys)+lam+mu[s]/(th[s+1]-ys);
if (z3>0)y1=ys;
if (z3<0)y2=ys;
if (z3*z3<0.0001)t6=1000;
t6=t6+1;
}
c[s]=(1-mu[s])/lam;
y[s]=ys;
}
c[10]=1/lam;
y[10]=th[10]-1/lam;
t7=t7+1;
}
for (s=1;s<10;s++){
y1=y[s+1]-y[s];
c1=c[s+1]-c[s];
System.out.println(s);
System.out.println(y[s]);
System.out.println(c[s]);
System.out.println(1-c1/y1);
}






}
}
最終更新:2010年06月27日 21:31