Fixes to handle properly implicit derivation when STEADY_STATE syntax is applied
parent
1ec1ea874a
commit
8352873e06
|
@ -30,15 +30,10 @@ yy0=oo_.dr.ys(I);
|
|||
% for j=1:size(M_.lead_lag_incidence,1);
|
||||
% yy0 = [ yy0; oo_.dr.ys(find(M_.lead_lag_incidence(j,:)))];
|
||||
% end
|
||||
[df, gp] = feval([M_.fname,'_params_derivs'],yy0, oo_.exo_steady_state', ...
|
||||
M_.params, oo_.dr.ys, 1);
|
||||
[residual, g1 ] = feval([M_.fname,'_dynamic'],yy0, oo_.exo_steady_state', ...
|
||||
M_.params, oo_.dr.ys, 1);
|
||||
|
||||
[residual, g1, g2 ] = feval([M_.fname,'_dynamic'],yy0, oo_.exo_steady_state', ...
|
||||
M_.params, oo_.dr.ys, 1);
|
||||
dyssdtheta=zeros(length(oo_.dr.ys),M_.param_nbr);
|
||||
df = feval([M_.fname,'_params_derivs'],yy0, oo_.exo_steady_state', ...
|
||||
M_.params, oo_.dr.ys, 1, dyssdtheta);
|
||||
[residual, gg1] = feval([M_.fname,'_static'],oo_.dr.ys, oo_.exo_steady_state', M_.params);
|
||||
% df = feval([M_.fname,'_model_derivs'],yy0, oo_.exo_steady_state', M_.params, 1);
|
||||
dyssdtheta = -gg1\df;
|
||||
if any(any(isnan(dyssdtheta))),
|
||||
[U,T] = schur(gg1);
|
||||
|
@ -51,6 +46,10 @@ if any(any(isnan(dyssdtheta))),
|
|||
T = T(k+1:end,k+1:end);
|
||||
dyssdtheta = -U(:,k+1:end)*(T\U(:,k+1:end)')*df;
|
||||
end
|
||||
[df, gp] = feval([M_.fname,'_params_derivs'],yy0, oo_.exo_steady_state', ...
|
||||
M_.params, oo_.dr.ys, 1, dyssdtheta);
|
||||
[residual, g1, g2 ] = feval([M_.fname,'_dynamic'],yy0, oo_.exo_steady_state', ...
|
||||
M_.params, oo_.dr.ys, 1);
|
||||
|
||||
Hss = dyssdtheta(oo_.dr.order_var,indx);
|
||||
dyssdtheta = dyssdtheta(I,:);
|
||||
|
|
|
@ -36,14 +36,14 @@ if kronflag == -1,
|
|||
assignin('base','M_', M_);
|
||||
assignin('base','oo_', oo_);
|
||||
else
|
||||
[H, dA, dOm, dYss, gp] = getH(A, B, M_,oo_,kronflag,indx,indexo);
|
||||
[H, dA, dOm, dYss, gp] = getH(A, B, M_,oo_,kronflag,indx,indexo);
|
||||
gp = reshape(gp,size(gp,1)*size(gp,2),size(gp,3));
|
||||
gp = [dYss; gp];
|
||||
% if isempty(H),
|
||||
% JJ = [];
|
||||
% GAM = [];
|
||||
% return
|
||||
% end
|
||||
% end
|
||||
m = length(A);
|
||||
GAM = lyapunov_symm(A,B*M_.Sigma_e*B',options_.qz_criterium,options_.lyapunov_complex_threshold,1);
|
||||
k = find(abs(GAM) < 1e-12);
|
||||
|
@ -113,27 +113,27 @@ else
|
|||
|
||||
JJ = [ [zeros(length(mf),nexo) dYss(mf,:)]; JJ];
|
||||
|
||||
if nargout >2,
|
||||
% sy=sy(mf,mf);
|
||||
options_.ar=nlags;
|
||||
[GAM,stationary_vars] = th_autocovariances(oo_.dr,oo_.dr.order_var(mf),M_,options_);
|
||||
sy=sqrt(diag(GAM{1}));
|
||||
sy=sy*sy';
|
||||
if useautocorr,
|
||||
sy=sy-diag(diag(sy))+eye(length(mf));
|
||||
GAM{1}=GAM{1}./sy;
|
||||
else
|
||||
for j=1:nlags,
|
||||
GAM{j+1}=GAM{j+1}.*sy;
|
||||
end
|
||||
end
|
||||
gam = dyn_vech(GAM{1});
|
||||
end
|
||||
if nargout >2,
|
||||
% sy=sy(mf,mf);
|
||||
options_.ar=nlags;
|
||||
[GAM,stationary_vars] = th_autocovariances(oo_.dr,oo_.dr.order_var(mf),M_,options_);
|
||||
sy=sqrt(diag(GAM{1}));
|
||||
sy=sy*sy';
|
||||
if useautocorr,
|
||||
sy=sy-diag(diag(sy))+eye(length(mf));
|
||||
GAM{1}=GAM{1}./sy;
|
||||
else
|
||||
for j=1:nlags,
|
||||
gam = [gam; vec(GAM{j+1})];
|
||||
GAM{j+1}=GAM{j+1}.*sy;
|
||||
end
|
||||
end
|
||||
gam = [oo_.dr.ys(oo_.dr.order_var(mf)); gam];
|
||||
gam = dyn_vech(GAM{1});
|
||||
for j=1:nlags,
|
||||
gam = [gam; vec(GAM{j+1})];
|
||||
end
|
||||
end
|
||||
gam = [oo_.dr.ys(oo_.dr.order_var(mf)); gam];
|
||||
|
||||
% if useautocorr,
|
||||
warning('on','MATLAB:divideByZero')
|
||||
|
|
Loading…
Reference in New Issue