用MATLAB演示新古典增长模型-经管之家官网!

人大经济论坛-经管之家 收藏本站
您当前的位置> 考研考博>>

考研

>>

用MATLAB演示新古典增长模型

用MATLAB演示新古典增长模型

发布:Bonnsecret | 分类:考研

关于本站

人大经济论坛-经管之家:分享大学、考研、论文、会计、留学、数据、经济学、金融学、管理学、统计学、博弈论、统计年鉴、行业分析包括等相关资源。
经管之家是国内活跃的在线教育咨询平台!

经管之家新媒体交易平台

提供"微信号、微博、抖音、快手、头条、小红书、百家号、企鹅号、UC号、一点资讯"等虚拟账号交易,真正实现买卖双方的共赢。【请点击这里访问】

提供微信号、微博、抖音、快手、头条、小红书、百家号、企鹅号、UC号、一点资讯等虚拟账号交易,真正实现买卖双方的共赢。【请点击这里访问】

程序是由卡内基梅隆大学的DanLi编写的,邮箱是danli@andrew.cmu.edu,个人网页:www.danli.org此贴仅供学习参考。假设没有人口增长和技术进步,劳动力的供给是没有弹性的。模型是Deterministicneoclassicalgrowthmod ...
免费学术公开课,扫码加入


程序是由卡内基梅隆大学的Dan Li 编写的,邮箱是danli@andrew.cmu.edu,个人网页:www.danli.org
此贴仅供学习参考。
假设没有人口增长和技术进步,劳动力的供给是没有弹性的。模型是Deterministic neoclassical growth model。
所用的生产函数是科布道格拉斯函数,效用函数是幂指数效用函数。
先定义生产函数:
% Cobb-Douglas production function
% Y=F(K,N)=K^{alpha}*N^{1-alpha}
% In per capita form y=k^{alpha}
function y=cobb(k)
global alpha
if alpha>0 & alpha<1
y=k.^alpha;
else
y=-inf*abs(k);
disp('invalid capital share')
end
再定义效用函数:
% Power utility function u(c)=c^(1-gamma)/(1-gamma) if gamma ~= 1;
% u(c)=ln(c) if gamma=1.
% Utility is only defined if c>=0 for gamma<1 and c>0 if gamma>1
% The risk aversion coefficient is pass on to the function by
% define it as a global variable.
function u=util(c)
global gamma;
u=-inf*ones(size(c)); % initialize into -inf, change only those c positive
cpos=find(c>0); % find those positive c
if gamma==1
u(cpos)=log(c(cpos));
else
u(cpos)=c(cpos).^(1-gamma)./(1-gamma);
end
然后定义画图函数:
function vgc_plot(k,kstar,v,Polc,g, METHOD)
% plot the value function against k
% plot capital policy for next period against captial this period
% save variable
% input is the k vector, optimal-- kstar, value --v, capital policy - g
% METHOD=1 if deterministic noninterpolation
% Method=2----Deterministic, continuous state space model, With interpolation
gstar=ppval(spline(k,g),kstar);% g value at optimal kstar
vstar=ppval(spline(k,v),kstar);% v value at optimal kstar
T=char( ' No Interpolation, Deterministic',...
' With Interpolation, Deterministic');
figure(1);
plot(k,v); hold on;
plot(kstar,vstar,'ro');
text(kstar+.1,vstar-.1,['k*=' num2str(kstar)]);
title(['Value Function--' T(METHOD,:)]);
xlabel('capital k');ylabel('value');
axis square; hold off;
print('-dpsc',['ValFun' num2str(METHOD)]);
figure(2);
subplot(2,1,1); plot(k,Polc);
title('Policy Function-Consumption');
xlabel('Capital Kt'); ylabel('Consumption');
subplot(2,1,2); plot(k,g,k,k,'-'); hold on;
plot(kstar,gstar,'ro');
text(kstar+.1,gstar-.1,['g*=' num2str(gstar) '| k*=' num2str(kstar)]);
title('Policy Function-Capital');
xlabel('Capital Kt'); ylabel('Capital Next Period');
hold off;
print('-dpsc', ['PolFun' num2str(METHOD)]);
save(['growth' num2str(METHOD)]);
最后运行新古典增长模型:
clc;
clear all;
% ------Model Parameter specification---------
global gamma alpha
gamma=1; % risk aversion coefficient, log utility function
alpha=0.3; % capital share
beta=0.96; % discount factor
delta=.1; % depreciation rate
z=1; % initial state for deteriministic case
method=input(['Method=?,\n'...
'1 for Deterministic,No interpolation \n' ...
'2 for Deterministic With Interpolation,\n']);
%------ Parameter of computation--------------------------
nk=input(['Number of grid?(20-200 for Method 1)\n'...
'(<=30 for Method 2, <=200 for Method 3)>>']); % number of grid
maxloop=40; % number of maximum iteration
tol=10^(-3); % tolerence level for value function iteration
tic; % start the clock
% ******Low and upper bound of state variable k ******
% Steady state value kstar, f'(kstar)=1/beta-1+delta
kstar=(((1/(alpha*beta))-((1-delta)/alpha)))^(1/(alpha-1));
lowk=0.8*kstar;
upk=1.2*kstar;
k=linspace(lowk,upk,nk)';% build up grid
[K,Kprime]=meshgrid(k);
v=zeros(size(k))*ones(size(z)); vn=v;
g=v; gn=g;
loop=0; dv=1; dk=1;
if method==1
%--------------------------------------
%No Interpolation Method, Method=1
%---------------------------------------
C=cobb(K)+(1-delta)*K-Kprime;
U=util(C);
kpos=100*ones(size(k));% initial value of loop and distance of value
while dv>tol & loop<=maxloop & dk
loop=loop+1;
[vn,kposn]=max(U+beta*v*ones(1,nk));%new value vector
vn=vn'; kposn=kposn';
dv=max(abs((vn-v)./(v+eps)));
dk=~all(kpos==kposn); % whether or not position exactly the same
v=vn; kpos=kposn;
end
g=k(kpos);%policyfunction of next period capital
elseif method==2;
%--------------------------------------
%Interpolation Method, Method=2
%---------------------------------------
while dv>tol & dk>tol & loop<=maxloop
loop=loop+1;
pp = spline(k,v);
vf=inline('-(util(-y+cobb(k)+(1-delta)*k)+beta*ppval(pp,y))','y','k','delta','beta','pp');
for ik=1:nk
[gn(ik),vn(ik)]=fminbnd(vf,lowk,upk,[],k(ik),delta,beta,pp) ;
vn(ik)=-vn(ik);
end;
dk=max(abs((gn-g)./(g+eps)));
dv=max(abs((vn-v)./(v+eps)));
v=vn; g=gn;
end;
end
%------------------------------------------------------------
% use calculated k g to get consumption policy and plot , save
%--------------------------------------------------------------
%Polc=cobb(k)*z+(1-delta)*k*ones(size(z))-g; %policy function of consumption
Polc=cobb(k)+(1-delta)*k-g; %policy function of consumption
vgc_plot(k,kstar,v,Polc,g, method);
%--------------so other output for observation of convergence--------------
t=toc% read clock
「经管之家」APP:经管人学习、答疑、交友,就上经管之家!
免流量费下载资料----在经管之家app可以下载论坛上的所有资源,并且不额外收取下载高峰期的论坛币。
涵盖所有经管领域的优秀内容----覆盖经济、管理、金融投资、计量统计、数据分析、国贸、财会等专业的学习宝库,各类资料应有尽有。
来自五湖四海的经管达人----已经有上千万的经管人来到这里,你可以找到任何学科方向、有共同话题的朋友。
经管之家(原人大经济论坛),跨越高校的围墙,带你走进经管知识的新世界。
扫描下方二维码下载并注册APP
本文关键词:

本文论坛网址:https://bbs.pinggu.org/thread-3080884-1-1.html

人气文章

1.凡人大经济论坛-经管之家转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
经管之家 人大经济论坛 大学 专业 手机版