diff --git a/matlab/perfect-foresight-models/perfect_foresight_solver_core.m b/matlab/perfect-foresight-models/perfect_foresight_solver_core.m index da8c8fffca5e319f96a6ae474b37d84acfb1822f..20cf180f9a351b8d2eb9d4899da74cbc279729e5 100644 --- a/matlab/perfect-foresight-models/perfect_foresight_solver_core.m +++ b/matlab/perfect-foresight-models/perfect_foresight_solver_core.m @@ -39,7 +39,7 @@ else oo_ = sim1_purely_forward(options_, M_, oo_); else % General case if options_.stack_solve_algo == 0 - oo_ = sim1(options_, M_, oo_); + oo_ = sim1(M_, options_, oo_); elseif options_.stack_solve_algo == 6 oo_ = sim1_lbj(options_, M_, oo_); elseif options_.stack_solve_algo == 7 diff --git a/matlab/perfect-foresight-models/sim1.m b/matlab/perfect-foresight-models/sim1.m index 4a2ff838b4c9e1d153a7f90c126115803c387215..cf4a6376e509ad1a5bea5ca2684c98c84f7e6f9c 100644 --- a/matlab/perfect-foresight-models/sim1.m +++ b/matlab/perfect-foresight-models/sim1.m @@ -1,4 +1,4 @@ -function oo_ = sim1(options_, M_, oo_) +function oo_ = sim1(M, options, oo) % function sim1 % Performs deterministic simulations with lead or lag on one period. % Uses sparse matrices. @@ -31,7 +31,7 @@ function oo_ = sim1(options_, M_, oo_) % along with Dynare. If not, see <http://www.gnu.org/licenses/>. -verbose = options_.no_homotopy; +verbose = options.no_homotopy && ~ options.nodisplay; endogenous_terminal_period = options.endogenous_terminal_period; vperiods = options.periods*ones(1,options.simul.maxit); @@ -170,11 +170,11 @@ end if stop if any(isnan(res)) || any(isinf(res)) || any(isnan(Y)) || any(isinf(Y)) || ~isreal(res) || ~isreal(Y) - oo_.deterministic_simulation.status = false;% NaN or Inf occurred - oo_.deterministic_simulation.error = err; - oo_.deterministic_simulation.iterations = iter; - oo_.deterministic_simulation.periods = vperiods(1:iter); - oo_.endo_simul = reshape(Y,ny,periods+maximum_lag+M_.maximum_lead); + oo.deterministic_simulation.status = false;% NaN or Inf occurred + oo.deterministic_simulation.error = err; + oo.deterministic_simulation.iterations = iter; + oo.deterministic_simulation.periods = vperiods(1:iter); + oo.endo_simul = reshape(Y,ny,periods+maximum_lag+M.maximum_lead); if verbose skipline(); fprintf('\nSimulation terminated after %d iterations.\n',iter); @@ -194,11 +194,11 @@ if stop fprintf('Max. Abs. Error : %16.13f\n',err); fprintf('Convergency obtained!\n'); end - oo_.deterministic_simulation.status = true;% Convergency obtained. - oo_.deterministic_simulation.error = err; - oo_.deterministic_simulation.iterations = iter; - oo_.deterministic_simulation.periods = vperiods(1:iter); - oo_.endo_simul = reshape(Y,ny,periods+maximum_lag+M_.maximum_lead); + oo.deterministic_simulation.status = true;% Convergency obtained. + oo.deterministic_simulation.error = err; + oo.deterministic_simulation.iterations = iter; + oo.deterministic_simulation.periods = vperiods(1:iter); + oo.endo_simul = reshape(Y,ny,periods+maximum_lag+M.maximum_lead); end elseif ~stop if verbose @@ -208,10 +208,10 @@ elseif ~stop fprintf('Max. Abs. Error : %16.13f\n',err); fprintf('WARNING : maximum number of iterations is reached (modify option maxit).\n') ; end - oo_.deterministic_simulation.status = false;% more iterations are needed. - oo_.deterministic_simulation.error = err; - oo_.deterministic_simulation.periods = vperiods(1:iter); - oo_.deterministic_simulation.iterations = options_.simul.maxit; + oo.deterministic_simulation.status = false;% more iterations are needed. + oo.deterministic_simulation.error = err; + oo.deterministic_simulation.periods = vperiods(1:iter); + oo.deterministic_simulation.iterations = options.simul.maxit; end if verbose