Skip to content
Snippets Groups Projects
Select Git revision
  • 219d2bb31bf21312800d4ac253a467cfef4608eb
  • master default protected
  • 6.x protected
  • madysson
  • 5.x protected
  • asm
  • time-varying-information-set
  • 4.6 protected
  • dynare_minreal
  • dragonfly
  • various_fixes
  • 4.5 protected
  • clang+openmp
  • exo_steady_state
  • declare_vars_in_model_block
  • julia
  • error_msg_undeclared_model_vars
  • static_aux_vars
  • slice
  • aux_func
  • penalty
  • 6.4 protected
  • 6.3 protected
  • 6.2 protected
  • 6.1 protected
  • 6.0 protected
  • 6-beta2 protected
  • 6-beta1 protected
  • 5.5 protected
  • 5.4 protected
  • 5.3 protected
  • 5.2 protected
  • 5.1 protected
  • 5.0 protected
  • 5.0-rc1 protected
  • 4.7-beta3 protected
  • 4.7-beta2 protected
  • 4.7-beta1 protected
  • 4.6.4 protected
  • 4.6.3 protected
  • 4.6.2 protected
41 results

csv_parser.cc

Blame
  • SPAmalg.m 3.53 KiB
    %  [b,rts,ia,nexact,nnumeric,lgroots,aimcode] = ...
    %                       SPAmalg(h,neq,nlag,nlead,condn,uprbnd)
    %
    %  Solve a linear perfect foresight model using the matlab eig
    %  function to find the invariant subspace associated with the big
    %  roots.  This procedure will fail if the companion matrix is
    %  defective and does not have a linearly independent set of
    %  eigenvectors associated with the big roots.
    % 
    %  Input arguments:
    % 
    %    h         Structural coefficient matrix (neq,neq*(nlag+1+nlead)).
    %    neq       Number of equations.
    %    nlag      Number of lags.
    %    nlead     Number of leads.
    %    condn     Zero tolerance used as a condition number test
    %              by numeric_shift and reduced_form.
    %    uprbnd    Inclusive upper bound for the modulus of roots
    %              allowed in the reduced form.
    % 
    %  Output arguments:
    % 
    %    b         Reduced form coefficient matrix (neq,neq*nlag).
    %    rts       Roots returned by eig.
    %    ia        Dimension of companion matrix (number of non-trivial
    %              elements in rts).
    %    nexact    Number of exact shiftrights.
    %    nnumeric  Number of numeric shiftrights.
    %    lgroots   Number of roots greater in modulus than uprbnd.
    %    aimcode     Return code: see function aimerr.
    
    % Original author: Gary Anderson
    % Original file downloaded from:
    % http://www.federalreserve.gov/Pubs/oss/oss4/code.html
    % Adapted for Dynare by Dynare Team, in order to deal
    % with infinite or nan values.
    %
    % This code is in the public domain and may be used freely.
    % However the authors would appreciate acknowledgement of the source by
    % citation of any of the following papers:
    %
    % Anderson, G. and Moore, G.
    % "A Linear Algebraic Procedure for Solving Linear Perfect Foresight
    % Models."
    % Economics Letters, 17, 1985.
    %
    % Anderson, G.
    % "Solving Linear Rational Expectations Models: A Horse Race"
    % Computational Economics, 2008, vol. 31, issue 2, pages 95-113
    %
    % Anderson, G.
    % "A Reliable and Computationally Efficient Algorithm for Imposing the
    % Saddle Point Property in Dynamic Models"
    % Journal of Economic Dynamics and Control, Forthcoming
    
    function [b,rts,ia,nexact,nnumeric,lgroots,aimcode] = ...
                            SPAmalg(h,neq,nlag,nlead,condn,uprbnd)
    b=[];rts=[];ia=[];nexact=[];nnumeric=[];lgroots=[];aimcode=[];
    if(nlag<1 || nlead<1) 
        error('Aim_eig: model must have at least one lag and one lead');
    end
    % Initialization.
    nexact=0;nnumeric=0;lgroots=0;iq=0;aimcode=0;b=0;qrows=neq*nlead;qcols=neq*(nlag+nlead);
    bcols=neq*nlag;q=zeros(qrows,qcols);rts=zeros(qcols,1);
    [h,q,iq,nexact]=SPExact_shift(h,q,iq,qrows,qcols,neq);
    if (iq>qrows)
        aimcode = 61;
        return;
    end
    [h,q,iq,nnumeric]=SPNumeric_shift(h,q,iq,qrows,qcols,neq,condn);