-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathSolveInflation2.m
52 lines (30 loc) · 2.72 KB
/
SolveInflation2.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
function [ Final_Inflation ] = SolveInflation2( ParameterValues, SteadyStateValuesNK, ParameterValuesLearning, t, ActualLawOfMotion, E_K, E_S )
% PURPOSE: solve the inflation given the state variable and infinite horizon expectations
% INPUT: state variables
% OUTPUT: inflation
function [ InflationOut ] = calculateInflation ( inflation )
if t == 1
R_minus = SteadyStateValuesNK.R;
k_minus = SteadyStateValuesNK.k;
else
R_minus = ActualLawOfMotion.interestRate(1,t-1);
k_minus = ActualLawOfMotion.capital(1,t-1);
end
A = ActualLawOfMotion.A(1,t);
k = ActualLawOfMotion.capital(1,t);
R = SteadyStateValuesNK.R*(1-ParameterValues.r_R)*ParameterValues.r_Infl*inflation-SteadyStateValuesNK.R*(1-ParameterValues.r_R)*ParameterValues.r_Infl+SteadyStateValuesNK.R;
X = -ParameterValues.theta*SteadyStateValuesNK.X/(1-ParameterValues.theta)/(1-ParameterValues.theta*ParameterValues.beta)*inflation+ParameterValues.theta*SteadyStateValuesNK.X...
/(1-ParameterValues.theta)/(1-ParameterValues.theta*ParameterValues.beta)+SteadyStateValuesNK.X/(1-ParameterValues.theta*ParameterValues.beta)*E_K+SteadyStateValuesNK.X;
rk = (SteadyStateValuesNK.R-SteadyStateValuesNK.R*(1-ParameterValues.r_R)*ParameterValues.r_Infl)/inflation+SteadyStateValuesNK.R*(1-ParameterValues.r_R)*ParameterValues.r_Infl-1+ParameterValues.delta;
w = (1-ParameterValues.alpha)*exp(A)/(ParameterValues.alpha*exp(A))^(-ParameterValues.alpha/(1-ParameterValues.alpha))*X^(-1/(1-ParameterValues.alpha))*rk^(-ParameterValues.alpha/(1-ParameterValues.alpha));
c = (1-ParameterValues.alpha)*exp(A)*k^(1-ParameterValues.eta)/(ParameterValues.alpha*exp(A))^((1-ParameterValues.eta-ParameterValues.alpha)/(1-ParameterValues.alpha))...
*X^(-ParameterValues.eta/(1-ParameterValues.alpha))*rk^((1-ParameterValues.eta-ParameterValues.alpha)/(1-ParameterValues.alpha));
InflationOut = ParameterValuesLearning.Cw*(w-SteadyStateValuesNK.w)+ParameterValuesLearning.Cx*(X-SteadyStateValuesNK.X)+ParameterValuesLearning.Ca*A+ParameterValuesLearning.Ck*(k-SteadyStateValuesNK.k)...
-SteadyStateValuesNK.R*SteadyStateValuesNK.k*(inflation-1)+ParameterValuesLearning.HR*(R-SteadyStateValuesNK.R)+SteadyStateValuesNK.k*(R_minus-SteadyStateValuesNK.R)+SteadyStateValuesNK.R*(k_minus...
-SteadyStateValuesNK.k)+E_S-ParameterValuesLearning.Hc*(c-SteadyStateValuesNK.c);
end
%Final_Inflation = fzero(@calculateInflation, 1);
[ Final_Inflation, ~, flag, ~ ] = fzero(@calculateInflation, 1);
disp('Flag IS: ')
flag;
end