changed elimination of static variables

git-svn-id: https://www.dynare.org/svn/dynare/dynare_v4@463 ac1d8469-bf42-47a9-8791-bf33cf982152
time-shift
michel 2005-09-27 20:22:05 +00:00
parent 884bff3678
commit d6a008b7c3
1 changed files with 9 additions and 4 deletions

View File

@ -138,7 +138,12 @@ sdyn = M_.endo_nbr - nstatic;
k1 = M_.lead_lag_incidence(find([1:klen] ~= M_.maximum_lag+1),:);
b = jacobia_(:,M_.lead_lag_incidence(M_.maximum_lag+1,order_var));
a = b\jacobia_(:,nonzeros(k1'));
a = b(1:M_.nstatic,1:M_.nstatic)\jacobia_(1:M_.nstatic,:);
a = [ a; jacobia_(M_.nstatic+1:end,:)-b(M_.nstatic+1:end,1:M_.nstatic)* ...
a];
b1 = b(1:M_.nstatic,1:M_.nstatic)\b(1:M_.nstatic,M_.nstatic+1:end);
b2 = b(M_.nstatic+1:end,M_.nstatic+1:end)-b(M_.nstatic+1:end,1:M_.nstatic)* ...
b1;
nz = nnz(M_.lead_lag_incidence);
if any(isinf(a(:)))
info = 1;
@ -178,13 +183,12 @@ e = d ;
k = find(kstate(:,2) >= M_.maximum_lag+2 & kstate(:,3));
d(1:sdyn,k) = a(nstatic+1:end,kstate(k,3)) ;
k1 = find(kstate(:,2) == M_.maximum_lag+2);
a1 = eye(sdyn);
e(1:sdyn,k1) = -a1(:,kstate(k1,1)-nstatic);
e(1:sdyn,k1) = -b2(:,kstate(k1,1)-nstatic);
k = find(kstate(:,2) <= M_.maximum_lag+1 & kstate(:,4));
e(1:sdyn,k) = -a(nstatic+1:end,kstate(k,4)) ;
k2 = find(kstate(:,2) == M_.maximum_lag+1);
k2 = k2(~ismember(kstate(k2,1),kstate(k1,1)));
d(1:sdyn,k2) = a1(:,kstate(k2,1)-nstatic);
d(1:sdyn,k2) = b2(:,kstate(k2,1)-nstatic);
if ~isempty(kad)
for j = 1:size(kad,1)
@ -279,6 +283,7 @@ if nstatic > 0
temp = -a(1:nstatic,j3)*gx(j4,:)*hx;
j5 = find(kstate(n4:nd,4));
temp(:,j5) = temp(:,j5)-a(1:nstatic,nonzeros(kstate(:,4)));
temp = temp-b1*dr.ghx;
dr.ghx = [temp; dr.ghx];
temp = [];
end