From 6404d3da4501417ec72091ae8c42076e587312ab Mon Sep 17 00:00:00 2001 From: Johannes Pfeifer Date: Thu, 18 Jul 2013 15:04:00 +0200 Subject: [PATCH] Provide additional debugging info before lnsrch1 crashes with error --- matlab/lnsrch1.m | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/matlab/lnsrch1.m b/matlab/lnsrch1.m index ef63f44d5..80af34462 100644 --- a/matlab/lnsrch1.m +++ b/matlab/lnsrch1.m @@ -50,6 +50,24 @@ x = xold; nn = length(j2); summ = sqrt(sum(p.*p)) ; if ~isfinite(summ) + eq_number_string=[]; + for ii=1:length(j1)-1 + eq_number_string=[eq_number_string, num2str(j1(ii)), ', ']; + end + eq_number_string=[eq_number_string, num2str(j1(end))]; + var_string=[]; + Model=evalin('base','M_'); + for ii=1:length(j2)-1 + var_string=[var_string, deblank(Model.endo_names(j2(ii),:)), ', ']; + end + var_string=[var_string, deblank(Model.endo_names(j2(end),:))]; + fprintf('\nAn infinite element was encountered when trying to solve equation(s) %s \n',eq_number_string) + fprintf('with respect to the variable(s): %s.\n',var_string) + fprintf('The values of the endogenous variables when the problem was encountered were:\n') + for ii=1:length(xold) + fprintf('%-s % 8.4g \n',Model.endo_names(ii,:),xold(ii)); + end + skipline(); error(['Some element of Newton direction isn''t finite. Jacobian maybe' ... ' singular or there is a problem with initial values']) end