特征向量。实现Jacobi算法

时间:2014-12-27 20:37:01

标签: algorithm matrix eigenvector wolframalpha

我正在实现Jacobi算法,以获得对称矩阵的特征向量。我不明白为什么我从我的应用程序获得不同的特征向量(与我的相同结果:http://fptchlx02.tu-graz.ac.at/cgi-bin/access.com?c1=0000&c2=0000&c3=0000&file=0638)和Wolfram Aplha不同:http://www.wolframalpha.com/input/?i=eigenvector%7B%7B1%2C2%2C3%7D%2C%7B2%2C2%2C1%7D%2C%7B3%2C1%2C1%7D%7D

示例矩阵:

1 2 3
2 2 1 
3 1 1

我的结果:

0.7400944496522529, 0.6305371413491765, 0.23384421945632447
-0.20230251371232585, 0.5403584533063043, -0.8167535949636785
-0.6413531776951003, 0.5571668060588798, 0.5274763043839444

来自WA的结果:

1.13168, 0.969831, 1 
-1.15396, 0.315431, 1 
0.443327, -1.54842, 1 

我希望解决方案很简单,但我找不到它。我在mathoverflow上问了这个问题,他们把我指向了这个网站。

1 个答案:

答案 0 :(得分:0)

矩阵的特征向量不是唯一的,并且存在多种可能的分解;实际上,只能定义唯一的本征空间。您收到的两个结果都是有效的。通过要求Wolfram Alpha将第二个矩阵正交化,您可以很容易地看到它。 Run the following query

Orthogonalize[{{1.13168, 0.969831, 1.}, {-1.15396, 0.315431, 1.}, {0.443327, -1.54842, 1.}}]

获取

 0.630537    0.540358    0.557168
-0.740094    0.202306    0.641353
 0.233844   -0.816754    0.527475

现在您可以看到您的算法返回了正确的结果。首先,矩阵被转置:WA给你行向量,你的算法在列中返回它们。然后,第一个向量乘以-1,但任何特征向量都可以乘以非零常数,以产生有效的特征向量。否则,结果完全匹配。

您可能还会发现以下数学StackExchange答案有用:Are the eigenvectors of a real symmetric matrix always an orthonormal basis without change?