Разностные уравнения в MATLAB - зачем нужно менять знаки?
Возможно, это скорее математический вопрос, чем вопрос MATLAB, не совсем уверен. Я использую MATLAB для вычисления экономической модели - модели New Hybrid 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 )
Насколько я понимаю, это А является решением системы. Это матрица, которая превращает переменные времени t + 1 и t + 2 в переменные t и t + 1 (это прогнозная модель). По сути, мой вопрос: почему необходимо обратить знаки всех частных производных в B, чтобы получить это решение? Я говорю об этом шаге:
B = [ -coef(:,1:5) ] ;
Изменение знака здесь явно меняет знак каждого компонента А, но у меня нет четкого понимания, почему это необходимо. Мои извинения, если вопрос неясен или это не лучшее место, чтобы спросить.
1 ответ
Я думаю, что ключ в том, что модель ориентирована на будущее, поэтому наклоны (частные производные) необходимо повернуть вспять, чтобы вернуться назад во времени. Один из способов думать об этом - сказать, что функция 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(), а затем разделяются. То же самое можно было сделать за два звонка. Первые 5 столбцов выходных данных функции jacobian() являются частными производными optcon по отношению к входному вектору в момент времени t+1, а вторые 5 столбцов относятся к входному вектору в момент времени t.
Чтобы получить уменьшенную форму, вам нужно придумать два уравнения для optcon в момент времени t+1. Вторая половина мяса - это то, что нужно. Но первая половина коэффициента - это уравнение для optcon в момент времени t+2. Хитрость заключается в том, чтобы обратить знаки частных производных, чтобы получить линеаризованные коэффициенты, которые переводят входной вектор в момент времени t+1 в выходной optcon в момент времени t+1.