SVD problem

This forum is closed. You can read the posts but cannot write. We have migrated the forum to a new location where you will have to reset your password.
Forum rules
This forum is closed. You can read the posts but cannot write. We have migrated the forum to a new location (https://forum.dynare.org) where you will have to reset your password.

SVD problem

Postby ayatollah79 » Tue Sep 01, 2009 7:18 am

Please, I need help with the following error message:

??? Error using ==> svd
Input to SVD must not contain NaN or Inf.
Error in ==> cond at 40
s = svd(A);
Error in ==> solve1 at 117
elseif cond(fjac) > 1/sqrt(eps)
Error in ==> dynare_solve at 110
[x,info]=solve1(func,x,j1(r(i):r(i+1)-1),j2(r(i):r(i+1)-1),jacobian_flag,varargin{:});
Error in ==> steady_ at 69
[oo_.steady_state,check] = dynare_solve([M_.fname '_static'],...
Error in ==> steady at 52
steady_;
Error in ==> r_h at 193
steady;
Error in ==> dynare at 102
evalin('base',fname) ;

Here is my code:
// stochastic model

//endogenous variables
var k1 k2 k c h h1 h2 alpha_k alpha_h Delta eta y i r w lambda z1 z2 B1 pp
k1_k h1_h k_h;

//exogenous variables
varexo e1, e2;

//model´s parameters
parameters beta delta theta phi omega Bh rho1 rho2 gamma sigma1 sigma2;
beta = 0.991;
delta = 0.025;
theta = 0.360;
phi = 0.975;
omega = 0.0015;
Bh = 2.860;
rho1 = 0.950;
rho2 = 0.950;
gamma = 0.000;
sigma1 = 0.00712;
sigma2 = 0.00712;

// model equations:
model;
h = h1+h2;
k = k1+k2;
alpha_k = k1/k;
alpha_h = h1/h;
pp = omega*(lambda^2)/4;
eta = alpha_k*omega*(lambda/2);
Delta = z1*alpha_k^theta*alpha_h^(1-theta)*(1-theta*pp)
+ z2*(1-alpha_k)^(theta)*(1-alpha_h)^(1-theta)*phi;
y = k^theta*h^(1-theta)*Delta - k*eta;
i= k-(1-delta)*k(-1);
c+i = y;
c = w*h+r*k-i;
w = Bh*c;
(1/c) = beta*(1/c(+1))*(r(+1)+1-delta);
B1 = omega/(2-lambda*(1+omega));
B1*(1-lambda/2) = omega*((1+lambda*B1)/2);
r = B1*(1 - (lambda^2)*(omega/4)) - lambda*(omega/2) + theta*phi*k2^(theta-1)*h2^(1-theta);
lambda = 2*sqrt(((phi*z2)/((1+omega)*z1))*(h2/h1)^(1-theta));
w = (1-theta)*z2*k2^theta*h2^(-theta);
k1 = ((omega/((2-lambda*(1+omega))*theta*z1))^(1/(theta-1)))*h1;
z1 = rho1*z1(-1)+e1;
z2 = rho2*z2(-1)+e2;
k1_k = k1/k;
k_h = k/h;
end;

// initial values or guesses/
initval;
y = 1.1;
B1 = 1;
k = 11.487;
k1 = 5.6;
k2 = 5.6;
k1_k = 0.4895;
h1=0.1246;
h2=0.18;
h = 0.3046;
k_h =37.7;
c = 0.8155;
i = 0.2872;
w = 2;
r = 0.03;
lambda=1.5;
z1 = 1;
z2 = 1;
e1 = 0;
e2 = 0;
end;

/* adding steady will take initval as guesses, then
approximate steady s.s. and do simulations thereafter */

steady;
solve_algo = 0;

// performs check: # eigenvalues >1 = # exogenous variables
check;

/* introducing shocks: adds shock ´´e´´ with variance equals
to sigma^2 */
shocks;
var e1 = sigma1^2;
var e2 = sigma2^2;
end;

// simulation: stochastic
stoch_simul(periods=2100);
ayatollah79
 
Posts: 1
Joined: Tue Sep 01, 2009 7:10 am

Re: SVD problem

Postby SébastienVillemot » Wed Sep 02, 2009 8:47 am

Hi,

The problem comes from the derivatives of equation 7 (Delta = ...) with respect to alpha_k and alpha_h. Since you have not declared alpha_k and alpha_h in the initval block, their initial guess is set to zero by Dynare.

At this point, the derivative of equation 7 with respect to these two variables is not definite (it is zero to the power a negative number), so it creates NaNs in the jacobian of the model, hence the crash.

You should therefore initialize alpha_k and alpha_h with strictly positive values in initval.

When I put "alpha_k = 0.1" and "alpha_k = 0", the problem that you mentionned disappears. However Dynare still can't compute the steady state, because the Newton solver doesn't converge. You need either to give better initial values in "initval", or help Dynare with a steadystate file if you can analytically solve (at least some parts of) the steady state.

Best,
Sébastien Villemot
Economist at OFCE – Sciences Po
SébastienVillemot
 
Posts: 706
Joined: Fri Dec 07, 2007 2:29 pm
Location: Paris, France


Return to Dynare help

Who is online

Users browsing this forum: Google [Bot] and 10 guests