[Numpy-discussion] Eigenvectors in Matlab vs. Numpy
Saket
saketn at gmail.com
Sun Jun 29 22:00:22 EDT 2008
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