From 0147faad5f03cc641fd22d3e5733d4862964ef0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Villemot?= <sebastien@dynare.org> Date: Fri, 25 Feb 2022 16:32:16 +0100 Subject: [PATCH] Fix stack_solve_algo=1 without bytecode, on solve two boundaries simple/complete blocks The result for the last simulation period was wrong. --- matlab/solve_two_boundaries.m | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/matlab/solve_two_boundaries.m b/matlab/solve_two_boundaries.m index 20e69c1b03..c6c4a1c710 100644 --- a/matlab/solve_two_boundaries.m +++ b/matlab/solve_two_boundaries.m @@ -47,7 +47,7 @@ function [y, T, oo]= solve_two_boundaries(fname, y, x, params, steady_state, T, % none. % -% Copyright (C) 1996-2020 Dynare Team +% Copyright (C) 1996-2022 Dynare Team % % This file is part of Dynare. % @@ -187,8 +187,8 @@ while ~(cvg==1 || iter>maxit_) B1_inv = inv(g1a(Elem, Elem)); if (t < periods) S1 = B1_inv * g1a(Elem, Elem_1); + g1a(Elem, Elem_1) = S1; end - g1a(Elem, Elem_1) = S1; b(Elem) = B1_inv * b(Elem); g1a(Elem, Elem) = ones(Blck_size, Blck_size); if t<periods @@ -203,6 +203,7 @@ while ~(cvg==1 || iter>maxit_) dx = ya; dx(y_Elem) = za - ya(y_Elem); ya(y_Elem) = ya(y_Elem) + lambda*dx(y_Elem); + y(y_index, y_kmin + periods) = ya(y_Elem); for t=periods-1:-1:1 first_elem = (t-1)*Blck_size+1; last_elem = t*Blck_size; -- GitLab