35 lines
669 B
Modula-2
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;
|