fminbnd error while solving the neoclassical growth model

조회 수: 3(최근 30일)
Prerna Mishra
Prerna Mishra 2022년 10월 15일
댓글: Torsten 2022년 10월 15일
I am using fminbnd to solve the neoclassical growth model and I have the following code for main.m
clear all;
close all;
tic
global v0 beta delta alpha kmat k0 s
%set up the fixed paramters
alpha = 0.33; %capital share
beta = 0.95;%discount rate
delta = 0.1; %rate of depreciation of capital
s = 2;
tol = 0.01;%tolerance
maxits = 1000;%maximum iteration
dif = tol + 100;
its = 0;
kstar = (alpha/(1/beta-(1-delta)))^(1/(1-alpha));
cstar = kstar^(alpha)-delta*kstar;
istar = delta * kstar;
ystar = kstar ^ alpha;
kmin = 0.25*kstar;
kmax = 1.75*kstar;
kgrid = 99;
grid = (kmax - kmin)/kgrid;
kmat = kmin:grid:kmax;
kmat = kmat';
[N,n] = size(kmat);
polfun = zeros(kgrid+1,3);
while dif>tol && its < maxits
for i = 1:N
k0 = kmat(i,1);
k1 = fminbnd(@valfun,kmin,kmax);%continuous choice set, so it will search over all values
%of k1 between kmin and kmax. For this reason, we need to
%interpolate values of the value function off of the grid
v1(i,1) = -valfun(k1);
k11(i,1) = k1;
end
dif = norm(v1-v0);
v0=v1;
its = its + 1;
end
for i = 1:N
con(i,1) = kmat(i,1)^alpha - k11(i,1) + (1-delta)*kmat(i,1);
polfun(i,1) = kmat(i,1)^(alpha) - k11(i,1) + (1-delta)*kmat(i,1);
end
toc
The value function valfun.m is as follows:
function val=valfun(k)
% This program gets the value function for a neoclassical growth model with
% no uncertainty and CRRA utility
global v0 beta delta alpha kmat k0 s
g = interp1(kmat,v0,k,'linear'); % smooths out previous value function
c = k0^alpha - k + (1 - delta)*k0; % consumption
if c<=0
val = - 888888888888888888 - 800*abs(c); % keeps it from going negative
else
val=(1/(1 - s))*(c^(1-s)-1) + beta*g;
end
val = -val;
When I run, I keep getting the following error:
Error using interp1>reshapeAndSortXandV (line 447)
LENGTH(X) and SIZE(V,1) must be the same.
Error in interp1 (line 128)
[X,V,orig_size_v] = reshapeAndSortXandV(X,V);
Error in valfun (line 8)
g = interp1(kmat,v0,k,'linear'); % smooths out previous value function
Error in fminbnd (line 232)
x= xf; fx = funfcn(x,varargin{:});
Error in main (line 38)
k1 = fminbnd(@valfun,kmin,kmax);%continuous choice set, so it will search over all values
I am not sure what I am doing wrong. I think I followed all the steps to set up fminbnd as in the online help.
Thanks
  댓글 수: 1
Torsten
Torsten 2022년 10월 15일
kmat and v0 must be of the same size in order to use interp1.

댓글을 달려면 로그인하십시오.

답변(0개)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by