comparison scripts/polynomial/polyeig.m @ 15187:045ae93e8fe9

polyeig: return eigenvectors of the _correct_ size
author Ed Meyer <eem2314@gmail.com>
date Thu, 19 Jul 2012 04:53:34 +0100
parents 504fec921af5
children 2ad5e6212cd7
comparison
equal deleted inserted replaced
15186:504fec921af5 15187:045ae93e8fe9
63 % solve generalized eigenvalue problem 63 % solve generalized eigenvalue problem
64 if ( isequal (nargout, 1) ) 64 if ( isequal (nargout, 1) )
65 z = eig (C, D); 65 z = eig (C, D);
66 else 66 else
67 [ z, v ] = eig (C, D); 67 [ z, v ] = eig (C, D);
68 varargout{1} = diag (v); 68 varargout{1} = v;
69 % return n-element eigenvectors normalized so
70 % that the infinity-norm = 1
71 z = z(1:n,:);
72 % max() takes the abs if complex:
73 t = max(z);
74 z /= diag(t);
69 endif 75 endif
70 76
71 endfunction 77 endfunction
72 78
73 ## sanity test
74 %!test 79 %!test
75 %! C0 = [8, 0; 0, 0]; C1 = [1, 0; 0, 0]; 80 %! C0 = [8, 0; 0, 4]; C1 = [1, 0; 0, 1];
76 %! z = polyeig (C0, C1); 81 %! [v,z] = polyeig (C0, C1);
77 %! assert (isequal (z(1), -8), true); 82 %! assert (isequal (z(1), -8), true);
78 83 %! d = C0*v + C1*v*z
84 %! assert (isequal (norm(d), 0.0), true);