[Numpy-discussion] Eigenvectors in Matlab vs. Numpy

Saket saketn at gmail.com
Sun Jun 29 22:14:56 EDT 2008


Also, I'm getting different numbers when I do the above using eig(A)
and eigh(A). I thought eigh would be faster, but would still give the
same results...


On Sun, Jun 29, 2008 at 10:00 PM, Saket <saketn at gmail.com> wrote:
> Hmm... so the relationship Ax = Lx should hold for every eigenvalue
> and corresponding eigenvector of A, right? But, consider the first
> eigenvalue,eigenvector pair:
>
>    for i,eval in enumerate(d):
>        print abs(numpy.dot(A,v[i]) - numpy.dot(eval,v[i])).max()
>        return
>
> Outputs: 1.928
>
> I thought maybe the ith eigenvector corresponds to a different (not
> the ith) eigenvalue, but there doesn't seem to be any eigenvalue which
> corresponds to the ith eigenvector such that the relationship holds...
>
> Thanks again.
>
> Saket
>
> atlas_threads_info:
>  NOT AVAILABLE
>
> blas_opt_info:
>    libraries = ['f77blas', 'cblas', 'atlas']
>    library_dirs = ['C:\\local\\lib\\yop\\sse2']
>    define_macros = [('ATLAS_INFO', '"\\"?.?.?\\""')]
>    language = c
>
> atlas_blas_threads_info:
>  NOT AVAILABLE
>
> lapack_opt_info:
>    libraries = ['lapack', 'f77blas', 'cblas', 'atlas']
>    library_dirs = ['C:\\local\\lib\\yop\\sse2']
>    define_macros = [('ATLAS_INFO', '"\\"?.?.?\\""')]
>    language = f77
>
> atlas_info:
>    libraries = ['lapack', 'f77blas', 'cblas', 'atlas']
>    library_dirs = ['C:\\local\\lib\\yop\\sse2']
>    language = f77
>
> lapack_mkl_info:
>  NOT AVAILABLE
>
> blas_mkl_info:
>  NOT AVAILABLE
>
> atlas_blas_info:
>    libraries = ['f77blas', 'cblas', 'atlas']
>    library_dirs = ['C:\\local\\lib\\yop\\sse2']
>    language = c
>
> mkl_info:
>  NOT AVAILABLE
>
>
>
> On Sun, Jun 29, 2008 at 9:15 PM, Charles R Harris
> <charlesr.harris at gmail.com> wrote:
>>
>>
>> On Sun, Jun 29, 2008 at 6:47 PM, Saket <saketn at gmail.com> wrote:
>>>
>>> Hi,
>>>
>>> I'm having this weird problem when computing eigenvalues/vectors with
>>> Numpy. I have the following symmetric matrix, B:
>>>
>>>   -0.3462    0.6538    0.5385   -0.4615    0.6538   -0.3462   -0.3462
>>> -0.3462
>>>    0.6538   -0.3462    0.5385   -0.4615    0.6538   -0.3462   -0.3462
>>> -0.3462
>>>    0.5385    0.5385   -0.6154    0.3846    0.5385   -0.4615   -0.4615
>>> -0.4615
>>>   -0.4615   -0.4615    0.3846   -0.6154   -0.4615    0.5385    0.5385
>>>  0.5385
>>>    0.6538    0.6538    0.5385   -0.4615   -0.3462   -0.3462   -0.3462
>>> -0.3462
>>>   -0.3462   -0.3462   -0.4615    0.5385   -0.3462   -0.3462    0.6538
>>>  0.6538
>>>   -0.3462   -0.3462   -0.4615    0.5385   -0.3462    0.6538   -0.3462
>>>  0.6538
>>>   -0.3462   -0.3462   -0.4615    0.5385   -0.3462    0.6538    0.6538
>>> -0.3462
>>>
>>> I compute the eigenvalues and eigenvectors of B using
>>> numpy.linalg.eig(B). I get the following eigenvalues:
>>>
>>> [  2.79128785e+00  -1.79128785e+00   1.64060486e-16  -3.07692308e-01
>>>  -1.00000000e+00  -1.00000000e+00  -1.00000000e+00  -1.00000000e+00]
>>>
>>> I do the same thing in Matlab and get the SAME eigenvalues. However,
>>> my eigenVECTORS in Matlab versus numpy are different. It makes no
>>> sense to me. In general, the following relationship should hold: Bx =
>>> Lx, where B is my matrix, x is an eigenvector, and L is the
>>> corresponding eigenvalue. For the eigenvectors that Matlab returns, I
>>> have confirmed that the relationship does hold. But for the Numpy
>>> eigenvectors, it doesn't!
>>>
>>> Any idea why this might be happening? I did some computations myself
>>> and it looks like the Matlab output is correct. Just seems like the
>>> eigenvectors that Numpy is returning are wrong...
>>>
>>> Thanks for any suggestions.
>>
>> Also note that the -1 eigenvalue has multiplicity 4. This means that any set
>> of orthogonal vectors spanning the same eigenspace will do for eigenvectors,
>> i.e., they aren't unique and roundoff error is likely to have a large effect
>> on what you end up with.
>>
>> Chuck
>>
>>
>>
>> _______________________________________________
>> Numpy-discussion mailing list
>> Numpy-discussion at scipy.org
>> http://projects.scipy.org/mailman/listinfo/numpy-discussion
>>
>>
>



More information about the NumPy-Discussion mailing list