201 lines
4.0 KiB
Scilab
201 lines
4.0 KiB
Scilab
function []=disp_dr(dr,order,var_list)
|
|
// Copyright (C) 2001 Michel Juillard
|
|
//
|
|
nx = size(dr('ghx'),2);
|
|
nu = size(dr('ghu'),2);
|
|
|
|
k1 = dr('order_var');
|
|
kstate = dr('kstate');
|
|
k = find(kstate(:,2) <= ykmin_+1);
|
|
klag = kstate(k,[1 2]);
|
|
|
|
|
|
nvar = size(var_list,1);
|
|
if nvar == 0 then
|
|
nvar = endo_nbr;
|
|
ivar = [1:nvar];
|
|
else
|
|
ivar=zeros(nvar,1);
|
|
for i=1:nvar
|
|
i_tmp = grep_exact(lgy_(k1,:),var_list(i,:));
|
|
if isempty(i_tmp) then
|
|
dyn_disp(var_list(i,:));
|
|
error (['One of the variable specified does not exist']) ;
|
|
else
|
|
ivar(i) = i_tmp;
|
|
end
|
|
end
|
|
end
|
|
|
|
dyn_disp('POLICY AND TRANSITION FUNCTIONS');
|
|
// variable names
|
|
str = ' ';
|
|
for i = 1:nvar
|
|
str = str+msprintf('%16s',lgy_(k1(ivar(i))));
|
|
end
|
|
mprintf('%s\n',str);
|
|
mfprintf(fh_log,'%s\n',str);
|
|
//
|
|
// constant
|
|
//
|
|
str = 'Constant ';
|
|
flag = 0;
|
|
for i = 1:nvar
|
|
x = dr.ys(k1(ivar(i)));
|
|
if order == 2 then
|
|
x= x+dr.ghs2(ivar(i))/2;
|
|
end
|
|
if abs(x) > .000001 then
|
|
flag = 1;
|
|
str = str+msprintf('%16.6f',x);
|
|
else
|
|
str = str+' 0';
|
|
end
|
|
end
|
|
if flag then
|
|
mprintf('%s\n',str);
|
|
mfprintf(fh_log,'%s\n',str);
|
|
end
|
|
if order == 2 then
|
|
str = '(Correction) ';
|
|
flag = 0;
|
|
for i = 1:nvar
|
|
x = dr.ghs2(ivar(i))/2;
|
|
if abs(x) > 1e-6 then
|
|
flag = 1;
|
|
str = str+msprintf('%16.6f',x)
|
|
else
|
|
str = str+' 0';
|
|
end
|
|
end
|
|
if flag then
|
|
mprintf('%s\n',str);
|
|
mfprintf(fh_log,'%s\n',str);
|
|
end
|
|
end
|
|
//
|
|
// ghx
|
|
//
|
|
for k = 1:nx
|
|
flag = 0;
|
|
str1 = msprintf('%s(%d)',lgy_(k1(klag(k,1))),klag(k,2)-ykmin_-2);
|
|
str = msprintf('%-20s',str1);
|
|
for i = 1:nvar
|
|
x = dr.ghx(ivar(i),k);
|
|
if abs(x)>.000001 then
|
|
flag = 1;
|
|
str = str+msprintf('%16.6f',x);
|
|
else
|
|
str = str+' 0';
|
|
end
|
|
end
|
|
if flag then
|
|
mprintf('%s\n',str);
|
|
mfprintf(fh_log,'%s\n',str);
|
|
end
|
|
end
|
|
//
|
|
// ghu
|
|
//
|
|
for k = 1:nu
|
|
flag = 0;
|
|
str = msprintf('%-20s',lgx_(k));
|
|
for i = 1:nvar
|
|
x = dr('ghu')(ivar(i),k);
|
|
if abs(x)>.000001 then
|
|
flag = 1;
|
|
str = str+msprintf('%16.6f',x);
|
|
else
|
|
str = str+' 0';
|
|
end
|
|
end
|
|
if flag then
|
|
mprintf('%s\n',str);
|
|
mfprintf(fh_log,'%s\n',str);
|
|
end
|
|
end
|
|
|
|
if order>1 then
|
|
// ghxx
|
|
for k = 1:nx
|
|
for j = 1:k
|
|
flag = 0;
|
|
str = msprintf('%-20s',lgy_(k1(dr('nstatic')+k),:)+'(-1)'+lgy_(k1(dr('nstatic')+j),:)+'(-1)');
|
|
for i = 1:endo_nbr
|
|
if k==j then
|
|
x = dr.ghxx(i,(k-1)*nx+j)/2;
|
|
else
|
|
x = dr.ghxx(i,(k-1)*nx+j);
|
|
end
|
|
if abs(x)>.000001 then
|
|
flag = 1;
|
|
str = str+msprintf('%16.6f',x);
|
|
else
|
|
str = str+' 0';
|
|
end
|
|
end
|
|
if flag then
|
|
mprintf('%s\n',str);
|
|
mfprintf(fh_log,'%s\n',str);
|
|
end
|
|
end
|
|
end
|
|
//
|
|
// ghuu
|
|
//
|
|
for k = 1:nu
|
|
for j = 1:k
|
|
flag = 0;
|
|
str = msprintf('%-20s',lgx_(k,:)+' '+lgx_(j,:));
|
|
for i = 1:endo_nbr
|
|
if k==j then
|
|
x = dr.ghuu(i,(k-1)*nu+j)/2;
|
|
else
|
|
x = dr.ghuu(i,(k-1)*nu+j);
|
|
end
|
|
if abs(x)>.000001 then
|
|
flag = 1;
|
|
str = str+msprintf('%16.6f',x);
|
|
else
|
|
str = str+' 0';
|
|
end
|
|
end
|
|
if flag then
|
|
mprintf('%s\n',str);
|
|
mfprintf(fh_log,'%s\n',str);
|
|
end
|
|
end
|
|
end
|
|
//
|
|
// ghxu
|
|
//
|
|
for k = 1:nx
|
|
for j = 1:nu
|
|
flag = 0;
|
|
str = msprintf('%-20s',lgy_(k1(dr('nstatic')+k),:)+'(-1) '+lgx_(j,:));
|
|
for i = 1:endo_nbr
|
|
x = dr.ghxu(i,(k-1)*nu+j);
|
|
if abs(x)>.000001 then
|
|
flag = 1;
|
|
str = str+msprintf('%16.6f',x);
|
|
else
|
|
str = str+' 0';
|
|
end
|
|
end
|
|
if flag then
|
|
mprintf('%s\n',str);
|
|
mfprintf(fh_log,'%s\n',str);
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
// 01/08/2001 MJ added test for order in printing quadratic terms
|
|
// 02/21/2001 MJ pass all variable names through deblank()
|
|
// 02/21/2001 MJ changed from f to g format to write numbers
|
|
// 02/21/2003 MJ improved display format
|
|
|
|
|
|
|
|
|