0001 function disp_dr(dr,order,var_list)
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027 global M_ options_
0028
0029 nx =size(dr.ghx,2);
0030 nu =size(dr.ghu,2);
0031 if options_.block
0032 k = dr.npred + dr.nboth;
0033 k1 = 1:M_.endo_nbr;
0034 else
0035 k = find(dr.kstate(:,2) <= M_.maximum_lag+1);
0036 klag = dr.kstate(k,[1 2]);
0037 k1 = dr.order_var;
0038 end;
0039
0040 if size(var_list,1) == 0
0041 var_list = M_.endo_names(1:M_.orig_endo_nbr, :);
0042 end
0043
0044 nvar = size(var_list,1);
0045
0046 ivar=zeros(nvar,1);
0047 for i=1:nvar
0048 i_tmp = strmatch(var_list(i,:),M_.endo_names(k1,:),'exact');
0049 if isempty(i_tmp)
0050 disp(var_list(i,:));
0051 error (['One of the variable specified does not exist']) ;
0052 else
0053 ivar(i) = i_tmp;
0054 end
0055 end
0056
0057 disp('POLICY AND TRANSITION FUNCTIONS')
0058
0059 str = ' ';
0060 for i=1:nvar
0061 str = [str sprintf('%16s',M_.endo_names(k1(ivar(i)),:))];
0062 end
0063 disp(str);
0064
0065
0066
0067 str = 'Constant ';
0068 flag = 0;
0069 for i=1:nvar
0070 x = dr.ys(k1(ivar(i)));
0071 if order > 1
0072 x = x + dr.ghs2(ivar(i))/2;
0073 end
0074 if abs(x) > 1e-6
0075 flag = 1;
0076 str = [str sprintf('%16.6f',x)];
0077 else
0078 str = [str ' 0'];
0079 end
0080 end
0081 if flag
0082 disp(str)
0083 end
0084 if order > 1
0085 str = '(correction) ';
0086 flag = 0;
0087 for i=1:nvar
0088 x = dr.ghs2(ivar(i))/2;
0089 if abs(x) > 1e-6
0090 flag = 1;
0091 str = [str sprintf('%16.6f',x)];
0092 else
0093 str = [str ' 0'];
0094 end
0095 end
0096 if flag
0097 disp(str)
0098 end
0099 end
0100
0101
0102
0103 for k=1:nx
0104 flag = 0;
0105 if options_.block
0106 str1 = subst_auxvar(dr.state_var(k),-1);
0107 else
0108 str1 = subst_auxvar(k1(klag(k,1)),klag(k,2)-M_.maximum_lag-2);
0109 end;
0110 str = sprintf('%-20s',str1);
0111 for i=1:nvar
0112 x = dr.ghx(ivar(i),k);
0113 if abs(x) > 1e-6
0114 flag = 1;
0115 str = [str sprintf('%16.6f',x)];
0116 else
0117 str = [str ' 0'];
0118 end
0119 end
0120 if flag
0121 disp(str)
0122 end
0123 end
0124
0125
0126
0127 for k=1:nu
0128 flag = 0;
0129 str = sprintf('%-20s',M_.exo_names(k,:));
0130 for i=1:nvar
0131 x = dr.ghu(ivar(i),k);
0132 if abs(x) > 1e-6
0133 flag = 1;
0134 str = [str sprintf('%16.6f',x)];
0135 else
0136 str = [str ' 0'];
0137 end
0138 end
0139 if flag
0140 disp(str)
0141 end
0142 end
0143
0144 if order > 1
0145
0146 for k = 1:nx
0147 for j = 1:k
0148 flag = 0;
0149 str1 = sprintf('%s,%s',subst_auxvar(k1(klag(k,1)),klag(k,2)-M_.maximum_lag-2), ...
0150 subst_auxvar(k1(klag(j,1)),klag(j,2)-M_.maximum_lag-2));
0151 str = sprintf('%-20s',str1);
0152 for i=1:nvar
0153 if k == j
0154 x = dr.ghxx(ivar(i),(k-1)*nx+j)/2;
0155 else
0156 x = dr.ghxx(ivar(i),(k-1)*nx+j);
0157 end
0158 if abs(x) > 1e-6
0159 flag = 1;
0160 str = [str sprintf('%16.6f',x)];
0161 else
0162 str = [str ' 0'];
0163 end
0164 end
0165 if flag
0166 disp(str)
0167 end
0168 end
0169 end
0170
0171
0172
0173 for k = 1:nu
0174 for j = 1:k
0175 flag = 0;
0176 str = sprintf('%-20s',[M_.exo_names(k,:) ',' M_.exo_names(j,:)] );
0177 for i=1:nvar
0178 if k == j
0179 x = dr.ghuu(ivar(i),(k-1)*nu+j)/2;
0180 else
0181 x = dr.ghuu(ivar(i),(k-1)*nu+j);
0182 end
0183 if abs(x) > 1e-6
0184 flag = 1;
0185 str = [str sprintf('%16.6f',x)];
0186 else
0187 str = [str ' 0'];
0188 end
0189 end
0190 if flag
0191 disp(str)
0192 end
0193 end
0194 end
0195
0196
0197
0198 for k = 1:nx
0199 for j = 1:nu
0200 flag = 0;
0201 str1 = sprintf('%s,%s',subst_auxvar(k1(klag(k,1)),klag(k,2)-M_.maximum_lag-2), ...
0202 M_.exo_names(j,:));
0203 str = sprintf('%-20s',str1);
0204 for i=1:nvar
0205 x = dr.ghxu(ivar(i),(k-1)*nu+j);
0206 if abs(x) > 1e-6
0207 flag = 1;
0208 str = [str sprintf('%16.6f',x)];
0209 else
0210 str = [str ' 0'];
0211 end
0212 end
0213 if flag
0214 disp(str)
0215 end
0216 end
0217 end
0218 end
0219 end
0220
0221
0222
0223
0224
0225 function str = subst_auxvar(aux_index, aux_lead_lag)
0226 global M_
0227
0228 if aux_index <= M_.orig_endo_nbr
0229 str = sprintf('%s(%d)', deblank(M_.endo_names(aux_index,:)), aux_lead_lag);
0230 return
0231 end
0232 for i = 1:length(M_.aux_vars)
0233 if M_.aux_vars(i).endo_index == aux_index
0234 switch M_.aux_vars(i).type
0235 case 1
0236 orig_name = deblank(M_.endo_names(M_.aux_vars(i).orig_index, :));
0237 case 3
0238 orig_name = deblank(M_.exo_names(M_.aux_vars(i).orig_index, :));
0239 case 4
0240 str = sprintf('EXPECTATION(%d)(...)', aux_lead_lag);
0241 return
0242 case 6
0243 str = sprintf('%s(%d)', ...
0244 deblank(M_.endo_names(M_.aux_vars(i).endo_index, :)),aux_lead_lag);
0245 return
0246 otherwise
0247 error(sprintf('Invalid auxiliary type: %s', M_.endo_names(aux_index, :)))
0248 end
0249 str = sprintf('%s(%d)', orig_name, M_.aux_vars(i).orig_lead_lag+aux_lead_lag);
0250 return
0251 end
0252 end
0253 error(sprintf('Could not find aux var: %s', M_.endo_names(aux_index, :)))
0254 end