Dynamische Makroökonomik, nichtstochastisches Wachstumsmodell
Dieses Batch-File löst das nicht-stochastische Wachstumsmodell mit endogenem Arbeitsangebot und stellt Wertfunktionen aus den Iterationsschritten sowie die Politikfunktion graphisch dar; Datum: 02-06-10 Autor: Christian Bayer
Contents
Sauberer Arbeitsplatz
clc
clear
close all
Modell:



Definiere Modellparameter
beta = 95/100; % Diskontfaktor alpha = 1/3; % Anteil des Faktors Kapital am Volkseinkommen delta = 1/10; % Abschreibungsrate theta = 3.5;% Arbeitsleid: so gewählt, dass der steady state Arbeitseinsatz % 0.2*24[Stunden/Tag]*7[Tage/Woche]*52/45[Woche/Arbeitswoche]=39 Stunden pro Arbeitswoche beträgt gamma = 1.016; % Arbeitsvermehrendes Trendwachstum
Definiere Programmparameter
Nk=200;
Berechne steady state Kapitaleinsatz
Bedingungen erster Ordnung: Intertemporale Optimalität 
somit: 
Optimaler Kapitaleinsatz 
Also: 
Optimaler Arbeitseinsatz:
, 
Einsetzen:
,
![$N=(((1-\alpha))/(1-\alpha+\theta[1-(\delta+\gamma-1)((\alpha/(r+\delta)))]))$](non_stochastic_growth_eq20381.png)
r = (gamma-beta)/beta; % Zinssatz Nss = (1-alpha)/(1-alpha+theta*(1-(delta+gamma-1)*(alpha/(r+delta)))); %Steady state Arbeitseinsatz Kss = (alpha / (r + delta))^(1/(1- alpha))*Nss; % Steady State Kapitaleinsatz Yss = Kss^alpha* Nss^(1-alpha); % Steady state output
Lege ein Gitter für K fest
Kmax=4*Kss; % Maximaler Kapitalstock steady state +300% Kmin=0.2*Kss; % Minimaler Kapitalstock steady stae -80% k_grid=(linspace((Kmin),(Kmax),Nk)); % Äquidistantes Gitter in log Skala
Finde zunächst den optimalen Arbeitseinsatz gegeben k und k'
Bedingungen erster Ordnung für optimalen Arbeitseinsatz:
(Arbeitsnachfrage)
(Arbeitsangebot)
empl=NaN(Nk); sigma=NaN(Nk); %Nutzen bei optimalem Arbeitseinsatz for i=1:Nk max_y=k_grid(i).^alpha+(1-delta).*k_grid(i); %Resourcen bei $N = 1$ for j=1:Nk if max_y>k_grid(j)*gamma % Nur Investitionspläne betrachten die bei vollem Arbeitseinsatz durchführbar sind [empl(i,j) sigma(i,j)] = fminbnd(@(n)(util(n,k_grid(i),k_grid(j),theta,alpha,gamma,delta)),0,1); else empl(i,j) = 1; sigma(i,j) = Inf; end end end sigma=-sigma; % -Zielfunktion wurde minimiert
Code der Unterfunktion util
function u = util(n,k,kprime,theta,alpha,gamma,delta)
- c=k.^alpha.*n.^(1-alpha) + (1-delta).*k - gamma.*kprime;
- u=log(c)+theta*log(1-n);
- u(c<0)=-Inf;
- u=-u;
Wertfunktionsiteration
Hier wird ausnahmsweise zu Darstellungszwecken die Wertfunktion in jedem Iterationsschritt gespeichert
dist=99; V=zeros(1,Nk); %Initialisiere die Werfunktion t=1; while dist>0.001 t=t+1; [V(t,:) pol]=max(sigma+beta*repmat(V(t-1,:),Nk,1),[],2); dist=max(abs(V(t,:)-V(t-1,:))); end
Graphische Darstellung
figure(1) ind=[1 10 20 40 80 120]; plot(k_grid,V(ind,:)') title('Wertfunktion') xlabel('Kapitalstock') ylabel('Wert') for j=1:length(ind) ll{j}=['Nach ' num2str(ind(j)) 'Iterationen']; end legend(ll) figure(2) title('Politikfunktion') xlabel('Kapitalstock in t') ylabel('Kapitalstock in t+1') plot(k_grid,k_grid(pol)) hold on plot([Kss Kss],[k_grid(1) k_grid(end)],'g:') plot(k_grid,k_grid,'r') legend({'nächster Kapitalstock', 'steady state','45° Linie'})