アットウィキロゴ

java tax02

public class pro02{
public static void main(String[] args) {
double z[]=new double[201];
double y[]= new double[101];
double c[]= new double[101];
int s;
pro fun=new pro();
z=fun.mae();
for (s=1;s<101;s++){
c[s]=z[s];
y[s]=z[s+100];  
}

for (s=1;s<101;s++){
System.out.println(y[s]);
}
}
}
class pro{
public double[] mae(){
double th[]= new double[101];
double y[]= new double[101];
double c[]= new double[101];
double data[]=new double[201];
int s;
double tl;
double tr;
double ls;
double w;
double cs;
double ys;
double b1;
double b2;
double tr1;
double tr2;
double tr3;
double wel;
double maxwel;
double maxtl;
double maxtr;
int t;
int n;
for (s=1;s<101;s++){
th[s]=0.02*s;
}
maxtl=0;
maxwel=-999;
maxtr=0;
for (n=20;n<45;n++){
tl=0.01*n;
tr1=0.01;
tr2=0.02;
tr=tr1;
b1=0;
for (s=1;s<101;s++){
w=(1-tl)*th[s];
ls=(w-tr)/(2*w);
if (ls<0){
ls=0;
}
ys=th[s]*ls;
cs=w*ls+tr;
b1=b1+ys-cs;
}
t=0;
while (t<100) {
tr=tr2;
b2=0;
for (s=1;s<101;s++){
w=(1-tl)*th[s];
ls=(w-tr)/(2*w);
if (ls<0){
ls=0;
}
ys=th[s]*ls;
cs=w*ls+tr;
b2=b2+ys-cs;
}
tr3=tr2-b2*(tr2-tr1)/(b2-b1);
tr1=tr2;
tr2=tr3;
b1=b2;
if (b2*b2<0.00001){
t=1000;
}
t=t+1;
}
tr=tr2;
wel=0;
for (s=1;s<101;s++){
w=(1-tl)*th[s];
ls=(w-tr)/(2*w);
if (ls<0){
ls=0;
}
cs=w*ls+tr;
wel=wel+Math.log(cs)+Math.log(1-ls);
}
if (wel>maxwel){
maxtr=tr;
}
if (wel>maxwel){
maxtl=tl;
}
if (wel>maxwel){
maxwel=wel;
}
}
tl=maxtl;
tr=maxtr;
for (s=1;s<101;s++){
w=(1-tl)*th[s];
ls=(w-tr)/(2*w);
if (ls<0){
ls=0;
}
y[s]=th[s]*ls;
c[s]=w*ls+tr;
}
for (s=1;s<101;s++){
data[s]=c[s];
data[s+100]=y[s];
}
return data;
}
}
最終更新:2009年12月09日 15:25