<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8" />
<script src="sample.js"></script>
<script src="jquery.js"></script>
<script src="svgpaint.js"></script>
<script src="dsge.js"></script>
<title>DSGE</title>
</head>
<body onload="sample()">
<p id="memo"></p>
</body>
</html>
var cps = new Array();
var cx = new Array();
var k = new Array();
var h;
function sample(){
a = 0.33;
beta=0.95;
var sub = new dsge();
sub.a =a;
sub.beta = beta;
sub.faststep();
k = sub.k;
h = sub.h;
cx = sub.cx;
var sub2 = new dsge();
sub2.a = a;
sub2.beta = beta;
sub2.cx = cx;
sub2.k = k;
sub2.h = h;
sub2.seek_func();
cx = sub2.cx;
var sub3 = new dsge();
sub3.a = a;
sub3.beta =beta;
sub3.cx = cx;
sub3.k = k;
sub3.h = h;
sub3.root();
cps = sub3.cps;
paint();
}
function paint(){
var sub6=new svgpaint();
str="<svg width=\"700\" height=\"700\">";
for(s=1;s<101;s++){
str=str+sub6.circle(5*s,500-cps[s],5,"blue");
}
str=str+sub6.line(0,0,0,500,2,"black");
str=str+sub6.line(0,500,500,500,2,"black");
str=str+"</svg>";
$("#memo").html(str);
}
class dsge{
a:number;
beta:number;
k:number[]=new Array();
cx:number[]=new Array();
cps:number[]=new Array();
h:number;
faststep():void{
var ks:number;
var h:number;
var s:number;
ks=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(s=1;s<101;s++){
this.cx[s]=this.f(this.k[s]);
}
}
con(n1:number):number{
var c1:number;
var n2:number;
var n3:number;
n2=Math.floor(n1);
n3=n2+1;
c1=this.cx[n2]+(n1-n2)*(this.cx[n3]-this.cx[n2]);
return c1;
}
f(k1:number):number{
var f1:number;
f1=Math.pow(k1,this.a)
return f1;
}
seek_func():void{
var cxs:number[] = new Array();
var mode:number;
var s:number;
var n1:number;
var c1:number;
var k1:number;
var r1:number;
var uc:number;
var s:number;
var h:number;
mode=0;
while(mode<10){
for(s=10;s<91;s++){
c1=this.con(s);
k1=this.k[s]+this.f(this.k[s])-c1;
n1=k1/this.h;
c1=this.con(n1);
r1=this.a*Math.pow(k1,this.a-1);
uc=(this.beta*(1+r1))/c1;
cxs[s]=1/uc;
}
var ep:number;
ep=0;
for(s=10;s<91;s++){
ep=ep+(this.cx[s]-cxs[s])*(this.cx[s]-cxs[s]);
}
for(s=10;s<91;s++){
this.cx[s]=cxs[s];
}
if(ep<0.0001)mode=1000;
mode=mode+1;
}
}
root():void{
var maxc:number;
var minc:number;
var t:number;
var cp:number[] = new Array();
var k1:number;
var h:number;
var c1:number;
var n1:number;
var s:number;
k1=this.k[40];
for(t=1;t<101;t++){
n1=k1/this.h;
c1=this.con(n1);
k1=k1+this.f(k1)-c1;
cp[t]=c1;
}
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月28日 10:45