From 2f2413e64a6fea54daf9d329591c6521286269b5 Mon Sep 17 00:00:00 2001 From: Michel Juillard <michel.juillard@mjui.fr> Date: Sat, 2 Jul 2016 22:02:34 +0200 Subject: [PATCH] addind ep accuracy check --- matlab/ep/ep_accuracy_check.m | 15 +++++++++++++++ matlab/ep/euler_equation_error.m | 33 ++++++++++++++++++++++++++++++++ 2 files changed, 48 insertions(+) create mode 100644 matlab/ep/ep_accuracy_check.m create mode 100644 matlab/ep/euler_equation_error.m diff --git a/matlab/ep/ep_accuracy_check.m b/matlab/ep/ep_accuracy_check.m new file mode 100644 index 0000000000..7287f58d46 --- /dev/null +++ b/matlab/ep/ep_accuracy_check.m @@ -0,0 +1,15 @@ +function e = ep_accuracy_check(M,options,oo) + +endo_simul = oo.endo_simul; +n = size(endo_simul,2); +[initialconditions, innovations, pfm, ep, verbosity, options, oo] = ... + extended_path_initialization([], n-1, [], options, M, oo); + +options.ep.accuracy.stochastic.order = options.ep.stochastic.order; +[nodes,weights,nnodes] = setup_integration_nodes(options.ep.accuracy,pfm); + +e = zeros(M.endo_nbr,n); +for i=1:n + e(:,i) = euler_equation_error(endo_simul(:,i),oo.exo_simul, ... + innovations, M, options,oo,pfm,nodes,weights); +end \ No newline at end of file diff --git a/matlab/ep/euler_equation_error.m b/matlab/ep/euler_equation_error.m new file mode 100644 index 0000000000..16de7a4b16 --- /dev/null +++ b/matlab/ep/euler_equation_error.m @@ -0,0 +1,33 @@ +function e = euler_equation_error(y0,x,innovations,M,options,oo,pfm,nodes,weights) + +dynamic_model = str2func([M.fname '_dynamic']); +ep = options.ep; +[y1, info_convergence, endogenousvariablespaths] = extended_path_core(ep.periods, ... + M.endo_nbr, M.exo_nbr, ... + innovations.positive_var_indx, ... + x, ep.init, y0, oo.steady_state, ... + 0, ep.use_bytecode, ... + ep.stochastic.order, M, ... + pfm, ep.stochastic.algo, ... + ep.solve_algo, ... + ep.stack_solve_algo, ... + options.lmmcp, options, oo, ... + []); +i_pred = find(M.lead_lag_incidence(1,:)); +i_fwrd = find(M.lead_lag_incidence(3,:)); +x1 = [x(2:end,:); zeros(1,M.exo_nbr)]; +for i=1:length(nodes) + x2 = x1; + x2(2,:) = x2(2,:) + nodes(i,:); + [y2, info_convergence, endogenousvariablespaths] = ... + extended_path_core(ep.periods, M.endo_nbr, M.exo_nbr, ... + innovations.positive_var_indx, x2, ep.init, ... + y1, oo.steady_state, 0, ep.use_bytecode, ... + ep.stochastic.order, M, pfm, ep.stochastic.algo, ... + ep.solve_algo, ep.stack_solve_algo, options.lmmcp, ... + options, oo, []); + + z = [y0(i_pred); y1; y2(i_fwrd)]; + res(:,i) = dynamic_model(z,x,M.params,oo.steady_state,2); +end +e = res*weights; \ No newline at end of file -- GitLab