0

対称行列の固有ベクトルを取得するために、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 でこの質問をしたところ、このサイトを教えてくれました。

4

1 に答える 1

0

行列の固有ベクトルは一意ではなく、複数の可能な分解があります。実際、一意に定義できるのは固有空間だけです。受け取っている両方の結果は有効です。これは Wolfram Alpha に 2 番目の行列を直交化するように依頼することで簡単に確認できます。次のクエリを実行します

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 が掛けられますが、有効な固有ベクトルを生成するために任意の固有ベクトルにゼロ以外の定数を掛けることができます。それ以外の場合、結果は完全に一致します。

次のMathematics StackExchangeの回答も役立つかもしれません: Are the eigenvectors of a real symmetric matrix always an orthonormal base without change?

于 2014-12-27T22:47:37.023 に答える