Matlab VS Python - eig(A,B) VS sc.linalg.eig(A,B)

前端 未结 1 1903
独厮守ぢ
独厮守ぢ 2020-12-04 02:22

I have the following matrices sigma and sigmad:

sigma:

    1.9958   0.7250
    0.7250   1.3167

sigmad:

    4.8889           


        
相关标签:
1条回答
  • 2020-12-04 02:59

    Any (nonzero) scalar multiple of an eigenvector will also be an eigenvector; only the direction is meaningful, not the overall normalization. Different routines use different conventions -- often you'll see the magnitude set to 1, or the maximum value set to 1 or -1 -- and some routines don't even bother being internally consistent for performance reasons. Your two different results are multiples of each other:

    In [227]: sc = array([[-1., -0.5614], [-0.4352,  1.    ]])
    
    In [228]: ml = array([[-.5897, -0.5278], [-0.2564, 0.94]])
    
    In [229]: sc/ml
    Out[229]: 
    array([[ 1.69577751,  1.06366048],
           [ 1.69734789,  1.06382979]])
    

    and so they're actually the same eigenvectors. Think of the matrix as an operator which changes a vector: the eigenvectors are the special directions where a vector pointing that way won't be twisted by the matrix, and the eigenvalues are the factors measuring how much the matrix expands or contracts the vector.

    0 讨论(0)
提交回复
热议问题