diff --git a/matlab/ep/ep_problem_0.m b/matlab/ep/ep_problem_0.m new file mode 100644 index 0000000000000000000000000000000000000000..5ec81b475fd6899f67e666b24aefe01a06c37e2b --- /dev/null +++ b/matlab/ep/ep_problem_0.m @@ -0,0 +1,122 @@ +function [res, A, info] = ep_problem_0(y, x, pfm) + +info = false; + +params = pfm.params; +steady_state = pfm.steady_state; +ny = pfm.ny; +periods = pfm.periods; +dynamic_model = pfm.dynamic_model; +lead_lag_incidence = pfm.lead_lag_incidence; +i_cols_1 = pfm.i_cols_1; +i_cols_j = pfm.i_cols_j; +i_cols_T = pfm.i_cols_T; +order = pfm.order; +hybrid_order = pfm.hybrid_order; +h_correction = pfm.h_correction; +nodes = pfm.nodes; +weights = pfm.weights; +nnodes = pfm.nnodes; + +i_cols_p = pfm.i_cols_p; +i_cols_s = pfm.i_cols_s; +i_cols_f = pfm.i_cols_f; +i_rows = pfm.i_rows; + +i_cols_Ap = pfm.i_cols_Ap; +i_cols_As = pfm.i_cols_As; +i_cols_Af = pfm.i_cols_Af; +i_hc = pfm.i_hc; + +Y = pfm.Y; +Y(pfm.i_upd_y) = y; + +A1 = pfm.A1; +res = pfm.res; + +for i = 1:order+1 + i_w_p = 1; + for j = 1:nnodes^(i-1) + innovation = x; + if i > 1 + innovation(i+1,:) = nodes(mod(j-1,nnodes)+1,:); + end + if i <= order + for k=1:nnodes + 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)]; + else + z = [Y(i_cols_p,i_w_p); + Y(i_cols_s,j); + Y(i_cols_f,(j-1)*nnodes+k)]; + end + + [d1,jacobian] = dynamic_model(z,innovation,params,steady_state,i+1); + if i == 1 + % in first period we don't keep track of + % predetermined variables + i_cols_A = [i_cols_As - ny; i_cols_Af]; + A1(i_rows,i_cols_A) = A1(i_rows,i_cols_A) + weights(k)*jacobian(:,i_cols_1); + else + i_cols_A = [i_cols_Ap; i_cols_As; i_cols_Af]; + A1(i_rows,i_cols_A) = A1(i_rows,i_cols_A) + weights(k)*jacobian(:,i_cols_j); + end + res(:,i,j) = res(:,i,j)+weights(k)*d1; + i_cols_Af = i_cols_Af + ny; + end + else + z = [Y(i_cols_p,i_w_p); + Y(i_cols_s,j); + Y(i_cols_f,j)]; + [d1,jacobian] = dynamic_model(z,innovation,params,steady_state,i+1); + if i == 1 + % in first period we don't keep track of + % predetermined variables + i_cols_A = [i_cols_As - ny; i_cols_Af]; + A1(i_rows,i_cols_A) = jacobian(:,i_cols_1); + else + i_cols_A = [i_cols_Ap; i_cols_As; i_cols_Af]; + A1(i_rows,i_cols_A) = jacobian(:,i_cols_j); + end + res(:,i,j) = d1; + i_cols_Af = i_cols_Af + ny; + end + i_rows = i_rows + ny; + if mod(j,nnodes) == 0 + i_w_p = i_w_p + 1; + end + if i > 1 + if mod(j,nnodes) == 0 + i_cols_Ap = i_cols_Ap + ny; + end + i_cols_As = i_cols_As + ny; + end + end + i_cols_p = i_cols_p + ny; + i_cols_s = i_cols_s + ny; + i_cols_f = i_cols_f + ny; +end +nzA = cell(periods,pfm.world_nbr); +for j=1:pfm.world_nbr + i_rows_y = find(lead_lag_incidence')+(order+1)*ny; + offset_c = ny*(sum(nnodes.^(0:order-1),2)+j-1); + offset_r = (j-1)*ny; + for i=order+2:periods + [d1,jacobian] = dynamic_model(Y(i_rows_y,j), x, params, steady_state, i+1); + if i == periods + [ir,ic,v] = find(jacobian(:,i_cols_T)); + else + [ir,ic,v] = find(jacobian(:,i_cols_j)); + end + nzA{i,j} = [offset_r+ir,offset_c+pfm.icA(ic), v]'; + res(:,i,j) = d1; + i_rows_y = i_rows_y + ny; + offset_c = offset_c + pfm.world_nbr*ny; + offset_r = offset_r + pfm.world_nbr*ny; + end +end +A2 = [nzA{:}]'; +A = [A1; sparse(A2(:,1),A2(:,2),A2(:,3),ny*(periods-order-1)*pfm.world_nbr,pfm.dimension)]; +res = res(pfm.i_upd_r); diff --git a/matlab/ep/ep_problem_1.m b/matlab/ep/ep_problem_1.m index 35757c83af6c05b28e4c52345bf54e3cc5781cf3..9579e7dbf1aca75b9f5bd8c4290b386b6a2138cd 100644 --- a/matlab/ep/ep_problem_1.m +++ b/matlab/ep/ep_problem_1.m @@ -1,122 +1,196 @@ -function [res, A, info] = ep_problem_1(y, x, pfm) +function [res,A,info] = ep_problem_1(y, x, pfm) info = false; +A = []; +dynamic_model = pfm.dynamic_model; +ny = pfm.ny; params = pfm.params; steady_state = pfm.steady_state; -ny = pfm.ny; +order = pfm.stochastic_order; +nodes = pfm.nodes; +nnodes = pfm.nnodes; +weights = pfm.weights; +h_correction = pfm.h_correction; +dimension = pfm.dimension; +world_nbr = pfm.world_nbr; +nnzA = pfm.nnzA; periods = pfm.periods; -dynamic_model = pfm.dynamic_model; -lead_lag_incidence = pfm.lead_lag_incidence; +i_rows = pfm.i_rows'; +i_cols = pfm.i_cols; +nyp = pfm.nyp; +nyf = pfm.nyf; +hybrid_order = pfm.hybrid_order; i_cols_1 = pfm.i_cols_1; i_cols_j = pfm.i_cols_j; +icA = pfm.icA; i_cols_T = pfm.i_cols_T; -order = pfm.order; -hybrid_order = pfm.hybrid_order; -h_correction = pfm.h_correction; -nodes = pfm.nodes; -weights = pfm.weights; -nnodes = pfm.nnodes; +eq_index = pfm.eq_index; -i_cols_p = pfm.i_cols_p; -i_cols_s = pfm.i_cols_s; -i_cols_f = pfm.i_cols_f; -i_rows = pfm.i_rows; -i_cols_Ap = pfm.i_cols_Ap; -i_cols_As = pfm.i_cols_As; -i_cols_Af = pfm.i_cols_Af; -i_hc = pfm.i_hc; -Y = pfm.Y; -Y(pfm.i_upd_y) = y; +i_cols_p = i_cols(1:nyp); +i_cols_s = i_cols(nyp+(1:ny)); +i_cols_f = i_cols(nyp+ny+(1:nyf)); +i_cols_Ap0 = i_cols_p; +i_cols_As = i_cols_s; +i_cols_Af0 = i_cols_f - ny; +i_hc = i_cols_f - 2*ny; -A1 = pfm.A1; -res = pfm.res; +nzA = cell(periods,world_nbr); +res = zeros(ny,periods,world_nbr); +Y = zeros(ny*(periods+2),world_nbr); +Y(1:ny,1) = pfm.y0; +Y(end-ny+1:end,:) = repmat(steady_state,1,world_nbr); +Y(pfm.i_upd_y) = y; +offset_r0 = 0; for i = 1:order+1 i_w_p = 1; - for j = 1:nnodes^(i-1) + for j = 1:(1+(nnodes-1)*(i-1)) innovation = x; - if i > 1 - innovation(i+1,:) = nodes(mod(j-1,nnodes)+1,:); - end - if i <= order + if i <= order && j == 1 + % first world, integrating future shocks + if nargout > 1 + A1 = sparse([],[],[],i*(1+(nnodes-1)*(i-1))*ny,dimension,nnzA*world_nbr); + end for k=1:nnodes - 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)]; + if nargout > 1 + if i == 2 + i_cols_Ap = i_cols_Ap0; + elseif i > 2 + i_cols_Ap = i_cols_Ap0 + ny*(i-2+(nnodes- ... + 1)*(i-2)*(i-3)/2); + end + if k == 1 + i_cols_Af = i_cols_Af0 + ny*(i-1+(nnodes-1)*i*(i-1)/ ... + 2); + else + i_cols_Af = i_cols_Af0 + ny*(i-1+(nnodes-1)*i*(i-1)/ ... + 2+(i-1)*(nnodes-1) ... + + k - 1); + end + end + if i > 1 + innovation(i+1,:) = nodes(k,:); + end + if k == 1 + k1 = 1; else - z = [Y(i_cols_p,i_w_p); - Y(i_cols_s,j); - Y(i_cols_f,(j-1)*nnodes+k)]; + k1 = (nnodes-1)*(i-1)+k; end - - [d1,jacobian] = dynamic_model(z,innovation,params,steady_state,i+1); - if i == 1 - % in first period we don't keep track of - % predetermined variables - i_cols_A = [i_cols_As - ny; i_cols_Af]; - A1(i_rows,i_cols_A) = A1(i_rows,i_cols_A) + weights(k)*jacobian(:,i_cols_1); + 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)]; + else + z = [Y(i_cols_p,1); + Y(i_cols_s,1); + Y(i_cols_f,k1)]; + end + if nargout > 1 + [d1,jacobian] = dynamic_model(z,innovation,params,steady_state,i+1); + if i == 1 + % in first period we don't keep track of + % predetermined variables + i_cols_A = [i_cols_As - ny; i_cols_Af]; + A1(i_rows,i_cols_A) = A1(i_rows,i_cols_A) + weights(k)*jacobian(eq_index,i_cols_1); + else + i_cols_A = [i_cols_Ap; i_cols_As; i_cols_Af]; + A1(i_rows,i_cols_A) = A1(i_rows,i_cols_A) + weights(k)*jacobian(eq_index,i_cols_j); + end else - i_cols_A = [i_cols_Ap; i_cols_As; i_cols_Af]; - A1(i_rows,i_cols_A) = A1(i_rows,i_cols_A) + weights(k)*jacobian(:,i_cols_j); + d1 = dynamic_model(z,innovation,params,steady_state,i+1); end - res(:,i,j) = res(:,i,j)+weights(k)*d1; + res(:,i,1) = res(:,i,1)+weights(k)*d1(eq_index); + end + if nargout > 1 + [ir,ic,v] = find(A1); + nzA{i,j} = [ir,ic,v]'; + end + elseif j > 1 + (nnodes-1)*(i-2) + % new world, using previous state of world 1 and hit + % by shocks from nodes + if nargout > 1 + i_cols_Ap = i_cols_Ap0 + ny*(i-2+(nnodes-1)*(i-2)*(i-3)/2); + i_cols_Af = i_cols_Af0 + ny*(i+(nnodes-1)*i*(i-1)/2+j-2); + end + k = j - (nnodes-1)*(i-2); + innovation(i+1,:) = nodes(k,:); + z = [Y(i_cols_p,1); + Y(i_cols_s,j); + Y(i_cols_f,j)]; + if nargout > 1 + [d1,jacobian] = dynamic_model(z,innovation,params,steady_state,i+1); + i_cols_A = [i_cols_Ap; i_cols_As; i_cols_Af]; + [ir,ic,v] = find(jacobian(eq_index,i_cols_j)); + nzA{i,j} = [i_rows(ir),i_cols_A(ic), v]'; + else + d1 = dynamic_model(z,innovation,params,steady_state,i+1); + end + res(:,i,j) = d1(eq_index); + if nargout > 1 i_cols_Af = i_cols_Af + ny; end else - z = [Y(i_cols_p,i_w_p); + % existing worlds other than 1 + if nargout > 1 + i_cols_Ap = i_cols_Ap0 + ny*(i-2+(nnodes-1)*(i-2)*(i-3)/2+j-1); + i_cols_Af = i_cols_Af0 + ny*(i+(nnodes-1)*i*(i-1)/2+j-2); + end + z = [Y(i_cols_p,j); Y(i_cols_s,j); Y(i_cols_f,j)]; - [d1,jacobian] = dynamic_model(z,innovation,params,steady_state,i+1); - if i == 1 - % in first period we don't keep track of - % predetermined variables - i_cols_A = [i_cols_As - ny; i_cols_Af]; - A1(i_rows,i_cols_A) = jacobian(:,i_cols_1); - else + if nargout > 1 + [d1,jacobian] = dynamic_model(z,innovation,params,steady_state,i+1); i_cols_A = [i_cols_Ap; i_cols_As; i_cols_Af]; - A1(i_rows,i_cols_A) = jacobian(:,i_cols_j); + [ir,ic,v] = find(jacobian(eq_index,i_cols_j)); + nzA{i,j} = [i_rows(ir),i_cols_A(ic),v]'; + i_cols_Af = i_cols_Af + ny; + else + d1 = dynamic_model(z,innovation,params,steady_state,i+1); end - res(:,i,j) = d1; - i_cols_Af = i_cols_Af + ny; + res(:,i,j) = d1(eq_index); end i_rows = i_rows + ny; if mod(j,nnodes) == 0 i_w_p = i_w_p + 1; end - if i > 1 - if mod(j,nnodes) == 0 - i_cols_Ap = i_cols_Ap + ny; - end + if nargout > 1 && i > 1 i_cols_As = i_cols_As + ny; end + offset_r0 = offset_r0 + ny; end i_cols_p = i_cols_p + ny; i_cols_s = i_cols_s + ny; i_cols_f = i_cols_f + ny; end -nzA = cell(periods,pfm.world_nbr); -for j=1:pfm.world_nbr - i_rows_y = find(lead_lag_incidence')+(order+1)*ny; - offset_c = ny*(sum(nnodes.^(0:order-1),2)+j-1); - offset_r = (j-1)*ny; +for j=1:world_nbr + i_rows_y = i_cols+(order+1)*ny; + offset_c = ny*(order+(nnodes-1)*(order-1)*order/2+j-1); + offset_r = offset_r0+(j-1)*ny; for i=order+2:periods - [d1,jacobian] = dynamic_model(Y(i_rows_y,j), x, params, steady_state, i+1); - if i == periods - [ir,ic,v] = find(jacobian(:,i_cols_T)); + if nargout > 1 + [d1,jacobian] = dynamic_model(Y(i_rows_y,j),x,params, ... + steady_state,i+1); + if i < periods + [ir,ic,v] = find(jacobian(eq_index,i_cols_j)); + else + [ir,ic,v] = find(jacobian(eq_index,i_cols_T)); + end + nzA{i,j} = [offset_r+ir,offset_c+icA(ic), v]'; else - [ir,ic,v] = find(jacobian(:,i_cols_j)); + d1 = dynamic_model(Y(i_rows_y,j),x,params, ... + steady_state,i+1); end - nzA{i,j} = [offset_r+ir,offset_c+pfm.icA(ic), v]'; - res(:,i,j) = d1; + res(:,i,j) = d1(eq_index); i_rows_y = i_rows_y + ny; - offset_c = offset_c + pfm.world_nbr*ny; - offset_r = offset_r + pfm.world_nbr*ny; + offset_c = offset_c + world_nbr*ny; + offset_r = offset_r + world_nbr*ny; end end -A2 = [nzA{:}]'; -A = [A1; sparse(A2(:,1),A2(:,2),A2(:,3),ny*(periods-order-1)*pfm.world_nbr,pfm.dimension)]; +if nargout > 1 + iA = [nzA{:}]'; + A = sparse(iA(:,1),iA(:,2),iA(:,3),dimension,dimension); +end res = res(pfm.i_upd_r); diff --git a/matlab/ep/ep_problem_2.m b/matlab/ep/ep_problem_2.m deleted file mode 100644 index 26ba78895cc1de7b74448d0c5cb0e45b94422ca3..0000000000000000000000000000000000000000 --- a/matlab/ep/ep_problem_2.m +++ /dev/null @@ -1,196 +0,0 @@ -function [res,A,info] = ep_problem_2(y, x, pfm) - -info = false; -A = []; - -dynamic_model = pfm.dynamic_model; -ny = pfm.ny; -params = pfm.params; -steady_state = pfm.steady_state; -order = pfm.stochastic_order; -nodes = pfm.nodes; -nnodes = pfm.nnodes; -weights = pfm.weights; -h_correction = pfm.h_correction; -dimension = pfm.dimension; -world_nbr = pfm.world_nbr; -nnzA = pfm.nnzA; -periods = pfm.periods; -i_rows = pfm.i_rows'; -i_cols = pfm.i_cols; -nyp = pfm.nyp; -nyf = pfm.nyf; -hybrid_order = pfm.hybrid_order; -i_cols_1 = pfm.i_cols_1; -i_cols_j = pfm.i_cols_j; -icA = pfm.icA; -i_cols_T = pfm.i_cols_T; -eq_index = pfm.eq_index; - - - -i_cols_p = i_cols(1:nyp); -i_cols_s = i_cols(nyp+(1:ny)); -i_cols_f = i_cols(nyp+ny+(1:nyf)); -i_cols_Ap0 = i_cols_p; -i_cols_As = i_cols_s; -i_cols_Af0 = i_cols_f - ny; -i_hc = i_cols_f - 2*ny; - -nzA = cell(periods,world_nbr); -res = zeros(ny,periods,world_nbr); -Y = zeros(ny*(periods+2),world_nbr); -Y(1:ny,1) = pfm.y0; -Y(end-ny+1:end,:) = repmat(steady_state,1,world_nbr); -Y(pfm.i_upd_y) = y; - -offset_r0 = 0; -for i = 1:order+1 - i_w_p = 1; - for j = 1:(1+(nnodes-1)*(i-1)) - innovation = x; - if i <= order && j == 1 - % first world, integrating future shocks - if nargout > 1 - A1 = sparse([],[],[],i*(1+(nnodes-1)*(i-1))*ny,dimension,nnzA*world_nbr); - end - for k=1:nnodes - if nargout > 1 - if i == 2 - i_cols_Ap = i_cols_Ap0; - elseif i > 2 - i_cols_Ap = i_cols_Ap0 + ny*(i-2+(nnodes- ... - 1)*(i-2)*(i-3)/2); - end - if k == 1 - i_cols_Af = i_cols_Af0 + ny*(i-1+(nnodes-1)*i*(i-1)/ ... - 2); - else - i_cols_Af = i_cols_Af0 + ny*(i-1+(nnodes-1)*i*(i-1)/ ... - 2+(i-1)*(nnodes-1) ... - + k - 1); - end - end - if i > 1 - innovation(i+1,:) = nodes(k,:); - end - if k == 1 - k1 = 1; - else - k1 = (nnodes-1)*(i-1)+k; - end - 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)]; - else - z = [Y(i_cols_p,1); - Y(i_cols_s,1); - Y(i_cols_f,k1)]; - end - if nargout > 1 - [d1,jacobian] = dynamic_model(z,innovation,params,steady_state,i+1); - if i == 1 - % in first period we don't keep track of - % predetermined variables - i_cols_A = [i_cols_As - ny; i_cols_Af]; - A1(i_rows,i_cols_A) = A1(i_rows,i_cols_A) + weights(k)*jacobian(eq_index,i_cols_1); - else - i_cols_A = [i_cols_Ap; i_cols_As; i_cols_Af]; - A1(i_rows,i_cols_A) = A1(i_rows,i_cols_A) + weights(k)*jacobian(eq_index,i_cols_j); - end - else - d1 = dynamic_model(z,innovation,params,steady_state,i+1); - end - res(:,i,1) = res(:,i,1)+weights(k)*d1(eq_index); - end - if nargout > 1 - [ir,ic,v] = find(A1); - nzA{i,j} = [ir,ic,v]'; - end - elseif j > 1 + (nnodes-1)*(i-2) - % new world, using previous state of world 1 and hit - % by shocks from nodes - if nargout > 1 - i_cols_Ap = i_cols_Ap0 + ny*(i-2+(nnodes-1)*(i-2)*(i-3)/2); - i_cols_Af = i_cols_Af0 + ny*(i+(nnodes-1)*i*(i-1)/2+j-2); - end - k = j - (nnodes-1)*(i-2); - innovation(i+1,:) = nodes(k,:); - z = [Y(i_cols_p,1); - Y(i_cols_s,j); - Y(i_cols_f,j)]; - if nargout > 1 - [d1,jacobian] = dynamic_model(z,innovation,params,steady_state,i+1); - i_cols_A = [i_cols_Ap; i_cols_As; i_cols_Af]; - [ir,ic,v] = find(jacobian(eq_index,i_cols_j)); - nzA{i,j} = [i_rows(ir),i_cols_A(ic), v]'; - else - d1 = dynamic_model(z,innovation,params,steady_state,i+1); - end - res(:,i,j) = d1(eq_index); - if nargout > 1 - i_cols_Af = i_cols_Af + ny; - end - else - % existing worlds other than 1 - if nargout > 1 - i_cols_Ap = i_cols_Ap0 + ny*(i-2+(nnodes-1)*(i-2)*(i-3)/2+j-1); - i_cols_Af = i_cols_Af0 + ny*(i+(nnodes-1)*i*(i-1)/2+j-2); - end - z = [Y(i_cols_p,j); - Y(i_cols_s,j); - Y(i_cols_f,j)]; - if nargout > 1 - [d1,jacobian] = dynamic_model(z,innovation,params,steady_state,i+1); - i_cols_A = [i_cols_Ap; i_cols_As; i_cols_Af]; - [ir,ic,v] = find(jacobian(eq_index,i_cols_j)); - nzA{i,j} = [i_rows(ir),i_cols_A(ic),v]'; - i_cols_Af = i_cols_Af + ny; - else - d1 = dynamic_model(z,innovation,params,steady_state,i+1); - end - res(:,i,j) = d1(eq_index); - end - i_rows = i_rows + ny; - if mod(j,nnodes) == 0 - i_w_p = i_w_p + 1; - end - if nargout > 1 && i > 1 - i_cols_As = i_cols_As + ny; - end - offset_r0 = offset_r0 + ny; - end - i_cols_p = i_cols_p + ny; - i_cols_s = i_cols_s + ny; - i_cols_f = i_cols_f + ny; -end -for j=1:world_nbr - i_rows_y = i_cols+(order+1)*ny; - offset_c = ny*(order+(nnodes-1)*(order-1)*order/2+j-1); - offset_r = offset_r0+(j-1)*ny; - for i=order+2:periods - if nargout > 1 - [d1,jacobian] = dynamic_model(Y(i_rows_y,j),x,params, ... - steady_state,i+1); - if i < periods - [ir,ic,v] = find(jacobian(eq_index,i_cols_j)); - else - [ir,ic,v] = find(jacobian(eq_index,i_cols_T)); - end - nzA{i,j} = [offset_r+ir,offset_c+icA(ic), v]'; - else - d1 = dynamic_model(Y(i_rows_y,j),x,params, ... - steady_state,i+1); - end - res(:,i,j) = d1(eq_index); - i_rows_y = i_rows_y + ny; - offset_c = offset_c + world_nbr*ny; - offset_r = offset_r + world_nbr*ny; - end -end -if nargout > 1 - iA = [nzA{:}]'; - A = sparse(iA(:,1),iA(:,2),iA(:,3),dimension,dimension); -end -res = res(pfm.i_upd_r); diff --git a/matlab/ep/solve_stochastic_perfect_foresight_model_0.m b/matlab/ep/solve_stochastic_perfect_foresight_model_0.m index 9196ea79bceff70a92f1d866823c964cafefa689..2773b527313f2006f036fd8d4a9d6c175ced3786 100644 --- a/matlab/ep/solve_stochastic_perfect_foresight_model_0.m +++ b/matlab/ep/solve_stochastic_perfect_foresight_model_0.m @@ -166,6 +166,6 @@ if update_options_struct end end -[y, errorflag, ~, ~, errorcode] = dynare_solve(@ep_problem_1, y, options_.simul.maxit, options_.dynatol.f, options_.dynatol.x, options_, exo_simul, pfm); +[y, errorflag, ~, ~, errorcode] = dynare_solve(@ep_problem_0, y, options_.simul.maxit, options_.dynatol.f, options_.dynatol.x, options_, exo_simul, pfm); endo_simul(:,2) = y(1:ny); diff --git a/matlab/ep/solve_stochastic_perfect_foresight_model_1.m b/matlab/ep/solve_stochastic_perfect_foresight_model_1.m index d9f0deda766f7a5045265b7a0140de804e13b9ec..0958d28d88607961c0c159b086ff933c0827d872 100644 --- a/matlab/ep/solve_stochastic_perfect_foresight_model_1.m +++ b/matlab/ep/solve_stochastic_perfect_foresight_model_1.m @@ -138,5 +138,5 @@ end pfm.y0 = endo_simul(:,1); -[y, errorflag, ~, ~, errorcode] = dynare_solve(@ep_problem_2, y, options_.simul.maxit, options_.dynatol.f, options_.dynatol.x, options_, exo_simul, pfm); +[y, errorflag, ~, ~, errorcode] = dynare_solve(@ep_problem_1, y, options_.simul.maxit, options_.dynatol.f, options_.dynatol.x, options_, exo_simul, pfm); endo_simul(:,2) = y(1:pfm.ny);