diff --git a/matlab/resol.m b/matlab/resol.m index e22e7bfa05e9d57d9d64153fd78e0085855eda34..6ec9aa70dcd7a410fd9dfe05238b55c9c6f156ce 100644 --- a/matlab/resol.m +++ b/matlab/resol.m @@ -67,18 +67,22 @@ if options_.steadystate_flag [oo_.exo_steady_state; oo_.exo_det_steady_state]); else % testing if ys isn't a steady state or if we aren't computing Ramsey policy - if max(abs(feval(fh,dr.ys,[oo_.exo_steady_state; oo_.exo_det_steady_state], M_.params))) ... - > options_.dynatol & options_.ramsey_policy == 0 - if options_.linear == 0 - % nonlinear models - [dr.ys,check1] = dynare_solve(fh,dr.ys,options_.jacobian_flag,... - [oo_.exo_steady_state; ... + if options_.ramsey_policy == 0 + if options_.linear == 0 + % nonlinear models + if max(abs(feval(fh,dr.ys,[oo_.exo_steady_state; ... + oo_.exo_det_steady_state], M_.params))) > options_.dynatol + [dr.ys,check1] = dynare_solve(fh,dr.ys,options_.jacobian_flag,... + [oo_.exo_steady_state; ... oo_.exo_det_steady_state], M_.params); - else - % linear models - [fvec,jacob] = feval(fh,dr.ys,[oo_.exo_steady_state;... + end + else + % linear models + [fvec,jacob] = feval(fh,dr.ys,[oo_.exo_steady_state;... oo_.exo_det_steady_state], M_.params); - dr.ys = dr.ys-jacob\fvec; + if max(abs(fvec)) > 1e-12 + dr.ys = dr.ys-jacob\fvec; + end end end end