<html>
<head>
<meta charset="utf-8">
<title>HTML5 DSGE 04:貨幣供給一定</title>
<script src="https://www.google.com/jsapi"></script>
<script src="jquery.js"></script>
<script src="dsge.js"></script>
<script src="money.js"></script>
<script src="line.js"></script>
</head>
<body onload="sample()">
<div id="memo" style="width: 800px; height: 500px;">計算中</div>
</body>
</html>
var a,beta,h;
var ep;
var card;
k = new Array(101);
cx = new Array(101);
lx = new Array(101);
cm = new Array(101);
lm = new Array(101);
th =new Array(101);
chcx = new Array(101);
chlx = new Array(101);
chcm = new Array(101);
chlm = new Array(101);
cps = new Array(101);
function faststep(){
var ks,ls;
for(m=1;m<101;m++){
th[m]=0.95+0.001*m;
}
for(m=1;m<101;m++){
cm[m]=0;
lm[m]=0;
}
a=0.33;
beta=0.95;
ls=(1-a)/(2-a);
ks=ls*Math.pow((1/ beta - 1)/a ,1/(a - 1));
h=2*ks/100;
for(s=1;s<101;s++){
k[s]=s*h;
}
for(s=1;s<101;s++){
lx[s]=ls;
cx[s]=Math.pow(k[s],a)*Math.pow(ls,1-a);
}
for(m=1;m<101;m++){
chcm[m]=0;
chlm[m]=0;
}
for(s=10;s<91;s++){
chcx[s]=0;
chlx[s]=0;
}
}
function con(m1,n1){
var c1;
var n2,n3;
n2=Math.floor(n1);
n3=n2+1;
c1=cx[n2]+(n1-n2)*(cx[n3]-cx[n2])+cm[m1];
return c1;
}
function lab(m1,n1){
var c1;
var n2,n3;
n2=Math.floor(n1);
n3=n2+1;
c1=lx[n2]+(n1-n2)*(lx[n3]-lx[n2])+lm[m1];
return c1;
}
function check(){
var s,m;
ep=0;
for(m=1;m<101;m++){
ep=ep+(cm[m]-chcm[m])*(cm[m]-chcm[m])+(lm[m]-chlm[m])*(lm[m]-chlm[m]);
}
for(s=10;s<91;s++){
ep=ep+(cx[s]-chcx[s])*(cx[s]-chcx[s])+(lx[s]-chlx[s])*(lx[s]-chlx[s]);
}
for(m=1;m<101;m++){
chcm[m]=cx[m];
chlm[m]=lx[m];
}
for(s=10;s<91;s++){
chcx[s]=cx[s];
chlx[s]=lx[s];
}
}
function fast(){
lxs = new Array(101);
cxs = new Array(101);
var mode;
var s,m,mx;
var n1,n2,n3;
var uc,c1,l1,k1,r1,w1;
mode=0;
while(mode<10){
m=50;
for(s=10;s<91;s++){
l1=lab(m,s);
c1=con(m,s)
k1=k[s]+th[m]*Math.pow(k[s],a)*Math.pow(l1,1-a)-c1;
n1=k1/h;
uc=0;
for(mx=1;mx<101;mx++){
c1=con(mx,n1);
l1=lab(mx,n1);
r1=th[mx]*a*Math.pow(k1,a-1)*Math.pow(l1,1-a);
uc=uc+(beta*(1+r1))/c1;
}
uc=uc/100;
cxs[s]=1/uc-cm[m];
l1=lx[s]+lm[m];
w1=th[m]*(1-a)*Math.pow(k[s],a)*Math.pow(l1,-a);
lxs[s]=1-cx[s]/w1-lm[m];
}
ep=0;
for(s=10;s<91;s++){
ep=ep+(cx[s]-cxs[s])*(cx[s]-cxs[s])+(lx[s]-lxs[s])*(lx[s]-lxs[s]);
}
for(s=10;s<91;s++){
cx[s]=cxs[s];
lx[s]=lxs[s];
}
if(ep<0.0001)mode=1000;
mode=mode+1;
}
}
function sec(){
lms = new Array(101);
cms = new Array(101);
var mode;
var s,m,mx;
var n1,n2,n3;
var uc,c1,l1,k1,r1,w1;
mode=0;
while(mode<10){
s=50;
for(m=1;m<101;m++){
l1=lab(m,s);
c1=con(m,s)
k1=k[s]+th[m]*Math.pow(k[s],a)*Math.pow(l1,1-a)-c1;
n1=k1/h;
uc=0;
for(mx=1;mx<101;mx++){
c1=con(mx,n1);
l1=lab(mx,n1);
r1=th[mx]*a*Math.pow(k1,a-1)*Math.pow(l1,1-a);
uc=uc+(beta*(1+r1))/c1;
}
uc=uc/100;
cms[m]=1/uc-cx[s];
l1=lx[s]+lm[m];
w1=th[m]*(1-a)*Math.pow(k[s],a)*Math.pow(l1,-a);
c1=cx[s]+cm[m];
lms[m]=1-c1/w1-lx[s];
}
ep=0;
for(m=1;m<101;m++){
ep=ep+(cm[m]-cms[m])*(cm[m]-cms[m])+(lm[m]-lms[m])*(lm[m]-lms[m]);
}
for(m=1;m<101;m++){
cm[m]=cms[m];
lm[m]=lms[m];
}
if(ep<0.0001)mode=1000;
mode=mode+1;
}
}
function dsge(){
var card;
faststep();
card=0;
while(card<100){
fast();
sec();
check();
if(ep<0.0001)card=100;
card=card+1;
}
}
var ms;
px = new Array(101);
pm = new Array(101);
chpx = new Array(101);
chpm = new Array(101);
function sample() {
dsge();
money();
path();
line();
}
c = new Array(101);
function path(){
var maxc,minc;
var t,m1;
k1=k[50];
for(t=1;t<101;t++){
n1=k1/h;
n2=Math.floor(n1);
n3=n2+1;
m1=100*Math.random();
m=Math.floor(m1)+1;
c1=con(m,n1);
l1=lab(m,n1);
k1=k1+th[m]*Math.pow(k1,a)*Math.pow(l1,1-a)-c1;
c[t]=l1;
}
}
function mstartpoint(){
var s;
ms=20;
for(m=1;m<101;m++){
pm[m]=0;
}
for(s=1;s<101;s++){
px[s]=1;
}
for(m=1;m<101;m++){
chpm[m]=0;
}
for(s=10;s<91;s++){
chpx[s]=0;
}
}
function price(m1,n1){
var c1;
var n2,n3;
n2=Math.floor(n1);
n3=n2+1;
c1=px[n2]+(n1-n2)*(px[n3]-px[n2])+pm[m1];
return c1;
}
function mcheck(){
var s,m;
ep=0;
for(m=1;m<101;m++){
ep=ep+(pm[m]-chpm[m])*(pm[m]-chpm[m]);
}
for(s=10;s<91;s++){
ep=ep+(px[s]-chpx[s])*(px[s]-chpx[s]);
}
for(m=1;m<101;m++){
chpm[m]=pm[m];
}
for(s=10;s<91;s++){
chpx[s]=px[s];
}
}
function msec(){
pms = new Array(101);
var mode;
var s,m,mx;
var n1,n2,n3;
var uc,c1,l1,k1,r1,w1;
var p1,p2,p3,z1,z2;
var t1;
mode=0;
while(mode<10){
s=50;
for (m=1;m<101;m++){
p1=1.05*price(m,s);
p2=0.95*price(m,s);
k1=k[s]+th[m]*Math.pow(k[s],a)*Math.pow(lab(m,s),1-a)-con(m,s);
dp=g(p1,k1);
z1=dp-p1;
t1=0;
while (t1<100){
dp=g(p2,k1);
z2=dp-p2;
p3=p2-z2*(p2-p1)/(z2-z1);
z1=z2;
p1=p2;
p2=p3;
if (z2*z2<0.001)t1=1000;
t1=t1+1;
}
pms[m]=p2-px[s];
}
ep=0;
for(m=1;m<101;m++){
ep=ep+(pm[m]-pms[m])*(pm[m]-pms[m]);
}
for(m=1;m<101;m++){
pm[m]=pms[m];
}
if(ep<0.0001)mode=1000;
mode=mode+1;
}
}
function mfast(){
pxs = new Array(101);
var mode;
var s,m,mx;
var n1,n2,n3;
var uc,c1,l1,k1,r1,w1;
var p1,p2,p3,z1,z2;
var t1;
mode=0;
while(mode<10){
m=50;
for (s=10;s<91;s++){
p1=1.05*price(m,s);
p2=0.95*price(m,s);
k1=k[s]+th[m]*Math.pow(k[s],a)*Math.pow(lab(m,s),1-a)-con(m,s);
dp=g(p1,k1);
z1=dp-p1;
t1=0;
while (t1<100){
dp=g(p2,k1);
z2=dp-p2;
p3=p2-z2*(p2-p1)/(z2-z1);
z1=z2;
p1=p2;
p2=p3;
if (z2*z2<0.001)t1=1000;
t1=t1+1;
}
pxs[s]=p2-pm[m];
}
ep=0;
for(s=10;s<91;s++){
ep=ep+(px[s]-pxs[s])*(px[s]-pxs[s]);
}
for(s=10;s<91;s++){
px[s]=pxs[s];
}
if(ep<0.0001)mode=1000;
mode=mode+1;
}
}
function g(pp,k1){
var dp,l1,r1,c1,pc,pi,i1;
var mx;
var n1;
dp=0;
n1=k1/h;
for (mx=1;mx<101;mx++){
l1=lab(mx,n1);
r1=th[mx]*a*Math.pow(k1,a-1)*Math.pow(l1,1-a);
c1=con(mx,n1);
pc=price(mx,n1);
pi=pc/pp-1;
i1=(1+r1)*(1+pi)-1;
dp=dp+i1*ms*beta/(c1*(1+pi));
}
dp=0.01*dp;
return dp;
}
function money(){
var card;
mstartpoint();
card=0;
while(card<100){
mfast();
msec();
mcheck();
if(ep<0.0001)card=100;
card=card+1;
}
}
google.load("visualization", "1", {packages:["corechart"]});
function line() {
var data = new google.visualization.DataTable();
data.addColumn('string', '期間');
data.addColumn('number', '労働供給');
data.addRows(100);
var str;
for(s=1;s<101;s++){
str=""+s+"期";
data.setCell(s-1, 0, str);
data.setCell(s-1, 1, c[s]);
}
var options = {
title: '労働供給の移行経路'
};
var chart = new google.visualization.LineChart(document.getElementById('memo'));
chart.draw(data, options);
}
最終更新:2013年12月25日 21:06