# HG changeset patch # User Ed Meyer # Date 1342670014 -3600 # Node ID 045ae93e8fe9a7b4b2ddd1b66caa36a4129bb7a7 # Parent 504fec921af579a19c1ef549202572bee0335798 polyeig: return eigenvectors of the _correct_ size diff -r 504fec921af5 -r 045ae93e8fe9 scripts/polynomial/polyeig.m --- a/scripts/polynomial/polyeig.m Thu Jul 19 04:50:43 2012 +0100 +++ b/scripts/polynomial/polyeig.m Thu Jul 19 04:53:34 2012 +0100 @@ -65,14 +65,20 @@ z = eig (C, D); else [ z, v ] = eig (C, D); - varargout{1} = diag (v); + varargout{1} = v; + % return n-element eigenvectors normalized so + % that the infinity-norm = 1 + z = z(1:n,:); + % max() takes the abs if complex: + t = max(z); + z /= diag(t); endif endfunction -## sanity test %!test -%! C0 = [8, 0; 0, 0]; C1 = [1, 0; 0, 0]; -%! z = polyeig (C0, C1); +%! C0 = [8, 0; 0, 4]; C1 = [1, 0; 0, 1]; +%! [v,z] = polyeig (C0, C1); %! assert (isequal (z(1), -8), true); - +%! d = C0*v + C1*v*z +%! assert (isequal (norm(d), 0.0), true);