analytic derivation: use <fname>_static_params_deriv where needed

time-shift
Michel Juillard 2016-04-01 18:37:21 +02:00
parent 911d2c3d33
commit e446aaddb1
1 changed files with 13 additions and 13 deletions

View File

@ -130,25 +130,25 @@ else
dyssdtheta=zeros(length(oo_.dr.ys),M_.param_nbr);
d2yssdtheta=zeros(length(oo_.dr.ys),M_.param_nbr,M_.param_nbr);
[residual, gg1] = feval([M_.fname,'_static'],oo_.dr.ys, oo_.exo_steady_state', M_.params);
df = feval([M_.fname,'_params_derivs'],yy0, repmat(oo_.exo_steady_state',[M_.maximum_exo_lag+M_.maximum_exo_lead+1]), ...
M_.params, oo_.dr.ys, 1, dyssdtheta, d2yssdtheta);
df = feval([M_.fname,'_static_params_derivs'],oo_.dr.ys, repmat(oo_.exo_steady_state',[M_.maximum_exo_lag+M_.maximum_exo_lead+1]), ...
M_.params);
dyssdtheta = -gg1\df;
if nargout>5,
[residual, gg1, gg2] = feval([M_.fname,'_static'],oo_.dr.ys, oo_.exo_steady_state', M_.params);
[residual, g1, g2, g3] = feval([M_.fname,'_dynamic'],yy0, oo_.exo_steady_state', ...
M_.params, oo_.dr.ys, 1);
[nr, nc]=size(g2);
[nr, nc]=size(gg2);
[df, gp, d2f] = feval([M_.fname,'_params_derivs'],yy0, oo_.exo_steady_state', ...
M_.params, oo_.dr.ys, 1, dyssdtheta*0, d2yssdtheta);
[df, gpx, d2f] = feval([M_.fname,'_static_params_derivs'],oo_.dr.ys, oo_.exo_steady_state', ...
M_.params);%, oo_.dr.ys, 1, dyssdtheta*0, d2yssdtheta);
d2f = get_all_resid_2nd_derivs(d2f,length(oo_.dr.ys),M_.param_nbr);
gpx = zeros(nr,nr,M_.param_nbr);
for j=1:nr,
for i=1:nr,
inx = I == i;
gpx(j,i,:)=sum(gp(j,inx,:),2);
end
end
% $$$ gpx = zeros(nr,nr,M_.param_nbr);
% $$$ for j=1:nr,
% $$$ for i=1:nr,
% $$$ inx = I == i;
% $$$ gpx(j,i,:)=sum(gp(j,inx,:),2);
% $$$ end
% $$$ end
% d2f = d2f(:,indx,indx);
if isempty(find(gg2)),
for j=1:M_.param_nbr,
@ -196,9 +196,9 @@ else
M_.params, oo_.dr.ys, 1, dyssdtheta,d2yssdtheta);
[residual, g1, g2 ] = feval([M_.fname,'_dynamic'],yy0, repmat(oo_.exo_steady_state',[M_.maximum_exo_lag+M_.maximum_exo_lead+1,1]), ...
M_.params, oo_.dr.ys, 1);
[nr, nc]=size(g2);
end
[nr, nc]=size(g2);
nc = sqrt(nc);
Hss = dyssdtheta(oo_.dr.order_var,indx);
dyssdtheta = dyssdtheta(I,:);