v4 my_ordeig.m: fixed bug with 2x2 blocks: the second complex eigenvalue was not the conjugate of the first! (bug caused by manual incrementation of the index of a for loop; a while loop solves the issue)

git-svn-id: https://www.dynare.org/svn/dynare/dynare_v4@1937 ac1d8469-bf42-47a9-8791-bf33cf982152
time-shift
sebastien 2008-07-07 21:38:43 +00:00
parent ddaaf9e1e3
commit 2d4d93df13
1 changed files with 15 additions and 16 deletions

View File

@ -1,5 +1,4 @@
function eval = my_ordeig(t)
function eigs = my_ordeig(t)
% function eval = my_ordeig(t)
% Computes the eigenvalues of a quasi-triangular matrix
%
@ -7,7 +6,7 @@ function eval = my_ordeig(t)
% t: quasi-triangular matrix
%
% OUTPUTS
% eval: eigenvalues
% eigs: eigenvalues
%
% SPECIAL REQUIREMENTS
% none
@ -16,18 +15,18 @@ function eval = my_ordeig(t)
% Gnu Public License.
n = size(t,2);
eval = zeros(n,1);
for i=1:n-1
if t(i+1,i) == 0
eval(i) = t(i,i);
else
k = i:i+1;
eval(k) = eig(t(k,k));
eigs = zeros(n,1);
i = 1;
while i <= n
if i == n
eigs(n) = t(n,n);
break;
elseif t(i+1,i) == 0
eigs(i) = t(i,i);
else
k = i:i+1;
eigs(k) = eig(t(k,k));
i = i+1;
end
i = i+1;
end
end
if i < n
eval(n) = t(n,n);
end