MATLAB中的差分方程 - 为什么需要切换符号?

时间:2010-05-20 05:44:00

标签: matlab symbolic-math difference-equations

也许这更像是一个数学问题,而不是MATLAB问题,不太确定。我正在使用MATLAB来计算一个经济模型 - 新的混合ISLM模型 - 这是一个令人困惑的步骤,作者切换了解决方案的标志。

首先,作者声明符号变量并建立差分方程组。注意,后缀“a”和“2t”都表示“时间t + 1”,“2a”表示“时间t + 2”,“t”表示“时间t”:

   %% --------------------------[2] MODEL proc-----------------------------%%    
   % Define endogenous vars  ('a' denotes t+1 values)  
       syms  y2a  pi2a  ya  pia  va  y2t pi2t yt pit vt  ;   
   % Monetary policy rule  
      ia = q1*ya+q2*pia;   
   %  ia = q1*(ya-yt)+q2*pia;  %%option speed limit policy   
   % Model equations  
       IS   = rho*y2a+(1-rho)*yt-sigma*(ia-pi2a)-ya;   
       AS   = beta*pi2a+(1-beta)*pit+alpha*ya-pia+va;  
       dum1 = ya-y2t;  
       dum2 = pia-pi2t;  
       MPs  = phi*vt-va;          

       optcon  = [IS ; AS ; dum1 ; dum2; MPs];  

编辑:进入矩阵的方程式,就像它们出现在教科书中一样如下(花括号表示时间段值,希腊字母是参数):

第一个等式:

y{t+1} = rho*y{t+2} + (1-rho)*y{t} - sigma*(i{t+1}-pi{t+2})

第二个等式:

pi{t+1} = beta*pi{t+2} + (1-beta)*pi{t} + alpha*y{t+1} + v{t+1}

第三和第四是假人:

y{t+1} = y{t+1}
pi{t+1} = pi{t+1}

第五个很简单:

v{t+1} = phi*v{t}

继续,作者计算矩阵A:

    %% ------------------  [3] Linearization proc  ------------------------%%       
  % Differentiation   
     xx = [y2a  pi2a  ya  pia  va  y2t pi2t yt pit vt] ; % define vars  
     jopt = jacobian(optcon,xx);  

   % Define Linear Coefficients    
     coef = eval(jopt);  

    B =  [ -coef(:,1:5)  ] ;  
    C =  [  coef(:,6:10)  ] ;  
 % B[c(t+1)  l(t+1)  k(t+1)  z(t+1)] = C[c(t)  l(t)  k(t)  z(t)]  
    A = inv(C)*B ; %(Linearized reduced form ) 

据我了解,这个A是系统的解决方案。它是将时间t + 1和t + 2变量转换为t和t + 1变量的矩阵(它是一个前瞻性模型)。我的问题基本上是为什么有必要扭转B中所有偏导数的符号才能得到这个解?我正在谈论这一步:

B =  [ -coef(:,1:5)  ] ;

这里反转符号显然会反转A的每个组成部分的符号,但我不清楚为什么有必要这样做。如果问题不清楚或者这不是最好的问题,我很抱歉。

1 个答案:

答案 0 :(得分:2)

我认为关键是该模型具有前瞻性,因此斜率(偏导数)需要反转以便及时反转。考虑它的一种方法是说jacobian()函数总是计算前向时间方向的导数。

你有一个名为optcon = [IS; AS; dum1; dum2; MPs]的状态输出向量,以及两个输入状态向量[y2 pi2 y pi v]。在时间t + 1的输入矢量是[y2a pi2a ya pia va],并且在时间t的输入矢量是[y2t pi2t yt pit vt]。这两个被连接成一个向量,用于调用jacobian(),然后分开。同样的事情可以在两个电话中完成。 jacobian()输出的前5列是optcon相对于时间t + 1处输入向量的偏导数,而后5列是相对于时间t处输入向量的。

为了得到简化形式,你需要在时间t + 1提出两个optcon方程。 coef的后半部分就是所需要的。但是coef的前半部分是时间t + 2的optcon等式。诀窍是反转偏导数的符号,得到线性化系数,将t + 1处的输入向量输入t + 1处的输出optcon。