From f3600b0de99a51ab206db8b14dfeb837bf545362 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Adjemian=20=28Scylla=29?= Date: Fri, 29 Sep 2017 10:19:13 +0200 Subject: [PATCH] Added trap for complex residuals and jacobian in nonlinear solver. --- matlab/dynare_solve.m | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/matlab/dynare_solve.m b/matlab/dynare_solve.m index 76b654b7b..9ba3ea3f1 100644 --- a/matlab/dynare_solve.m +++ b/matlab/dynare_solve.m @@ -76,7 +76,9 @@ end if jacobian_flag [fvec, fjac] = feval(func, x, varargin{:}); wrong_initial_guess_flag = false; - if ~all(isfinite(fvec)) || any(isinf(fjac(:))) || any(isnan((fjac(:)))) + if ~all(isfinite(fvec)) || any(isinf(fjac(:))) || any(isnan((fjac(:)))) ... + || any(~isreal(fvec)) || any(~isreal(fjac(:))) + disp('Randomize initial guess...') % Let's try random numbers for the variables initialized with the default value. wrong_initial_guess_flag = true; % First try with positive numbers.