simult_.m: remove redundant first simulation period for k_order_simulations
Closes https://git.dynare.org/Dynare/dynare/-/issues/1819pac-components
parent
cd43c8669b
commit
d5141ced42
|
@ -53,15 +53,16 @@ if ~options_.k_order_solver || (options_.k_order_solver && options_.pruning) %if
|
|||
end
|
||||
|
||||
if options_.k_order_solver && ~options_.pruning % Call dynare++ routines.
|
||||
ex_ = [zeros(M_.maximum_lag,M_.exo_nbr); ex_];
|
||||
if options_.order~=iorder
|
||||
error(['The k_order_solver requires the specified approximation order to be '...
|
||||
'consistent with the one used for computing the decision rules'])
|
||||
end
|
||||
y_start=y_(:,1); %store first period required for output
|
||||
y_ = dynare_simul_(iorder,M_.nstatic,M_.npred,M_.nboth,M_.nfwrd,exo_nbr, ...
|
||||
y_(dr.order_var,1),ex_',M_.Sigma_e,options_.DynareRandomStreams.seed, ...
|
||||
y_start(dr.order_var,:),ex_',M_.Sigma_e,options_.DynareRandomStreams.seed, ...
|
||||
dr.ys(dr.order_var),dr);
|
||||
y_(dr.order_var,:) = y_;
|
||||
y_=[y_start y_];
|
||||
else
|
||||
if options_.block
|
||||
if M_.maximum_lag > 0
|
||||
|
|
|
@ -53,7 +53,7 @@
|
|||
|
||||
*/
|
||||
|
||||
@#define k =7
|
||||
@#define k =7
|
||||
|
||||
var y x;
|
||||
varexo e;
|
||||
|
@ -133,7 +133,7 @@ nboth = M_.nboth;
|
|||
nfwrd = M_.nfwrd;
|
||||
nexog = M_.exo_nbr;
|
||||
ystart = oo_.dr.ys(oo_.dr.order_var,1);
|
||||
ex_ = [zeros(M_.maximum_lag,M_.exo_nbr), oo_.exo_simul'];
|
||||
ex_ = oo_.exo_simul';
|
||||
ysteady = oo_.dr.ys(oo_.dr.order_var);
|
||||
dr = oo_.dr;
|
||||
|
||||
|
@ -143,7 +143,7 @@ seed = options_.DynareRandomStreams;
|
|||
tStart1 = tic; fortran_endo_simul = k_order_simul(order, nstat, npred, nboth, nfwrd, nexog, ystart, ex_, ysteady, dr); tElapsed1 = toc(tStart1);
|
||||
tStart2 = tic; dynare_endo_simul = dynare_simul_(order, nstat, npred, nboth, nfwrd, nexog, ystart,ex_,vcov,seed, ysteady, dr); tElapsed2 = toc(tStart2);
|
||||
|
||||
if max(max(abs(oo_.endo_simul-fortran_endo_simul(oo_.dr.order_var,2:end)))) > 1e-10
|
||||
if max(max(abs(oo_.endo_simul-fortran_endo_simul(oo_.dr.order_var,:)))) > 1e-10
|
||||
error('Error in k_order_simul: inaccurate simulation');
|
||||
end;
|
||||
|
||||
|
|
Loading…
Reference in New Issue