Community
cancel
Showing results for 
Search instead for 
Did you mean: 
steffenroeber
Beginner
67 Views

left and right eigenvector

Hi,

I'M trying to use the ippmEigenValuesVectorsLeft_m_64f and ippmEigenValuesVectorsRight_m_64f functions.

I think there is a bug (or I missunderstand) the defintion:

A*z=λ*z for the right eigenvectors z,

zH*A=λ*zH for the left eigenvectors z,

My example:

A(2x2) = 2, -2, 1, 5

ippmEigenValuesVectorsLeft_m_64f gives λ1=3, λ2=4

and eigenvectors(2x2) = -0,89, 0.71, 0.44, -0.71

ippmEigenValuesVectorsRight_m_64f gives λ1=3, λ2=4

and eigenvectors(2x2) = -0,71, -0.44, -0.71, -0.89

The test of the definition fails. It seems that the result of ippmEigenValuesVectorsLeft_m_64f are the right eigenvectors. The result of ippmEigenValuesVectorsRight_m_64f I does not match do any defintion.

Example:

z1 = -0.89, 0.44

A*z1=-2.69, 1.34 and 3*z1=-2.69, 1.34 -> defintion of right eigenvectors but result of left eigenvectors

0 Kudos
3 Replies
Gennady_F_Intel
Moderator
67 Views

yes, at the first glance it looks like a bug. I would recommend you to try mkl's implementation of EigenSolvers. MKL's implementation much more stable (I mean eignesolvers only in that case ) and optimize for medium and big problems.

steffenroeber
Beginner
67 Views

I tried LAPACKE_dgeev. It works mostly. But for example.A(2,2) = 1,2, -2, 5. gives two (same) eigenvalues 3,3., but only one eigenvector. Is this the correct behaviour?

Andrey_B_Intel
Employee
67 Views

Hi Steffen.

I've checked your issue with matlab. You are absolutely right, there is error in IPP func.

>> A=[2 -2 ;1 5]

A =

     2    -2
     1     5

>> [V D] = eig(A)

V =

   -0.8944    0.7071
    0.4472   -0.7071


D =

     3     0
     0     4

>> [VL D] = eig(A')

VL =

   -0.7071   -0.4472
   -0.7071   -0.8944


D =

     3     0
     0     4

>>

It looks like that IPP left and right vectors are just swapped. This issue wil be fixed in next release.

 

Reply