diff --git a/matlab/ep/ep_problem_1.m b/matlab/ep/ep_problem_1.m index 51c7fb1a80e8b955b90629151913c26a082b9fa8..35757c83af6c05b28e4c52345bf54e3cc5781cf3 100644 --- a/matlab/ep/ep_problem_1.m +++ b/matlab/ep/ep_problem_1.m @@ -43,7 +43,7 @@ for i = 1:order+1 end if i <= order for k=1:nnodes - if hybrid_order==2 && i==order + if hybrid_order && i==order z = [Y(i_cols_p,i_w_p); Y(i_cols_s,j); Y(i_cols_f,(j-1)*nnodes+k)+h_correction(i_hc)]; diff --git a/matlab/ep/ep_problem_2.m b/matlab/ep/ep_problem_2.m index 2fda1838bc7d4532764ea9a53bd0d0721de732de..26ba78895cc1de7b74448d0c5cb0e45b94422ca3 100644 --- a/matlab/ep/ep_problem_2.m +++ b/matlab/ep/ep_problem_2.m @@ -79,7 +79,7 @@ for i = 1:order+1 else k1 = (nnodes-1)*(i-1)+k; end - if hybrid_order == 2 && (k > 1 || i == order) + if hybrid_order && (k > 1 || i == order) z = [Y(i_cols_p,1); Y(i_cols_s,1); Y(i_cols_f,k1)+h_correction(i_hc)]; diff --git a/matlab/ep/extended_path_initialization.m b/matlab/ep/extended_path_initialization.m index 90828dc4b6895472bf0af0170f4dae43b2e37d05..63197f3824a83df1ac5614c08dd89515416d6526 100644 --- a/matlab/ep/extended_path_initialization.m +++ b/matlab/ep/extended_path_initialization.m @@ -100,7 +100,11 @@ end % hybrid correction pfm.hybrid_order = ep.stochastic.hybrid_order; -if pfm.hybrid_order +if pfm.hybrid_order==1 + warning('extended_path:: hybrid=1 is equivalent to hybrid=0 (option value must be an integer greater than 1 to be effective).') +end + +if pfm.hybrid_order>1 oo_.dr = set_state_space(oo_.dr, M_); options = options_; options.order = pfm.hybrid_order; diff --git a/matlab/ep/solve_stochastic_perfect_foresight_model_0.m b/matlab/ep/solve_stochastic_perfect_foresight_model_0.m index efdaf624721374a5855595a6c003ee0882145621..9196ea79bceff70a92f1d866823c964cafefa689 100644 --- a/matlab/ep/solve_stochastic_perfect_foresight_model_0.m +++ b/matlab/ep/solve_stochastic_perfect_foresight_model_0.m @@ -62,18 +62,18 @@ if update_pfm_struct pfm.nodes = nodes; pfm.weights = weights; - hybrid_order = pfm.hybrid_order; - dr = pfm.dr; - if hybrid_order > 0 - if hybrid_order == 2 - h_correction = 0.5*dr.ghs2(dr.inv_order_var); + if pfm.hybrid_order>0 + if pfm.hybrid_order==2 + pfm.h_correction = 0.5*pfm.dr.ghs2(dr.inv_order_var); + elseif pfm.hybrid_order>2 + pfm.h_correction = pfm.dr.g_0(pfm.dr.inv_order_var); + else + pfm.h_correction = 0; end else - h_correction = 0; + pfm.h_correction = 0; end - pfm.h_correction = h_correction; - z = endo_simul(lead_lag_incidence_t(:)>0); [~, jacobian] = dynamic_model(z, exo_simul, pfm.params, pfm.steady_state, 2); @@ -134,7 +134,6 @@ if update_pfm_struct pfm.order = order; pfm.world_nbr = world_nbr; - pfm.hybrid_order = hybrid_order; pfm.i_cols_1 = i_cols_1; pfm.i_cols_h = i_cols_j; pfm.icA = icA; diff --git a/matlab/ep/solve_stochastic_perfect_foresight_model_1.m b/matlab/ep/solve_stochastic_perfect_foresight_model_1.m index 19eb0673804beb1101b3a5fc3c0a15112e8694de..d9f0deda766f7a5045265b7a0140de804e13b9ec 100644 --- a/matlab/ep/solve_stochastic_perfect_foresight_model_1.m +++ b/matlab/ep/solve_stochastic_perfect_foresight_model_1.m @@ -60,6 +60,10 @@ if update_pfm_struct if pfm.hybrid_order > 0 if pfm.hybrid_order == 2 pfm.h_correction = 0.5*pfm.dr.ghs2(pfm.dr.inv_order_var); + elseif pfm.hybrid_order>2 + pfm.h_correction = pfm.dr.g_0(pfm.dr.inv_order_var); + else + pfm.h_correction = 0; end else pfm.h_correction = 0;