From 6bc9b8840198ff830478525d2cd73d0fc65724ee Mon Sep 17 00:00:00 2001 From: Johannes Pfeifer Date: Sun, 2 Nov 2014 19:34:55 +0100 Subject: [PATCH] Add reordering of second order derivatives to stochastic_solvers.m It was erroneously completely moved to dyn_second_order_solver.m in the 4.3 branch when cleaning up dr1.m. Without this reordering, decision rules for exogenous deterministic variables at second order are wrong --- matlab/stochastic_solvers.m | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/matlab/stochastic_solvers.m b/matlab/stochastic_solvers.m index 8f22a025c..64b9b2c81 100644 --- a/matlab/stochastic_solvers.m +++ b/matlab/stochastic_solvers.m @@ -241,9 +241,19 @@ else dr = dyn_second_order_solver(jacobia_,hessian1,dr,M_,... options_.threads.kronecker.A_times_B_kronecker_C,... options_.threads.kronecker.sparse_hessian_times_B_kronecker_C); + + % reordering second order derivatives, used for deterministic + % variables below + k1 = nonzeros(M_.lead_lag_incidence(:,order_var)'); + kk = [k1; length(k1)+(1:M_.exo_nbr+M_.exo_det_nbr)']; + nk = size(kk,1); + kk1 = reshape([1:nk^2],nk,nk); + kk1 = kk1(kk,kk); + hessian1 = hessian1(:,kk1(:)); end end + %exogenous deterministic variables if M_.exo_det_nbr > 0 gx = dr.gx;