class nkdsge{
public static void main(String args[]){
double a;
double beta;
double ks;
double h;
double th[]=new double[11];
double k[]=new double[101];
double price[][][]=new double[11][11][101];
double cx[][][]=new double[11][11][101];
double cp[][][]=new double[11][11][101];
double lx[][][]=new double[11][11][101];
double lp[][][]=new double[11][11][101];
double px[][][]=new double[11][11][101];
double pp[][][]=new double[11][11][101];
double rev[][][]=new double[11][11][101];
double v1[][][]=new double[11][11][101];
double v2[][][]=new double[11][11][101];
double vs[][][]=new double[11][11][101];
double checkc[][][]=new double[11][11][101];
double checkp[][][]=new double[11][11][101];
double checkl[][][]=new double[11][11][101];
double gotos[][][][]=new double[11][11][101][11];
double eejump[][][][]=new double[11][11][101][11];
double mc[]=new double[11];
double k1;
double n1;
int n2;
int n3;
int n;
double s1;
int s2;
int s3;
double c1;
double r1;
double ep;
double ls;
double l1;
double w1;
int t;
int m;
int mx;
double uc;
double ms;
double pi;
double p1;
double p2;
double p3;
double pc;
double i1;
double dp;
double z1;
double z2;
double dn;
double ds;
int s;
double wedge;
double phi;
double pnon;
double pst;
double gam;
double sig;
double pz;
double delta;
double pnew;
double maki;
double space;
double pch1;
double pch2;
double re;
double ve;
double vv;
int t1;
int t2;
int t3;
int t4;
int t5;
int t6;
double bare;
double de;
double pr;
int pf;
double um;
bare=0.0001;
phi=0.9;
a=0.33;
beta=0.95;
de=0.2;
gam=0.8;
sig=1/(1-phi);
for (s=1;s<11;s++){
for (m=1;m<11;m++){
for (n=10;n<91;n++){
px[s][m][n]=1;
}
}
}
for (s=1;s<11;s++){
for (m=1;m<11;m++){
for (n=10;n<91;n++){
checkc[s][m][n]=1;
checkl[s][m][n]=1;
checkp[s][m][n]=1;
}
}
}
for (n=1;n<101;n++){
for (s=1;s<11;s++){
for (m=1;m<11;m++){
for (mx=1;mx<11;mx++){
gotos[s][m][n][mx]=s;
}
}
}
}
for (m=1;m<11;m++){
th[m]=0.95+0.01*m;
}
for (s=1;s<11;s++){
mc[s]=0.85+0.01*s;
}
ls=(1-a)/(2-a);
ks=ls*Math.pow((1 / beta - 1) / a , 1 / (a - 1));
h=2*ks/100;
for (n=1;n<101;n++){
k[n]=n*h;
for (s=1;s<11;s++){
for (m=1;m<11;m++){
lx[s][m][n]=ls;
cx[s][m][n]=th[m]*Math.pow(k[n],a)*Math.pow(lx[s][m][n],1-a);
}
}
}
t1=0;
while(t1<100){
t2=0;
while(t2<100){
for (s=1;s<11;s++){
for (m=1;m<11;m++){
for (n=10;n<91;n++){
k1=k[n]+th[m]*Math.pow(k[n],a)*Math.pow(lx[s][m][n],1-a)-cx[s][m][n];
n1=k1/h;
n2=(int)n1;
n3=n2+1;
uc=0;
for (mx=1;mx<11;mx++){
s1=gotos[s][m][n][mx];
s2=(int)s1;
if (s2>9)s2=9;
if (s2<1)s2=1;
s3=s2+1;
dn=(n1-n2)*(cx[s2][mx][n3]-cx[s2][mx][n2]);
ds=(s1-s2)*(cx[s3][mx][n2]-cx[s2][mx][n2]);
c1=cx[s2][mx][n2]+ds+dn;
dn=(n1-n2)*(lx[s2][mx][n3]-lx[s2][mx][n2]);
ds=(s1-s2)*(lx[s3][mx][n2]-lx[s2][mx][n2]);
l1=lx[s2][mx][n2]+dn+ds;
wedge=mc[s2]+(s1-s2)*(mc[s3]-mc[s2]);
r1=wedge*th[mx]*a*Math.pow(k1,a-1)*Math.pow(l1,1-a);
uc=uc+(beta*(1+r1))/c1;
}
uc=0.1*uc;
cp[s][m][n]=1/uc;
w1=mc[s]*th[m]*(1-a)*Math.pow(k[n],a)*Math.pow(lx[s][m][n],-a);
lp[s][m][n]=1-cx[s][m][n]/w1;
}
}
}
ep=0;
for (s=1;s<11;s++){
for (m=1;m<11;m++){
for (n=10;n<91;n++){
ep=ep+Math.pow(cx[s][m][n]-cp[s][m][n],2)+Math.pow(lx[s][m][n]-lp[s][m][n],2);
}
}
}
for (s=1;s<11;s++){
for (m=1;m<11;m++){
for (n=10;n<91;n++){
cx[s][m][n]=cp[s][m][n];
lx[s][m][n]=lp[s][m][n];
}
}
}
if (ep<bare)t2=1000;
t2=t2+1;
}
ms=20;
t3=0;
while(t3<100){
for (s=1;s<11;s++){
for (m=1;m<11;m++){
for (n=10;n<91;n++){
p1=1.05*px[s][m][n];
p2=0.95*px[s][m][n];
k1=k[n]+th[m]*Math.pow(k[n],a)*Math.pow(lx[s][m][n],1-a)-cx[s][m][n];
n1=k1/h;
n2=(int)n1;
n3=n2+1;
um=0;
for (mx=1;mx<11;mx++){
s1=gotos[s][m][n][mx];
s2=(int)s1;
if (s2>9)s2=9;
if (s2<1)s2=1;
s3=s2+1;
dn=(n1-n2)*(lx[s2][mx][n3]-lx[s2][mx][n2]);
ds=(s1-s2)*(lx[s3][mx][n2]-lx[s2][mx][n2]);
l1=lx[s2][mx][n2]+ds+dn;
wedge=mc[s2]+(s1-s2)*(mc[s3]-mc[s2]);
r1=wedge*th[mx]*a*Math.pow(k1,a-1)*Math.pow(l1,1-a);
dn=(n1-n2)*(cx[s2][mx][n3]-cx[s2][mx][n2]);
ds=(s1-s2)*(cx[s3][mx][n2]-cx[s2][mx][n2]);
c1=cx[s2][mx][n2]+ds+dn;
dn=(n1-n2)*(px[s2][mx][n3]-px[s2][mx][n2]);
ds=(s1-s2)*(px[s3][mx][n2]-px[s2][mx][n2]);
pc=px[s2][mx][n2]+dn+ds;
pi=pc/p1-1;
i1=(1+r1)*(1+pi)-1;
um=um+i1*beta/(c1*(1+pi));
}
um=0.1*um;
dp=ms*um;
z1=dp-p1;
t4=0;
while (t4<100){
um=0;
for (mx=1;mx<11;mx++){
s1=gotos[s][m][n][mx];
s2=(int)s1;
if (s2>9)s2=9;
if (s2<1)s2=1;
s3=s2+1;
dn=(n1-n2)*(lx[s2][mx][n3]-lx[s2][mx][n2]);
ds=(s1-s2)*(lx[s3][mx][n2]-lx[s2][mx][n2]);
l1=lx[s2][mx][n2]+ds+dn;
wedge=mc[s2]+(s1-s2)*(mc[s3]-mc[s2]);
r1=wedge*th[mx]*a*Math.pow(k1,a-1)*Math.pow(l1,1-a);
dn=(n1-n2)*(cx[s2][mx][n3]-cx[s2][mx][n2]);
ds=(s1-s2)*(cx[s3][mx][n2]-cx[s2][mx][n2]);
c1=cx[s2][mx][n2]+ds+dn;
dn=(n1-n2)*(px[s2][mx][n3]-px[s2][mx][n2]);
ds=(s1-s2)*(px[s3][mx][n2]-px[s2][mx][n2]);
pc=px[s2][mx][n2]+dn+ds;
pi=pc/p2-1;
i1=(1+r1)*(1+pi)-1;
um=um+i1*beta/(c1*(1+pi));
}
um=0.1*um;
dp=ms*um;
z2=dp-p2;
p3=p2-z2*(p2-p1)/(z2-z1);
z1=z2;
p1=p2;
p2=p3;
if (z2*z2<bare)t4=1000;
t4=t4+1;
}
pp[s][m][n]=p2;
}
}
}
ep=0;
for (s=1;s<11;s++){
for (m=1;m<11;m++){
for (n=10;n<91;n++){
ep=ep+Math.pow(px[s][m][n]-pp[s][m][n],2);
}
}
}
for (s=1;s<11;s++){
for (m=1;m<11;m++){
for (n=10;n<91;n++){
px[s][m][n]=pp[s][m][n];
}
}
}
if (ep<bare)t3=1000;
t3=t3+1;
}
for (s=1;s<11;s++){
for (m=1;m<11;m++){
for (n=10;n<91;n++){
v1[s][m][n]=0;
}
}
}
for (s=1;s<11;s++){
for (m=1;m<11;m++){
for (n=10;n<91;n++){
v2[s][m][n]=0;
}
}
}
pch1=0.9*px[5][5][50];
pch2=1.1*px[5][5][50];
for (s=1;s<11;s++){
for (m=1;m<11;m++){
for (n=10;n<91;n++){
rev[s][m][n]=pch1*phi-px[s][m][n]*mc[s];
}
}
}
t5=0;
while (t5<100){
for (s=1;s<11;s++){
for (m=1;m<11;m++){
for (n=10;n<91;n++){
k1=k[n]+th[m]*Math.pow(k[n],a)*Math.pow(lx[s][m][n],1-a)-cx[s][m][n];
n1=k1/h;
n2=(int)n1;
n3=n2+1;
vv=0;
for (mx=1;mx<11;mx++){
s1=gotos[s][m][n][mx];
s2=(int)s1;
if (s2>9)s2=9;
if (s2<1)s2=1;
s3=s2+1;
dn=(n1-n2)*(rev[s2][mx][n3]-rev[s2][mx][n2]);
ds=(s1-s2)*(rev[s3][mx][n2]-rev[s2][mx][n2]);
re=rev[s2][mx][n2]+ds+dn;
dn=(n1-n2)*(v1[s2][mx][n3]-v1[s2][mx][n2]);
ds=(s1-s2)*(v1[s3][mx][n2]-v1[s2][mx][n2]);
ve=v1[s2][mx][n2]+ds+dn;
dn=(n1-n2)*(lx[s2][mx][n3]-lx[s2][mx][n2]);
ds=(s1-s2)*(lx[s3][mx][n2]-lx[s2][mx][n2]);
l1=lx[s2][mx][n2]+ds+dn;
wedge=mc[s2]+(s1-s2)*(mc[s3]-mc[s2]);
r1=wedge*th[mx]*a*Math.pow(k1,a-1)*Math.pow(l1,1-a);
dn=(n1-n2)*(px[s2][mx][n3]-px[s2][mx][n2]);
ds=(s1-s2)*(px[s3][mx][n2]-px[s2][mx][n2]);
pc=px[s2][mx][n2]+dn+ds;
pi=pc/px[s][m][n]-1;
i1=(1+r1)*(1+pi)-1;
vv=vv+(re+(1-de)*ve)/(1+i1);
}
vs[s][m][n]=vv/10;
}
}
}
ep=0;
for (s=1;s<11;s++){
for (m=1;m<11;m++){
for (n=10;n<91;n++){
ep=ep+Math.pow(vs[s][m][n]-v1[s][m][n],2);
}
}
}
for (s=1;s<11;s++){
for (m=1;m<11;m++){
for (n=10;n<91;n++){
v1[s][m][n]=vs[s][m][n];
}
}
}
if (ep<bare)t5=1000;
t5=t5+1;
}
for (s=1;s<11;s++){
for (m=1;m<11;m++){
for (n=10;n<91;n++){
rev[s][m][n]=pch2*phi-px[s][m][n]*mc[s];
}
}
}
t6=0;
while (t6<100){
for (s=1;s<11;s++){
for (m=1;m<11;m++){
for (n=10;n<91;n++){
k1=k[n]+th[m]*Math.pow(k[n],a)*Math.pow(lx[s][m][n],1-a)-cx[s][m][n];
n1=k1/h;
n2=(int)n1;
n3=n2+1;
vv=0;
for (mx=1;mx<11;mx++){
s1=gotos[s][m][n][mx];
s2=(int)s1;
if (s2>9)s2=9;
if (s2<1)s2=1;
s3=s2+1;
dn=(n1-n2)*(rev[s2][mx][n3]-rev[s2][mx][n2]);
ds=(s1-s2)*(rev[s3][mx][n2]-rev[s2][mx][n2]);
re=rev[s2][mx][n2]+ds+dn;
dn=(n1-n2)*(v2[s2][mx][n3]-v2[s2][mx][n2]);
ds=(s1-s2)*(v2[s3][mx][n2]-v2[s2][mx][n2]);
ve=v2[s2][mx][n2]+ds+dn;
dn=(n1-n2)*(lx[s2][mx][n3]-lx[s2][mx][n2]);
ds=(s1-s2)*(lx[s3][mx][n2]-lx[s2][mx][n2]);
l1=lx[s2][mx][n2]+ds+dn;
wedge=mc[s2]+(s1-s2)*(mc[s3]-mc[s2]);
r1=wedge*th[mx]*a*Math.pow(k1,a-1)*Math.pow(l1,1-a);
dn=(n1-n2)*(px[s2][mx][n3]-px[s2][mx][n2]);
ds=(s1-s2)*(px[s3][mx][n2]-px[s2][mx][n2]);
pc=px[s2][mx][n2]+dn+ds;
pi=pc/px[s][m][n]-1;
i1=(1+r1)*(1+pi)-1;
vv=vv+(re+(1-de)*ve)/(1+i1);
}
vs[s][m][n]=vv/10;
}
}
}
ep=0;
for (s=1;s<11;s++){
for (m=1;m<11;m++){
for (n=10;n<91;n++){
ep=ep+Math.pow(vs[s][m][n]-v2[s][m][n],2);
}
}
}
for (s=1;s<11;s++){
for (m=1;m<11;m++){
for (n=10;n<91;n++){
v2[s][m][n]=vs[s][m][n];
}
}
}
if (ep<bare)t6=1000;
t6=t6+1;
}
for (s=1;s<11;s++){
for (m=1;m<11;m++){
for (n=10;n<91;n++){
price[s][m][n]=pch2-v2[s][m][n]*(pch2-pch1)/(v2[s][m][n]-v1[s][m][n]);
}
}
}
for (s=1;s<11;s++){
for (m=1;m<11;m++){
for (n=10;n<91;n++){
pf=0;
pnon=mc[s]*px[s][m][n]/phi;
pr=px[s][m][n];
pst=Math.pow(pr,1-sig)-gam*Math.pow(pnon,1-sig);
if (pst<0)pf=100;
if (pf>50)pst=pr;
pst=Math.pow(pst/(1-gam),1/(1-sig));
pnew=de*Math.pow(price[s][m][n],1-sig)+(1-de)*Math.pow(pst,1-sig);
pnew=Math.pow(pnew,1/(1-sig));
k1=k[n]+th[m]*Math.pow(k[n],a)*Math.pow(lx[s][m][n],1-a)-cx[s][m][n];
n1=k1/h;
n2=(int)n1;
n3=n2+1;
for (mx=1;mx<11;mx++){
s1=gotos[s][m][n][mx];
s2=(int)s1;
if (s2>9)s2=9;
if (s2<1)s2=1;
s3=s2+1;
dn=(n1-n2)*(px[s2][mx][n3]-px[s2][mx][n2]);
ds=(s1-s2)*(px[s3][mx][n2]-px[s2][mx][n2]);
pr=px[s2][mx][n2]+ds+dn;
pnon=Math.pow(pr,1-sig)-(1-gam)*Math.pow(pnew,1-sig);
pnon=Math.pow(pnon/gam,1/(1-sig));
maki=phi*pnon/pr;
space=(maki-0.85)/0.01;
if (space>10)space=10;
if (space<1)space=1;
if (pf>50)space=s;
eejump[s][m][n][mx]=space;
}
}
}
}
for (s=1;s<11;s++){
for (m=1;m<11;m++){
for (n=10;n<91;n++){
for (mx=1;mx<11;mx++){
gotos[s][m][n][mx]=eejump[s][m][n][mx];
}
}
}
}
ep=0;
for (s=1;s<11;s++){
for (m=1;m<11;m++){
for (n=10;n<91;n++){
ep=ep+Math.pow(cx[s][m][n]-checkc[s][m][n],2);
ep=ep+Math.pow(lx[s][m][n]-checkl[s][m][n],2);
ep=ep+Math.pow(px[s][m][n]-checkp[s][m][n],2);
}
}
}
for (s=1;s<11;s++){
for (m=1;m<11;m++){
for (n=10;n<91;n++){
checkc[s][m][n]=cx[s][m][n];
checkl[s][m][n]=lx[s][m][n];
checkp[s][m][n]=px[s][m][n];
}
}
}
System.out.println(t1);
System.out.println(ep);
if (ep<bare)t1=1000;
t1=t1+1;
}
}
}
最終更新:2009年12月21日 11:46