more functions adapred to v4

git-svn-id: https://www.dynare.org/svn/dynare/dynare_v4@452 ac1d8469-bf42-47a9-8791-bf33cf982152
time-shift
michel 2005-09-11 14:20:10 +00:00
parent 5c10228211
commit 8ef7347759
4 changed files with 85 additions and 74 deletions

View File

@ -1,61 +1,68 @@
% Copyright (C) 2001 Michel Juillard % Copyright (C) 2001 Michel Juillard
%
function result = check function result = check
global M_ oo_ options_ it_ global M_ options_ oo_
global it_
tempex = oo_.exo_simul; temp_options = options_;
if ~options_.initval_file tempex = oo_.exo_simul;
oo_.exo_simul = ones(M_.maximum_lead+M_.maximum_lag+1,1)*transpose(oo_.exo_steady_state); if ~options_.initval_file
end oo_.exo_simul = ones(M_.maximum_lead+M_.maximum_lag+1,1)*oo_.exo_steady_state';
% 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 end
if cheik
error('CHECK: convergence problem in DYNARE_SOLVE') 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 end
else
dr.ys = oo_.steady_state;
end
dr = dr1(1,dr,1); oo_.exo_simul = tempex;
oo_.exo_simul = tempex;
nyf = nnz(dr.kstate(:,2)>M_.maximum_lag+1); eigenvalues_ = dr.eigval;
[m_lambda,i]=sort(abs(oo_.eigenvalues)); nyf = nnz(dr.kstate(:,2)>M_.maximum_lag+1);
disp(' ') [m_lambda,i]=sort(abs(eigenvalues_));
disp('EIGENVALUES:')
disp(sprintf('%16s %16s %16s\n','Modulus','Real','Imaginary')) if options_.noprint == 0
z=[m_lambda real(oo_.eigenvalues(i)) imag(oo_.eigenvalues(i))]'; disp(' ')
disp(sprintf('%16.4g %16.4g %16.4g\n',z)) disp('EIGENVALUES:')
options_ = set_default_option(options_,'qz_criterium',1.000001); disp(sprintf('%16s %16s %16s\n','Modulus','Real','Imaginary'))
disp(sprintf('\nThere are %d eigenvalue(s) larger than 1 in modulus ', ... z=[m_lambda real(eigenvalues_(i)) imag(eigenvalues_(i))]';
nnz(abs(oo_.eigenvalues) > options_.qz_criterium))); disp(sprintf('%16.4g %16.4g %16.4g\n',z))
disp(sprintf('for %d forward-looking variable(s)',nyf)); options_ = set_default_option(options_,'qz_criterium',1.000001);
disp(' ') disp(sprintf('\nThere are %d eigenvalue(s) larger than 1 in modulus ', ...
if dr.rank == nyf 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.') disp('The rank condition is verified.')
else else
disp('The rank conditions ISN''T verified!') disp('The rank conditions ISN''T verified!')
end end
disp(' ') disp(' ')
end
end
% keep oo_.eigenvalues for backward compatibility % keep lambda_ for backward compatibility
% oo_.eigenvalues = oo_.eigenvalues; lambda_ = eigenvalues_;
options_ = temp_options;
% 2/9/99 MJ: line 15, added test for absence of exogenous variable. % 2/9/99 MJ: line 15, added test for absence of exogenous variable.
% 8/27/2000 MJ: change JACOB call. Added ...,1 to cumsum() % 8/27/2000 MJ: change JACOB call. Added ...,1 to cumsum()
% 6/24/01 MJ: added count of abs(eigenvalues) > 1 % 6/24/01 MJ: added count of abs(eigenvalues) > 1
% 2/21/02 MJ: count eigenvalues > 1[+1e-5] % 2/21/02 MJ: count eigenvalues > 1[+1e-5]
% 01/22/03 MJ: warning(warning_state) needs parentheses for Matlab 6.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 % name conflicts with parameters
% 05/21/03 MJ: replace computation by dr1.m and add rank check % 05/21/03 MJ: replace computation by dr1.m and add rank check
% 06/05/03 MJ: corrected bug when M_.maximum_lag > 0 % 06/05/03 MJ: corrected bug when M_.maximum_lag > 0
% 22/01/05 SA: variable check --> cheik.

View File

@ -41,10 +41,12 @@ elseif k <= (estim_params_.nvx+estim_params_.nvn+estim_params_.ncx+ ...
texnam =['$ CC_{' tname '} $']; texnam =['$ CC_{' tname '} $'];
end end
else else
jj = k - (estim_params_.nvx+estim_params_.nvn+estim_params_.ncx+estim_params_.ncn); jj = k - (estim_params_.nvx+estim_params_.nvn+estim_params_.ncx+ ...
nam = deblank(estim_params_.user_param_names(jj,:)); estim_params_.ncn);
jj1 = estim_params_.param_vals(jj,1);
nam = deblank(M_.param_names(jj1,:));
if TeX if TeX
texnam = ['$ ' deblank(estim_params_.tex(jj,:)) ' $']; texnam = ['$ ' deblank(M_.param_names_tex(jj1,:)) ' $'];
end end
end end

View File

@ -1,16 +1,16 @@
% Copyright (C) 2001 Michel Juillard % Copyright (C) 2001 Michel Juillard
% %
function resid(options_.periods) function resid(period)
global M_ options_ oo_ it_ endval_ z 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); 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 ~ options_.initval_file
if size(oo_.steady_state,1) == 1 & oo_.steady_state == 0 if size(oo_.steady_state,1) == 1 & oo_.steady_state == 0
oo_.steady_state = zeros(size(oo_.steady_state,1),1) ; oo_.steady_state = zeros(size(oo_.steady_state,1),1) ;
end 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 if endval_ == 1
oo_.y_simul(:,1:M_.maximum_lag) = ys0_*ones(1,M_.maximum_lag) ; oo_.y_simul(:,1:M_.maximum_lag) = ys0_*ones(1,M_.maximum_lag) ;
end end
@ -20,14 +20,14 @@ function resid(options_.periods)
iyr0 = find(i(:)); iyr0 = find(i(:));
y =oo_.y_simul(:); y =oo_.y_simul(:);
z = zeros(n,options_.periods); z = zeros(n,period);
fh = str2func([M_.fname '_static']); fh = str2func([M_.fname '_dynamic']);
for it_=M_.maximum_lag+1:options_.periods+M_.maximum_lag for it_=M_.maximum_lag+1:period+M_.maximum_lag
z(:,it_-M_.maximum_lag) = feval(fh,y(iyr0)); z(:,it_-M_.maximum_lag) = feval(fh,y(iyr0),oo_.exo_simul);
iyr0 = iyr0 + n; iyr0 = iyr0 + n;
end end
disp([[1:options_.periods]' z']); disp([[1:period]' z']);

View File

@ -9,8 +9,10 @@ function steady(linear)
disp(' ') disp(' ')
disp('STEADY-STATE RESULTS:') disp('STEADY-STATE RESULTS:')
disp(' ') disp(' ')
endo_names = M_.endo_names;
steady_state = oo_.steady_state;
for i=1:size(oo_.steady_state,1) 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 end
if isempty(ys0_) if isempty(ys0_)