From 6eac49b1d75e7612d0cf94cf78aea82019cbe3aa Mon Sep 17 00:00:00 2001 From: adjemian <adjemian@ac1d8469-bf42-47a9-8791-bf33cf982152> Date: Mon, 17 Jul 2006 08:47:30 +0000 Subject: [PATCH] Correction of bugs related to the _steadystate file. git-svn-id: https://www.dynare.org/svn/dynare/dynare_v4@822 ac1d8469-bf42-47a9-8791-bf33cf982152 --- matlab/DiffuseLikelihood1.m | 6 +++--- matlab/check.m | 4 ++++ matlab/dynare.m | 2 +- matlab/dynare_MC.m | 11 ++++------- matlab/dynare_estimation.m | 16 ++++++---------- matlab/resol.m | 4 ++-- matlab/steady.m | 6 +++++- matlab/steady_.m | 2 +- 8 files changed, 26 insertions(+), 25 deletions(-) diff --git a/matlab/DiffuseLikelihood1.m b/matlab/DiffuseLikelihood1.m index 8be81e596b..5149bbc4a2 100644 --- a/matlab/DiffuseLikelihood1.m +++ b/matlab/DiffuseLikelihood1.m @@ -10,7 +10,7 @@ function [LIK, lik] = DiffuseLikelihood1(T,R,Q,Pinf,Pstar,Y,trend,start) mm = size(T,2); pp = size(Y,1); a = zeros(mm,1); - dF = 1; + dF = 1; QQ = R*Q*transpose(R); t = 0; lik = zeros(smpl+1,1); @@ -33,12 +33,12 @@ function [LIK, lik] = DiffuseLikelihood1(T,R,Q,Pinf,Pstar,Y,trend,start) lik(t) = log(dFstar) + transpose(v)*iFstar*v; Pinf = T*Pinf*transpose(T); Pstar = T*(Pstar-Pstar(:,mf)*transpose(Kstar))*transpose(T)+QQ; - a = T*(a+Kstar*v); + a = T*(a+Kstar*v); end else lik(t) = log(det(Finf)); iFinf = inv(Finf); - Kinf = Pinf(:,mf)*iFinf; %% premultiplication by the transition matrix T is removed (stephane) + Kinf = Pinf(:,mf)*iFinf; %% premultiplication by the transition matrix T is removed (stephane) Fstar = Pstar(mf,mf); Kstar = (Pstar(:,mf)-Kinf*Fstar)*iFinf; %% premultiplication by the transition matrix T is removed (stephane) Pstar = T*(Pstar-Pstar(:,mf)*transpose(Kinf)-Pinf(:,mf)*transpose(Kstar))*transpose(T)+QQ; diff --git a/matlab/check.m b/matlab/check.m index ac2b52cc9f..9c4daf8bac 100644 --- a/matlab/check.m +++ b/matlab/check.m @@ -15,6 +15,10 @@ global it_ options_ = set_default_option(options_,'order',1); options_ = set_default_option(options_,'linear',0); options_ = set_default_option(options_,'dr_algo',0); + options_ = set_default_option(options_,'steadystate_flag',0); + if exist([M_.fname '_steadystate.m']) + options_.steadystate_flag = 1; + end [dr, info] = resol(oo_.steady_state,1); diff --git a/matlab/dynare.m b/matlab/dynare.m index b668a700d9..b5d3fde9c6 100644 --- a/matlab/dynare.m +++ b/matlab/dynare.m @@ -10,7 +10,7 @@ function dynare(fname, varargin) % is processed. if ~isstr(fname) - error ('The argument in DYNARE must be a text string.') ; + error ('The argument in DYNARE must be a text string.') ; end % Testing if file have extension % If no extension defalut .mod is added diff --git a/matlab/dynare_MC.m b/matlab/dynare_MC.m index 51bddb50e2..73edfd1fa2 100644 --- a/matlab/dynare_MC.m +++ b/matlab/dynare_MC.m @@ -57,6 +57,10 @@ options_ = set_default_option(options_,'posterior_mode_estimation',1); options_ = set_default_option(options_,'MaxNumberOfBytes',1e6); options_ = set_default_option(options_,'xls_sheet',''); options_ = set_default_option(options_,'xls_range',''); +options_ = set_default_option(options_,'steadystate_flag',0); +if exist([M_.fname '_steadystate.m']) + options_.steadystate_flag = 1; +end %% Add something to the parser ++> M_.dname = M_.fname; % The user should be able to choose another name @@ -109,13 +113,6 @@ ncn = estim_params_.ncn; np = estim_params_.np ; nx = nvx+nvn+ncx+ncn+np; -%% Static solver -if exist([M_.fname '_steadystate']) - bayestopt_.static_solve = [M_.fname '_steadystate']; -else - bayestopt_.static_solve = 'dynare_solve'; -end - dr = set_state_space([]); %% Initialization with unit-root variables diff --git a/matlab/dynare_estimation.m b/matlab/dynare_estimation.m index 7724ea1e15..f2052bf63e 100644 --- a/matlab/dynare_estimation.m +++ b/matlab/dynare_estimation.m @@ -64,6 +64,10 @@ options_ = set_default_option(options_,'filter_step_ahead',0); options_ = set_default_option(options_,'diffuse_d',[]); options_ = set_default_option(options_,'Opt6Iter',3); options_ = set_default_option(options_,'Opt6Numb',100000); +options_ = set_default_option(options_,'steadystate_flag',0); +if exist([M_.fname '_steadystate.m']) + options_.steadystate_flag = 1; +end if options_.filtered_vars ~= 0 & options_.filter_step_ahead == 0 options_.filter_step_ahead = 1; @@ -131,14 +135,6 @@ ncn = estim_params_.ncn; np = estim_params_.np ; nx = nvx+nvn+ncx+ncn+np; -%% Static solver -if exist([M_.fname '_steadystate']) - bayestopt_.static_solve = [M_.fname '_steadystate']; - eval(['[ys,check] = ' bayestopt_.static_solve '([],[]);']) -else - bayestopt_.static_solve = 'dynare_solve'; -end - dr = set_state_space([]); %% Initialization with unit-root variables @@ -243,8 +239,8 @@ if length(options_.mode_file) > 0 & options_.posterior_mode_estimation end % Compute the steadyn state if the _steadystate.m file is provided -if strcmpi(bayestopt_.static_solve,[M_.fname '_steadystate']) - [oo_.steady_state,tchek] = feval(bayestopt_.static_solve,[],[]); +if options_.steadystate_flag + [oo_.steady_state,tchek] = feval([M_.fname '_steadystate'],[],[]); end initial_estimation_checks(xparam1,gend,data); diff --git a/matlab/resol.m b/matlab/resol.m index b598d73916..1c07bdeb16 100644 --- a/matlab/resol.m +++ b/matlab/resol.m @@ -33,8 +33,8 @@ dr.ys = ys; fh = str2func([M_.fname '_static']); if options_.linear == 0 if max(abs(feval(fh,dr.ys,[oo_.exo_steady_state; oo_.exo_det_steady_state]))) > options_.dynatol & options_.olr == 0 - if strcmpi(bayestopt_.static_solve,[M_.fname '_steadystate']) - [dr.ys,check1] = feval(bayestopt_.static_solve,dr.ys,... + if options_.steadystate_flag + [dr.ys,check1] = feval([M_.fname '_steadystate'],dr.ys,... [oo_.exo_steady_state; oo_.exo_det_steady_state]); else [dr.ys,check1] = dynare_solve(fh,dr.ys,options_.jacobian_flag,... diff --git a/matlab/steady.m b/matlab/steady.m index 5bb063f9c8..82ef8c4eaf 100644 --- a/matlab/steady.m +++ b/matlab/steady.m @@ -5,7 +5,11 @@ function steady(linear) global M_ oo_ options_ ys0_ options_ = set_default_option(options_,'jacobian_flag',1); - + options_ = set_default_option(options_,'steadystate_flag',0); + if exist([M_.fname 'steadystate.m']) + options_.steadystate_flag = 1; + end + steady_; disp(' ') diff --git a/matlab/steady_.m b/matlab/steady_.m index 3b53262262..b2ab1ee8c1 100644 --- a/matlab/steady_.m +++ b/matlab/steady_.m @@ -4,7 +4,7 @@ function steady_() global M_ oo_ it_ options_ - if exist([M_.fname '_steadystate']) + if options_.steadystate_flag [oo_.steady_state,check] = feval([M_.fname '_steadystate'],... oo_.steady_state,... [oo_.exo_steady_state; ... -- GitLab