# fminbnd error while solving the neoclassical growth model

조회 수: 3(최근 30일)
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 2022년 10월 15일
kmat and v0 must be of the same size in order to use interp1.

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

### 범주

Find more on Oceanography and Hydrology in Help Center and File Exchange

### Community Treasure Hunt

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

Start Hunting!