dynare/tests/bgp/ramsey-1/checkjacobian.mod

35 lines
669 B
Modula-2

var c k x;
parameters alpha gam delta beta ;
alpha=0.5;
gam=0.5;
delta=0.02;
beta=0.05;
model;
x = x(-1)*1.02;
c + k - x^(1-alpha)*k(-1)^alpha - (1-delta)*k(-1);
c^(-gam) - (1+beta)^(-1)*(alpha*x(+1)^(1-alpha)*k^(alpha-1) + 1 - delta)*c(+1)^(-gam);
end;
verbatim;
bgp.write(M_);
MC = 1000;
maxabsdiff = 0;
for i=1:MC
y = 1+(rand(M_.endo_nbr,1)-.5)*.25;
G = ones(M_.endo_nbr,1)+0.01*randn(M_.endo_nbr,1);
jacobian = fjaco(@checkjacobian.bgpfun, [y;G]);
[Residuals, Jacobian] = checkjacobian.bgpfun([y;G]);
maxabsdiff = max(0, max(abs(jacobian(:)-Jacobian(:))));
end
assert(maxabsdiff<1e-6, 'Analytical jacobian is wrong.')
end;