1. Limited time only! Sign up for a free 30min personal tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

An eigen decomposition problem in programming

  1. Apr 28, 2008 #1
    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?

  2. jcsd
  3. Apr 28, 2008 #2
    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...
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook