diff --git a/matlab/check.m b/matlab/check.m index 2840728f3..59041c920 100644 --- a/matlab/check.m +++ b/matlab/check.m @@ -1,61 +1,68 @@ -% Copyright (C) 2001 Michel Juillard -function result = check -global M_ oo_ options_ it_ - -tempex = oo_.exo_simul; -if ~options_.initval_file - oo_.exo_simul = ones(M_.maximum_lead+M_.maximum_lag+1,1)*transpose(oo_.exo_steady_state); -end - -% check if ys is steady state -it_ = M_.maximum_lag+1; -fh = str2func([M_.fname '_static']); -if max(abs(feval(fh,oo_.steady_state,oo_.exo_simul))) > options_.dynatol - if exist([M_.fname '_steadystate']) - [dr.ys, cheik] = feval([M_.fname '_steadystate'],oo_.steady_state,oo_.exo_simul); - else - [dr.ys, cheik] = dynare_solve([M_.fname '_static'], ... - oo_.steady_state,oo_.exo_simul); - end - if cheik - error('CHECK: convergence problem in DYNARE_SOLVE') - end -else - dr.ys = oo_.steady_state; -end - -dr = dr1(1,dr,1); -oo_.exo_simul = tempex; - -nyf = nnz(dr.kstate(:,2)>M_.maximum_lag+1); -[m_lambda,i]=sort(abs(oo_.eigenvalues)); -disp(' ') -disp('EIGENVALUES:') -disp(sprintf('%16s %16s %16s\n','Modulus','Real','Imaginary')) -z=[m_lambda real(oo_.eigenvalues(i)) imag(oo_.eigenvalues(i))]'; -disp(sprintf('%16.4g %16.4g %16.4g\n',z)) -options_ = set_default_option(options_,'qz_criterium',1.000001); -disp(sprintf('\nThere are %d eigenvalue(s) larger than 1 in modulus ', ... - nnz(abs(oo_.eigenvalues) > options_.qz_criterium))); -disp(sprintf('for %d forward-looking variable(s)',nyf)); -disp(' ') -if dr.rank == nyf - disp('The rank condition is verified.') -else - disp('The rank conditions ISN''T verified!') -end -disp(' ') - - % keep oo_.eigenvalues for backward compatibility - % oo_.eigenvalues = oo_.eigenvalues; - - % 2/9/99 MJ: line 15, added test for absence of exogenous variable. - % 8/27/2000 MJ: change JACOB call. Added ...,1 to cumsum() - % 6/24/01 MJ: added count of abs(eigenvalues) > 1 - % 2/21/02 MJ: count eigenvalues > 1[+1e-5] - % 01/22/03 MJ: warning(warning_state) needs parentheses for Matlab 6.5 - % 03/20/03 MJ: changed name of global from lambda to oo_.eigenvalues to avoid - % name conflicts with parameters - % 05/21/03 MJ: replace computation by dr1.m and add rank check - % 06/05/03 MJ: corrected bug when M_.maximum_lag > 0 - % 22/01/05 SA: variable check --> cheik. +% Copyright (C) 2001 Michel Juillard +% + +function result = check +global M_ options_ oo_ +global it_ + + temp_options = options_; + tempex = oo_.exo_simul; + if ~options_.initval_file + oo_.exo_simul = ones(M_.maximum_lead+M_.maximum_lag+1,1)*oo_.exo_steady_state'; + end + + options_ = set_default_option(options_,'noprint',0); + options_ = set_default_option(options_,'order',1); + options_ = set_default_option(options_,'dr_algo',0); + + [dr, info] = resol(oo_.steady_state,1); + + if info(1) ~= 0 & info(1) ~= 3 & info(1) ~= 4 + print_info(info); + end + + oo_.exo_simul = tempex; + + eigenvalues_ = dr.eigval; + nyf = nnz(dr.kstate(:,2)>M_.maximum_lag+1); + [m_lambda,i]=sort(abs(eigenvalues_)); + + if options_.noprint == 0 + disp(' ') + disp('EIGENVALUES:') + disp(sprintf('%16s %16s %16s\n','Modulus','Real','Imaginary')) + z=[m_lambda real(eigenvalues_(i)) imag(eigenvalues_(i))]'; + disp(sprintf('%16.4g %16.4g %16.4g\n',z)) + options_ = set_default_option(options_,'qz_criterium',1.000001); + disp(sprintf('\nThere are %d eigenvalue(s) larger than 1 in modulus ', ... + nnz(abs(eigenvalues_) > options_.qz_criterium))); + disp(sprintf('for %d forward-looking variable(s)',nyf)); + disp(' ') + if info(1) == 0 + if dr.rank == nyf + disp('The rank condition is verified.') + else + disp('The rank conditions ISN''T verified!') + end + disp(' ') + end + end + + % keep lambda_ for backward compatibility + lambda_ = eigenvalues_; + + options_ = temp_options; + + % 2/9/99 MJ: line 15, added test for absence of exogenous variable. + % 8/27/2000 MJ: change JACOB call. Added ...,1 to cumsum() + % 6/24/01 MJ: added count of abs(eigenvalues) > 1 + % 2/21/02 MJ: count eigenvalues > 1[+1e-5] + % 01/22/03 MJ: warning(warning_state) needs parentheses for Matlab 6.5 + % name conflicts with parameters + % 05/21/03 MJ: replace computation by dr1.m and add rank check + % 06/05/03 MJ: corrected bug when M_.maximum_lag > 0 + + + + + diff --git a/matlab/get_the_name.m b/matlab/get_the_name.m index 6de0e1d32..1c892379b 100644 --- a/matlab/get_the_name.m +++ b/matlab/get_the_name.m @@ -41,10 +41,12 @@ elseif k <= (estim_params_.nvx+estim_params_.nvn+estim_params_.ncx+ ... texnam =['$ CC_{' tname '} $']; end else - jj = k - (estim_params_.nvx+estim_params_.nvn+estim_params_.ncx+estim_params_.ncn); - nam = deblank(estim_params_.user_param_names(jj,:)); + jj = k - (estim_params_.nvx+estim_params_.nvn+estim_params_.ncx+ ... + estim_params_.ncn); + jj1 = estim_params_.param_vals(jj,1); + nam = deblank(M_.param_names(jj1,:)); if TeX - texnam = ['$ ' deblank(estim_params_.tex(jj,:)) ' $']; + texnam = ['$ ' deblank(M_.param_names_tex(jj1,:)) ' $']; end end diff --git a/matlab/resid.m b/matlab/resid.m index 7f2a0def5..70aee33d1 100644 --- a/matlab/resid.m +++ b/matlab/resid.m @@ -1,16 +1,16 @@ % Copyright (C) 2001 Michel Juillard % -function resid(options_.periods) +function resid(period) global M_ options_ oo_ it_ endval_ z - oo_.exo_simul = ones(M_.maximum_lag+M_.maximum_lead+options_.periods,1)*oo_.exo_steady_state'; + oo_.exo_simul = ones(M_.maximum_lag+M_.maximum_lead+period,1)*oo_.exo_steady_state'; n = size(M_.lead_lag_incidence,2); -% if ~ options_.initval_file | size(oo_.y_simul,2) ~= options_.periods+M_.maximum_lag+M_.maximum_lead +% if ~ options_.initval_file | size(oo_.y_simul,2) ~= period+M_.maximum_lag+M_.maximum_lead if ~ options_.initval_file if size(oo_.steady_state,1) == 1 & oo_.steady_state == 0 oo_.steady_state = zeros(size(oo_.steady_state,1),1) ; end - oo_.y_simul = oo_.steady_state*ones(1,options_.periods+M_.maximum_lag+M_.maximum_lead) ; + oo_.y_simul = oo_.steady_state*ones(1,period+M_.maximum_lag+M_.maximum_lead) ; if endval_ == 1 oo_.y_simul(:,1:M_.maximum_lag) = ys0_*ones(1,M_.maximum_lag) ; end @@ -20,14 +20,14 @@ function resid(options_.periods) iyr0 = find(i(:)); y =oo_.y_simul(:); - z = zeros(n,options_.periods); - fh = str2func([M_.fname '_static']); - for it_=M_.maximum_lag+1:options_.periods+M_.maximum_lag - z(:,it_-M_.maximum_lag) = feval(fh,y(iyr0)); + z = zeros(n,period); + fh = str2func([M_.fname '_dynamic']); + for it_=M_.maximum_lag+1:period+M_.maximum_lag + z(:,it_-M_.maximum_lag) = feval(fh,y(iyr0),oo_.exo_simul); iyr0 = iyr0 + n; end - disp([[1:options_.periods]' z']); + disp([[1:period]' z']); diff --git a/matlab/steady.m b/matlab/steady.m index 1835879cd..e18b79896 100644 --- a/matlab/steady.m +++ b/matlab/steady.m @@ -9,8 +9,10 @@ function steady(linear) disp(' ') disp('STEADY-STATE RESULTS:') disp(' ') + endo_names = M_.endo_names; + steady_state = oo_.steady_state; for i=1:size(oo_.steady_state,1) - disp(sprintf('%s \t\t %g',M_.endo_names(i,:),oo_.steady_state(i))); + disp(sprintf('%s \t\t %g',endo_names(i,:),steady_state(i))); end if isempty(ys0_)