You are on page 1of 2

Subroutine objct_fnct

function [f_objct] = objct_fnct(x,fpar,k,v,k0)


Z = fpar(1);
eta = fpar(2);
lambda = fpar(3);
theta = fpar(4);

lb=[eps 0];
V = [];
C = [];
H = [];
Err = [];
error = 2*tol;
cont=0;
options = optimset('Display','off','LargeScale','off');
while (error > tol) %& (cont<5)
cont = cont+1;
for i = 1:length(k_ev)
k_prev = k_ev(i);
ub = [k_ev(i) 1];
x0 = [1 0.5];
[x,value] = fmincon(fname,x0,[],[],[],[],lb,ub,[],options,fpar,k_ev,v_old,k_prev);
ktp1 = x(1);
ht = x(2);
v_new(i) = -value;
c_opt(i) = lambda*(k_prev^theta)*(ht^(1-theta)) +(1-delta)*k_prev - ktp1;
h_opt(i) = ht;
end
error = sum(abs(v_new-v_old)./max(abs(v_new),abs(v_old)))/length(k_ev)
Err(cont) = error;
v_old = v_new;
end
C = c_opt;
H = h_opt;
V = v_new;

Main Program
% Value Function and Policy Functions
clear all;
clc;
tic
tol=1e-3;
% Parameters
A = 1.72;
eta = .5;
lambda = 3;
theta = .4;
delta = .12;
beta = .98;
fpar=[A eta lambda theta delta beta];
% Possible k's
k_ev = 0:0.1:4;
k_ev(1) = eps;
np_ev = length(k_ev);
% Get the value function and policy functions
v0 = 85*ones(1,np_ev);
[k_ev,V,C,H,Err] = value_fnct('objct_fnct',fpar,k_ev,v0,tol);
toc
% Plot results
figure
subplot(2,2,1:2)
plot(k_ev(2:end),V(2:end));
hold on
subplot(2,2,3)
plot(k_ev,C,'r-')
hold on
subplot(2,2,4)
plot(k_ev,H,'b-')
hold off
% Steady State
equations = @(x) [lambda*(x(1)^theta)*(x(2)^-theta)/((lambda*...
x(1)^theta*x(2)^(1-theta) - delta*x(1))^eta) - (A/(1-x(2)));
1/beta - theta*(x(2)/x(1))^(1-theta)-(1-delta)];
x0=[1 0.5];
[x,fval]=fsolve(equations,x0,[]);
kss = x(1)
hss = x(2)
css = lambda*(kss^theta)*(hss^(1-theta)) - delta*kss

You might also like