how to find eigenvectors using cholsky decomposition?

9 views (last 30 days)
my question concerns matrix decompositions and their cpu consumed time. Suppose we have a square matrix Y*Y' (Y' is the the Y transpose).
--------------------------Using SVD-----------------------------------------
if we want to find eigenvectors U of Y*Y' we can apply SVD on Y and find: YY'=USV'. this method takes time.
--------------------------Using QR-----------------------------------------
1) we decompose Y in Y=QR.
2) after that YY'=QRR'Q'.
3)we apply the economic SVD on R' => R'=UDV'
4) include step 3 in 2 gives: YY'=QVDV'Q' => QV is eigenvectors of YY'. this method takes less time than SVD.
How to apply cholsky to accelerate the process?

Answers (1)

John D'Errico
John D'Errico on 2 Dec 2017
Edited: John D'Errico on 2 Dec 2017
Why would you possibly want to do so?
1. Cholesky will cost you accuracy, because in order to form the Cholesky factors, you need to form Y'*Y.
2. QR, applied to Y is both fast and accurate. (Use the economy QR.)
BTW, how is this even a MATLAB question at all?
But, if you insist on the use of Cholesky, since you did all of the above linear algebra, surely you see that forming the economy svd of the cholesky factor of Y'*Y gives you what you want, even if it is a bad idea in the first place.
That is, if
Y'Y = L'*L
then just take the svd of L and see what happens in the linear algebra.
As I said, a bad idea in terms of accuracy. The smaller eigenvalues/vectors will potentially be complete crap.
  1 Comment
zyad
zyad on 2 Dec 2017
thank you for the answer. Why would I possibly want to do cholsky decomposition? By trying this, I want to compare the performance of SVD, QR and cholsky decompositions in term of accuracy and rapidity. can you be more precise in how to find these eigenvectors?

Sign in to comment.

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!