how to find eigenvectors using cholsky decomposition?

7 次查看(过去 30 天)
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?

回答(1 个)

John D'Errico
John D'Errico 2017-12-2
编辑:John D'Errico 2017-12-2
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 个评论
zyad
zyad 2017-12-2
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?

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Linear Algebra 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by