5

私は次の行列sigmaとsigmadを持っています:

シグマ:

    1.9958   0.7250
    0.7250   1.3167

sigmad:

    4.8889   1.1944
    1.1944   4.2361

Pythonで一般化された固有値の問題を解決しようとすると、次のようになります。

    d,V = sc.linalg.eig(matrix(sigmad),matrix(sigma))

V:

    -1     -0.5614
    -0.4352    1

matlabでgeの問題を解決しようとすると、次のようになります。

    [V,d]=eig(sigmad,sigma)

V:

    -0.5897    -0.5278
    -0.2564    0.9400

しかし、dは一致します。

4

1 に答える 1

11

固有ベクトルの(ゼロ以外の)スカラー乗も固有ベクトルになります。全体的な正規化ではなく、方向のみが意味を持ちます。ルーチンが異なれば、使用する規則も異なります。多くの場合、大きさが1に設定されているか、最大値が1または-1に設定されています。また、パフォーマンス上の理由から、内部的に一貫性がないルーチンもあります。2つの異なる結果は、互いに倍数になります。

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]])

したがって、それらは実際には同じ固有ベクトルです。行列をベクトルを変更する演算子と考えてください。固有ベクトルは、その方向を指すベクトルが行列によってねじれない特別な方向であり、固有値は、行列がベクトルをどれだけ拡大または縮小するかを測定する要素です。

于 2012-07-27T16:56:40.490 に答える