numpy 和 Wolfram Alpha 给出不同的特征向量

问题描述 投票:0回答:1

对于以下矩阵,我尝试分别从 Numpy 和 Wolfram Alpha 获取特征值和特征向量。特征值相同,但特征向量不同。

Numpy 的结果:

In [36]: aa
Out[36]: 
array([[10, 14],
       [14, 20]])

In [37]: eigvals, eigvectors = np.linalg.eig(aa)

In [38]: eigvals
Out[38]: array([ 0.13393125, 29.86606875])

In [39]: eigvectors
Out[39]: 
array([[-0.81741556, -0.57604844],
       [ 0.57604844, -0.81741556]])

Wlfram Alpha 的结果(提示符:

((10, 14), (14, 20)), solve the eigenvalues and eigenvectors
):

如您所见,两个软件的特征值相同,但特征向量不同。特征向量不应该也一样吗?有人可以澄清吗?谢谢!

python-3.x numpy wolfram-mathematica linear-algebra wolframalpha
1个回答
0
投票

特征向量可以按比例放大或缩小,因为它们的大小无关紧要。

显示特征向量的首选方式是作为单位向量,这是 numpy 产生的。首选的原因是,如果作为列的特征向量矩阵是标准正交的,它会使源矩阵更容易对角化。

X = | -√(1/2 + 5√221/442)  -√(1/2 - 5√221/442) | = | -0.8174   -0.5760 |
    |  √(1/2 - 5√221/442)  -√(1/2 + 5√221/442) |   |  0.5760   -0.8174 |

wolfram 的结果为每个特征向量选择了不同的缩放比例,最后一个元素为 1

X = | √221/14 - 5/14    -√221/14 - 5/14 | = | 0.7047   -1.4190 |
    |       1                  1        |   | 1.0000    1.0000 |

两个结果都是正确的,因为都可以对角化原矩阵。你可以检查这个

D = inv(X) * | 10 14 | * X = | 15 - √221      0      | = |0.1339   0.0000 |
             | 14 20 |       |    0        15 + √221 |   |0.0000  29.8660 |

这是一个对角矩阵,其特征值在对角线元素中。


似乎 wolfram 做了一个符号操作,对于 2×2 矩阵

A = | A11  A12 |
    | A21  A22 |

通过求解方程组并将最后一个坐标设置为 1 来象征性地产生特征向量。

X = | (D+A11+2*A12-A22)/(D-A11+2*A21+A22) (D-A11-2*A12+A22)/(D+A11-2*A21-A22) |
    |                                   1                                   1 |

D = √(4*A12*A21 + (A11-A22)^2) > 0

© www.soinside.com 2019 - 2024. All rights reserved.