Commit 5dd9c844 authored by Sébastien Villemot's avatar Sébastien Villemot
Browse files

Implement determistic simulation of purely backward models

parent b727aa1b
function sim1_purely_backward
% Performs deterministic simulation of a purely backward model
% Copyright (C) 2012 Dynare Team
%
% This file is part of Dynare.
%
% Dynare is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation, either version 3 of the License, or
% (at your option) any later version.
%
% Dynare is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with Dynare. If not, see <http://www.gnu.org/licenses/>.
global M_ options_ oo_
ny0 = nnz(M_.lead_lag_incidence(2,:)); % Number of variables at current period
nyb = nnz(M_.lead_lag_incidence(1,:)); % Number of variables at previous period
iyb = find(M_.lead_lag_incidence(1,:)>0); % Indices of variables at previous period
if ny0 ~= M_.endo_nbr
error('SIMUL: all endogenous variables must appear at the current period')
end
model_dynamic = str2func([M_.fname,'_dynamic']);
for it = 2:options_.periods+1
yb = oo_.endo_simul(:,it-1); % Values at previous period, also used as guess value for current period
yb1 = yb(iyb);
oo_.endo_simul(:,it) = solve1(model_dynamic, [yb1; yb], 1:M_.endo_nbr, nyb+1:nyb+M_.endo_nbr, 1, 1, oo_.exo_simul, M_.params, oo_.steady_state, it)(nyb+1:nyb+M_.endo_nbr);
end
\ No newline at end of file
......@@ -86,13 +86,13 @@ else
[info, oo_.endo_simul]=bytecode('dynamic');
mexErrCheck('bytecode', info);
else
if M_.maximum_endo_lead == 0
error('SIMUL: purely backward models are not supported')
elseif M_.maximum_endo_lag == 1 && M_.maximum_endo_lead == 1
sim1;
else % For purely forward models
if M_.maximum_endo_lead == 0 % Purely backward model
sim1_purely_backward;
elseif M_.maximum_endo_lag == 0 % Purely forward model
sim1_purely_forward;
end;
else % General case
sim1;
end
end;
end;
......
......@@ -128,6 +128,7 @@ MODFILES = \
ep/rbcii.mod \
ep/linear.mod \
deterministic_simulations/deterministic_model_purely_forward.mod \
deterministic_simulations/deterministic_model_purely_backward.mod \
deterministic_simulations/rbc_det1.mod \
deterministic_simulations/rbc_det2.mod \
deterministic_simulations/rbc_det3.mod \
......
var y;
varexo eps;
parameters rho1 rho2;
rho1 = 0.1;
rho2 = 0.2;
model;
log(y) = rho1*log(y(-1)) + rho2*log(y(-2)) + eps;
end;
initval;
y=1;
eps=0;
end;
steady;
check;
shocks;
var eps;
periods 1:9;
values -0.0104;
end;
simul(periods=100);
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment