class dsge{
a:number;
beta:number;
k:number[]=new Array();
lx:any[]=new Array();
cx:any[]=new Array();
px:any[]=new Array();
cps:number[]=new Array();
th:number[]=new Array();
h:number;
faststep():void{
var ks:number;
var ls:number;
var h:number;
var s:number;
var m:number;
for(m=1;m<11;m++){
this.th[m]=0.95+0.01*m;
this.lx[m]=new Array();
this.cx[m]=new Array();
}
ls=(1-this.a)/(2-this.a);
ks=ls*Math.pow((1/ this.beta - 1)/this.a ,1/(this.a - 1));
this.h=2*ks/100;
for(s=1;s<101;s++){
this.k[s]=s*this.h;
}
for(m=1;m<11;m++){
for(s=1;s<101;s++){
this.lx[m][s]=ls;
this.cx[m][s]=this.th[m]*this.f(this.k[s],this.lx[m][s]);
}}
}
f(k1:number,l1:number):number{
var f1:number;
f1=Math.pow(k1,this.a)*Math.pow(l1,1-this.a);
return f1;
}
con(m2:number,n1:number):number{
var c1:number;
var n2:number;
var n3:number;
n2=Math.floor(n1);
n3=n2+1;
c1=this.cx[m2][n2]+(n1-n2)*(this.cx[m2][n3]-this.cx[m2][n2]);
return c1;
}
lab(m2:number,n1:number):number{
var c1:number;
var n2:number;
var n3:number;
n2=Math.floor(n1);
n3=n2+1;
c1=this.lx[m2][n2]+(n1-n2)*(this.lx[m2][n3]-this.lx[m2][n2]);
return c1;
}
don():void{
this.faststep();
var lxs:any[] = new Array();
var cxs:any[] = new Array();
var mode:number;
var s:number;
var m:number;
var mx:number;
var n1:number;
var n2:number;
var n3:number;
var c1:number;
var l1:number;
var k1:number;
var r1:number;
var w1:number;
var uc:number;
var s:number;
var mx:number;
for(m=1;m<11;m++){
lxs[m]=new Array();
cxs[m]=new Array();
}
mode=0;
while(mode<10){
for(m=1;m<11;m++){
for(s=10;s<91;s++){
l1=this.lab(m,s);
c1=this.con(m,s);
k1=this.k[s]+this.f(this.k[s],this.lx[m][s])-c1;
n1=k1/this.h;
uc=0;
for(mx=1;mx<11;mx++){
c1=this.con(mx,n1);
l1=this.lab(mx,n1);
r1=this.th[mx]*this.a*Math.pow(k1,this.a-1)*Math.pow(l1,1-this.a);
uc=uc+(this.beta*(1+r1))/c1;
}
uc=uc/10;
cxs[m][s]=1/uc;
l1=this.lx[m][s];
w1=this.th[m]*(1-this.a)*Math.pow(this.k[s],this.a)*Math.pow(l1,-this.a);
lxs[m][s]=1-this.cx[m][s]/w1;
}}
var ep:number;
ep=0;
for(m=1;m<11;m++){
for(s=10;s<91;s++){
ep=ep+(this.cx[m][s]-cxs[m][s])*(this.cx[m][s]-cxs[m][s])+(this.lx[m][s]-lxs[m][s])*(this.lx[m][s]-lxs[m][s]);
}}
for(m=1;m<11;m++){
for(s=10;s<91;s++){
this.cx[m][s]=cxs[m][s];
this.lx[m][s]=lxs[m][s];
}}
if(ep<0.0001)mode=1000;
mode=mode+1;
}
this.pon();
this.root();
}
pon():void{
var t1:number;
var ms:number;
var n:number;
var m:number;
var ps:any[]=new Array();
for ( n=1; n<11; n++ ){
this.px[n] = new Array();
ps[n] = new Array();
}
var p1,p2:number;
for ( m=1; m<11; m++ ){
for ( n=1; n<101; n++ ){
this.px[m][n] = 1;
}}
ms = 10;
var n1,n2,n3:number;
var t2,t3:number;
var mx:number;
t2 = 0;
while(t2<100){
var k1,pz,pi:number;
var l1,r1,ix,z1:number;
var p3,z2:number;
for ( m=1; m<11; m++ ){
for ( n=10; n<91; n++ ){
p1 = 0.9 * this.px[m][n];
p2 = 1.1 * this.px[m][n];
k1 = this.k[n] + this.th[m]*this.f(this.k[n],this.lx[m][n]) - this.cx[m][n];
n1 = k1 / this.h;
n2 = Math.floor(n1);
n3 = n2 + 1;
z1=0;
for(mx=1;mx<11;mx++){
pz = this.px[mx][n2] + (n1 - n2) * (this.px[mx][n3] - this.px[mx][n2]);
pi = pz / p1 - 1;
l1 = this.lab(mx,n1);
r1 = this.a * this.th[mx]*Math.pow(k1 , this.a - 1) * Math.pow(l1,1 - this.a);
ix = (1 + r1) * (1 + pi) - 1;
z1 = z1+ms * ix / (this.cx[m][n] * (1 + ix)) - p1;
}
z1=z1/10;
t3 = 0;
while(t3<100){
pi = pz / p2 - 1;
ix = (1 + r1) * (1 + pi) - 1;
z2 = ms * ix / (this.cx[m][n] * (1 + ix)) - p2;
p3 = p2 - z2 * (p2 - p1) / (z2 - z1);
p1 = p2;
p2 = p3;
z1 = z2;
if(Math.pow(z2,2) < 0.0001)t3 = 1000;
t3 = t3 + 1;
}
ps[m][n] = p2;
}}
var e:number;
e = 0;
for(m=1;m<11;m++){
for (n=10; n<91; n++ ){
e = e + Math.pow(this.px[m][n] - ps[m][n], 2);
}}
for(m=1;m<11;m++){
for ( n=10; n<91; n++ ){
this.px[m][n] = ps[m][n];
}}
if (e < 0.0001)t2 = 1000;
t2 = t2 + 1;
}
}
root():void{
var maxc:number;
var minc:number;
var t:number;
var cp:number[] = new Array();
var k1:number;
var c1:number;
var n1:number;
var l1:number;
var s:number;
var m:number;
var m1:number;
k1=this.k[40];
var n2,n3:number;
for(t=1;t<101;t++){
n1=k1/this.h;
m1=10*Math.random();
m=Math.floor(m1)+1;
c1=this.con(m,n1);
l1=this.lab(m,n1);
n1 = k1 / this.h;
n2 = Math.floor(n1);
n3 = n2 + 1;
k1=k1+this.th[m]*this.f(k1,l1)-c1;
cp[t]=this.px[m][n2]+(n1-n2)*(this.px[m][n3]-this.px[m][n2]);
}
maxc=0;
for(s=1;s<101;s++){
if(cp[s]>maxc)maxc=cp[s];
}
minc=9999;
for(s=1;s<101;s++){
if(cp[s]<minc)minc=cp[s];
}
for(s=1;s<101;s++){
this.cps[s]=500*(cp[s]-minc)/(maxc-minc);
}
}
}
最終更新:2015年07月30日 15:53