From 53db31dfd318c92b6f998df37378cbee2160a436 Mon Sep 17 00:00:00 2001 From: Johannes Pfeifer Date: Sun, 28 Jul 2013 00:09:11 +0200 Subject: [PATCH] Add debugging info to steady state for linear models Resembles the messages already provided for non-linear models --- matlab/evaluate_steady_state.m | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/matlab/evaluate_steady_state.m b/matlab/evaluate_steady_state.m index b48a393f4..38aee0a32 100644 --- a/matlab/evaluate_steady_state.m +++ b/matlab/evaluate_steady_state.m @@ -86,7 +86,21 @@ function [ys,params,info] = evaluate_steady_state(ys_init,M,options,oo,steadysta else ys = ys_init; end - + if options.debug + if any(any(isinf(jacob) | isnan(jacob))) + [infrow,infcol]=find(isinf(jacob) | isnan(jacob)); + fprintf('\nSTEADY: The Jacobian contains Inf or NaN. The problem arises from: \n\n') + for ii=1:length(infrow) + if infcol(ii)<=M.orig_endo_nbr + fprintf('STEADY: Derivative of Equation %d with respect to Variable %s (initial value of %s: %g) \n',infrow(ii),deblank(M.endo_names(infcol(ii),:)),deblank(M.endo_names(infcol(ii),:)),ys_init(infcol(ii))) + else %auxiliary vars + orig_var_index=M.aux_vars(1,infcol(ii)-M.orig_endo_nbr).orig_index; + fprintf('STEADY: Derivative of Equation %d with respect to Variable %s (initial value of %s: %g) \n',infrow(ii),deblank(M.endo_names(orig_var_index,:)),deblank(M.endo_names(orig_var_index,:)),ys_init(infcol(ii))) + end + end + disp('STEADY: Check whether your model in truly linear\n') + end + end end else % block or bytecode