Community
cancel
Showing results for
Did you mean:
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

3 Replies
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.

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?

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.