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 %
global M_ oo_ options_ it_
function result = check
global M_ options_ oo_
global it_
temp_options = options_;
tempex = oo_.exo_simul; tempex = oo_.exo_simul;
if ~options_.initval_file if ~options_.initval_file
oo_.exo_simul = ones(M_.maximum_lead+M_.maximum_lag+1,1)*transpose(oo_.exo_steady_state); oo_.exo_simul = ones(M_.maximum_lead+M_.maximum_lag+1,1)*oo_.exo_steady_state';
end end
% check if ys is steady state options_ = set_default_option(options_,'noprint',0);
it_ = M_.maximum_lag+1; options_ = set_default_option(options_,'order',1);
fh = str2func([M_.fname '_static']); options_ = set_default_option(options_,'dr_algo',0);
if max(abs(feval(fh,oo_.steady_state,oo_.exo_simul))) > options_.dynatol
if exist([M_.fname '_steadystate']) [dr, info] = resol(oo_.steady_state,1);
[dr.ys, cheik] = feval([M_.fname '_steadystate'],oo_.steady_state,oo_.exo_simul);
else if info(1) ~= 0 & info(1) ~= 3 & info(1) ~= 4
[dr.ys, cheik] = dynare_solve([M_.fname '_static'], ... print_info(info);
oo_.steady_state,oo_.exo_simul);
end
if cheik
error('CHECK: convergence problem in DYNARE_SOLVE')
end
else
dr.ys = oo_.steady_state;
end end
dr = dr1(1,dr,1);
oo_.exo_simul = tempex; oo_.exo_simul = tempex;
eigenvalues_ = dr.eigval;
nyf = nnz(dr.kstate(:,2)>M_.maximum_lag+1); nyf = nnz(dr.kstate(:,2)>M_.maximum_lag+1);
[m_lambda,i]=sort(abs(oo_.eigenvalues)); [m_lambda,i]=sort(abs(eigenvalues_));
if options_.noprint == 0
disp(' ') disp(' ')
disp('EIGENVALUES:') disp('EIGENVALUES:')
disp(sprintf('%16s %16s %16s\n','Modulus','Real','Imaginary')) disp(sprintf('%16s %16s %16s\n','Modulus','Real','Imaginary'))
z=[m_lambda real(oo_.eigenvalues(i)) imag(oo_.eigenvalues(i))]'; z=[m_lambda real(eigenvalues_(i)) imag(eigenvalues_(i))]';
disp(sprintf('%16.4g %16.4g %16.4g\n',z)) disp(sprintf('%16.4g %16.4g %16.4g\n',z))
options_ = set_default_option(options_,'qz_criterium',1.000001); options_ = set_default_option(options_,'qz_criterium',1.000001);
disp(sprintf('\nThere are %d eigenvalue(s) larger than 1 in modulus ', ... disp(sprintf('\nThere are %d eigenvalue(s) larger than 1 in modulus ', ...
nnz(abs(oo_.eigenvalues) > options_.qz_criterium))); nnz(abs(eigenvalues_) > options_.qz_criterium)));
disp(sprintf('for %d forward-looking variable(s)',nyf)); disp(sprintf('for %d forward-looking variable(s)',nyf));
disp(' ') disp(' ')
if info(1) == 0
if dr.rank == nyf 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_)