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?
0 个评论
回答(1 个)
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.
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!