Skip to content
Snippets Groups Projects
Commit 7d0f8aa1 authored by Sébastien Villemot's avatar Sébastien Villemot
Browse files

Merge branch 'exogenouslag' into 'master'

Exogenouslag

See merge request !1759
parents 9b946ca0 0391dbbe
Branches
Tags
1 merge request!1759Exogenouslag
Pipeline #4139 passed
......@@ -120,9 +120,13 @@ if max(abs(d1))>options.solve_tolf
error('Jacobian is not evaluated at the steady state!')
end
% current variables
[r0,c0,v0] = find(jacobian(:,jc));
% current and predetermined
[rT,cT,vT] = find(jacobian(:,jpc));
% current and jump variables
[r1,c1,v1] = find(jacobian(:,jcn));
% all endogenous variables
[rr,cc,vv] = find(jacobian(:,jendo));
iv0 = 1:length(v0);
......@@ -155,9 +159,16 @@ for it = (maximum_lag+1):(maximum_lag+periods)
nv = length(vv);
iA(iv+m,:) = [i_rows(rr),i_cols_A(cc),vv];
end
z(jendo) = Y(i_cols);
z(jexog) = transpose(exogenousvariables(it,:));
res(i_rows) = jacobian*z;
if M.maximum_exo_lag > 0
% needed as jacobian for lagged exogenous variables is wrong
% in current version of Dynare
zz = Y(i_cols);
res(i_rows) = dynamicmodel(zz, exogenousvariables, params, steadystate_y, it);
else
z(jendo) = Y(i_cols);
z(jexog) = transpose(exogenousvariables(it,:));
res(i_rows) = jacobian*z;
end
m = m + nv;
i_rows = i_rows + ny;
i_cols = i_cols + ny;
......
......@@ -38,13 +38,13 @@ dynamicmodel = str2func([M.fname,'.dynamic']);
info.status = 1;
for it = 2:options.periods+1
for it = M.maximum_lag + (1:options.periods)
yb = endogenousvariables(:,it-1); % Values at previous period, also used as guess value for current period
yb1 = yb(iyb);
[tmp, check] = solve1(dynamicmodel, [yb1; yb], 1:M.endo_nbr, nyb+1:nyb+M.endo_nbr, ...
1, options.gstep, options.dynatol.f, options.dynatol.x, ...
options.simul.maxit, options.debug, exogenousvariables, ...
M.params, steadystate, it+M.maximum_lag-1);
M.params, steadystate, it);
if check
info.status = 0;
end
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment