How to get orthogonal eigenvectors for degenerate normal matrix?
29 views (last 30 days)
Show older comments
I know that Matlab can guarantee the eigenvectors of a real symmetric matrix are orthogonal. In fact, for a general normal matrix which has degenerate eigenvalues, we can always find a set of orthogonal eigenvectors as well. But as I tried, Matlab usually just give me eigenvectors and they are not necessarily orthogonal. Is there any function that can give orthogonal eigenvectors, or is there some fancy alternative way to do it? Thanks!
0 Comments
Answers (2)
Christine Tobler
on 12 May 2017
I believe the Schur decomposition returns what you need. Here's an example
% Construct a normal matrix
U = orth(randn(100));
A = U*diag(randi(5, 100, 1))*U';
% Compute Schur decomposition
[V, T] = schur(A);
% Schur vectors are orthogonal
norm(V'*V - eye(100)) % only round-off error
% Matrix T is diagonal up to numerical error
norm(T - diag(diag(T))) % only round-off error: T is nearly diagonal
Therefore, if matrix A is normal, diag(T) are its eigenvalues, and V are its eigenvectors.
0 Comments
Matt J
on 26 Apr 2017
I think the eigenvalues of a normal matrix A are the same as A'*A, so I think you could get orthogonal eigenvectors just by doing
[V,~]=eig(A'*A);
7 Comments
Matt J
on 14 May 2017
Edited: Matt J
on 14 May 2017
I think I've found a way to prove that the qr decomposition of the eigenvector matrix [Q,R]=qr(V) will always give orthogonal eigenvectors Q of a normal matrix A. The proof assumes that the software for [V,D]=eig(A) will always return a non-singular matrix V when A is a normal matrix. Since a normal matrix has eigenvectors spanning all of R^n, I don't know why this wouldn't be the case. If true, it means that the upper-triangular matrix R in V=Q*R will also be non-singular.
Using the eigendecomposition equation for A,
A*V=V*D
and incorporating the QR-dceomposition of V leads to,
Q'*A*Q=R*D*inv(R)
The right hand side of this equation is triangular and the left hand side is normal. Both sides must therefore equal a diagonal matrix, T. Hence,
A=Q*T*Q'
and so Q are the orthogonal eigenvectors of A.
See Also
Categories
Find more on Linear Algebra in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!