[Octave]固有値、固有ベクトルを求める
eig関数を使う。固有値、固有ベクトルを求めたい行列を引数に与えると、固有ベクトルと固有値が一緒に返ってくる。
以下に求めた例を示す。見てのとおり、対称行列でなくても求めることができる。
>> mxaa = [3, -2; 1, 0;]
mxaa =
3 -2
1 0
>> [mxxx, l] = eig(mxaa)
mxxx =
0.8944 0.7071
0.4472 0.7071
l =
Diagonal Matrix
2 0
0 1
1つ目の戻り値が固有ベクトル、2つ目が固有値。例えば1つ目の固有値と固有ベクトルを取り出すには、以下のようにする。
>> l(1, 1)
ans = 2
>> mxxx(:, 1)
ans =
0.8944
0.4472
2つ目の固有値と固有ベクトル。
>> l(2, 2)
ans = 1
>> mxxx(:, 2)
ans =
0.7071
0.7071
以下、2つの行列の固有値と固有ベクトルを求めた例。
>> mxaa = [6, -3, 5; -1, 4, -5; -3, 3, -4]
mxaa =
6 -3 5
-1 4 -5
-3 3 -4
>> [mxxx, l] = eig(mxaa)
mxxx =
7.0711e-01 -3.0151e-01 -3.4940e-15
7.0711e-01 -9.0453e-01 8.5749e-01
2.7081e-15 -3.0151e-01 5.1450e-01
l =
Diagonal Matrix
3 0 0
0 2 0
0 0 1
>> mxaa = [3, -1, 1; 0, 2, 1; 0, 0, 3]
mxaa =
3 -1 1
0 2 1
0 0 3
>> [mxxx, l] = eig(mxaa)
mxxx =
1.0000 0.7071 0
0 0.7071 0.7071
0 0 0.7071
l =
Diagonal Matrix
3 0 0
0 2 0
0 0 3