An eigen decomposition problem in programming

  • Thread starter Asuralm
  • Start date
35
0

Main Question or Discussion Point

Hi all:

I have a covariance matrix which is like:

0.00166713 -0.00060678 4.60534e-05
-0.00060678 0.00178576 -0.000244526
4.60534e-05 -0.000244526 0.000772057

And then I want to eigen decompose the matrix to obtain the eigenvector matrix. I tried several methods, one is to use the LaEigSolve in the lapack++ library. This gives me the result:

0.655504 -0.742432 0.138237
-0.743371 -0.60208 0.291375
0.133097 0.293759 0.946568

Then I tried to use svdcmp routine of the Numerical recipe which gives me:

-0.655504 0.742432 0.138237
0.743371 0.60208 0.291375
-0.133097 -0.293759 0.946568

I also tried to use eig() in matlab which gives me:

-0.6555 0.7424 0.1383
0.7434 0.6021 0.2914
-0.1331 -0.2938 0.9465

By using pcacov(), the result is:

-0.6555 -0.7424 0.1383
0.7434 -0.6021 0.2914
-0.1331 0.2938 0.9465

Actually, I am writing a program of Pinciple Component Analysis in C++. But I don't really know which one is reliable and correct. The pcacov() seems to give me the correct result but I really don't understand why it's different from the others.

Can anyone help me with it please?

Thanks
 

Answers and Replies

341
0
reconstruct the original matrix let say Ahat by using your decomposed matrices, and compute the norm of |A-Ahat|. Then decide for yourself. Do this in a for loop for a couple of hundred matrices of course...
 

Related Threads for: An eigen decomposition problem in programming

Replies
28
Views
2K
  • Last Post
Replies
1
Views
7K
  • Last Post
Replies
3
Views
1K
  • Last Post
Replies
3
Views
607
  • Last Post
Replies
2
Views
2K
  • Last Post
Replies
2
Views
3K
  • Last Post
Replies
6
Views
3K
Replies
5
Views
2K
Top