== maximaの初歩的な操作6・・・行列計算,固有値,固有ベクトル ==
携帯版

○Xmaxima,wxMaxima のインストール方法,基本操作については[この頁]参照

○行列に名前を付けて,値を代入するには
2×2行列

の場合
A : matrix([1,2],[3,4]);
などとします.

3×3行列

の場合
B : matrix([1,0,1],[0,-1,0],[2,1,-1]);
などとします.(特に大文字を用いる必要はない.)

○行列の和・差・定数倍,積を求めるには

のように同じ型の行列については,対応する要素の和・差・定数倍からなる行列を求めることができます.
x+y;
と入力すれば,

のように出力されます.wxMaximaの方は見た目の通りですが,Xmaxiamの方はテキストアートのように描かれ,中間に1行分余計に[   ]のような行が入ります.

x−y;
と入力すれば,

のように出力されます.

3*x;
と入力すれば,行列xの各成分に3を掛けたもの

が出力されます.

行列の積


x . y;
のようにピリオド(もしくはドット)を使って表します.

○行列の累乗を求めるには


x ^^ 2;
のようにカレット2つを使って表します.
(カレット1つは,「各成分の累乗」となるので注意)
x ^ 2;


【行列式の値,逆行列を求めるには】
(1) 正方行列の行列式を求めるには
(2) 正方行列の逆行列を求めるには
○Xmaxima,wxMaximaいずれも次のようになります.
 入力結果
(出力)
(1) 例えば
の行列式の値を求めるには
Aの定義式を入力A:matrix([1,2],[3,4]);
行列式を求めるdeterminant(A);
−2
(2) 例えば
の逆行列を求めるには
Aの定義式を入力A:matrix([1,2],[3,4]);
invert(A);
または累乗表示でA^^(-1)

wxMaximaの方は見た目の通りですが,Xmaxiamの方はテキストアートのように描かれ,中間に1行分余計に[   ]のような行が入ります.

【正方行列の固有値と固有ベクトルを求めるには】
(1) の固有値を求めるには
(2) の固有ベクトルを求めるには

○Xmaxima,wxMaximaいずれも次のようになります.
(1) ここまでの作業で,まだ行列Aの定義式を入力していない場合は,入力します.
A : matrix([5,-1],[6,-2]);
 次に,固有値を求めるには,
eigenvalues(A);eigenvalues であることに注意
 結果は次のようになりますが,これは[固有値,固有値],[重複度,重複度]の順に並んでいます.
[[4, - 1], [1, 1]]
 これは,固有値λ1=4が重複度1,固有値λ2=−1が重複度1,合計2個の固有値があることを示しています.

(2) すでに行列Aが定義されている場合には,
eigenvectors(A);eigenvectors であることに注意
 結果は次のようになります.
[[  [4, - 1], [1, 1]  ], [ [ [1, 1] ], [ [1, 6] ] ]]
 これは
[[[固有値1,固有値2],
[重複度1,重複度2]],
[[[固有ベクトル1 x成分,固有ベクトル1 y成分]],
[[固有ベクトル2 x成分,固有ベクトル2 y成分]]]]
の順に並んでいます.
固有ベクトルの定数倍はすべて固有ベクトルになるので,たとえば1つの固有ベクトルがであるとき任意の定数についても固有ベクトルとなる.したがって,一般に,固有ベクトルは任意定数倍を除いて定まる.
すなわち,固有値λ1=4(重複度1)の固有ベクトルは
固有値λ2=−1(重複度1)の固有ベクトルは

≪その他,固有値・固有ベクトルの例≫
番号行列固有値固有ベクトル(固有値の順に対応)
(1)4 ,9
(2)−1 ,4
(3)
(4)1 , 2 , 3
(5)2 , −1 , 1
(6)1 , 2, −2


【正方行列を対角化するためには】
(1) の固有値,固有ベクトルを求めて対角化するには
(2) の固有値,固有ベクトルを求めて対角化するには
≪対角化とは≫
2次の正方行列が異なる2つの固有値α, β
及びそれらに対応する固有ベクトルをもつとき


が成り立つ.したがって

そこで,固有ベクトルを固有値に対応する順に2つ束ねた行列を

と置くと

が成り立つ.
もしに逆行列が存在すれば(⇔det(A)≠0
…(I)
もしくは
…(II)
(I)もしくは(II)の形は行列のn乗を求める上で重宝される.すなわち,一般の行列のn乗を求めるには複雑な成分計算を要するのに対して,対角行列のn乗は各成分のn乗だけで求められるので
他方で,の形の行列は



となるから
(I)→


となって,が求められる.((II)から変形しても同様)
 「行列を対角化せよ」という問題に対しては,このように(固有値と固有ベクトルは対応する順に並べるものとして)
固有ベクトルを束にした行列
固有値を対角成分に並べた行列
を示して
…(I)
の形で示せばよい.(II)でも内容は同じ.
3次の正方行列の場合は,異なる3つの固有値があれば同様にして求められる.
○Xmaximaでは次のように求められます.(wxMaximaでは[代数]→[手入力による行列生成]など対話型メニューからでもできます)

(1) 行列Aの定義式を入力します.
A : matrix([-4,15],[-2,7]);
Aの固有ベクトルを求めます.
eigenvectors(A);
次の結果が得られます.

これは,順に次のことを表している.
[[[固有値α, 固有値β], [αの重複度, βの重複度]],
[[[αに対する固有ベクトルのx成分, αに対する固有ベクトルのy成分]],
[[βに対する固有ベクトルのx成分, βに対する固有ベクトルのy成分]]]]
固有ベクトルは定数倍を問わないから,次の形で整数成分にしてもよい.



これにより
…(答)

(2) 行列Bの定義式を入力します.
B : matrix([3,-2,2],[2,-3,5],[2,-4,6]);
Aの固有ベクトルを求めます.
eigenvectors(B);
次の結果が得られます.

これは,順に次のことを表している.
[[[固有値α, 固有値β, 固有値γ],
[αの重複度, βの重複度, γの重複度]],
[[[αに対する固有ベクトルのx成分, 同y成分, 同z成分]],
[[βに対する固有ベクトルのx成分, 同y成分, 同z成分]],
[[γに対する固有ベクトルのx成分, 同y成分, 同z成分]]]]
固有ベクトルは


これにより
…(答)
≪類似問題とその結果≫
番号行列A行列P行列P−1対角行列P−1AP
(1)
(2)
(3)
(4)


【行列の階数を求めるには】
 行列の階数を求めるには
○Xmaxima, wxmaximaとも
 行列Aの定義式を入力します.
A : matrix([1,1,-3],[-1,0,5],[0,3,6]);
 Aの階数を求めます.
rank(A);
次の結果が得られます.
2
≪補足説明:行列の階数とは≫
 行列の階数とは,1次独立な行ベクトルの個数(または,1次独立な列ベクトルの個数)の最大値です.
 正方行列でなくても階数は定義されます.
◇たとえばこの問題では(3行)=3×(1行)+3×(2行)だから,(3行目)は他の2行の1次結合で表せます.したがって,1次独立な行は2つです.
◇また,(3列)=2×(2列)-5×(1列)だから,(3列目)は他の2列の1次結合で表されます.
 どちらで調べても,1次独立なベクトルの最大数は2個です.このとき行列の階数は2であるといいます.
.
≪類似問題とその結果≫
行列
階数2 1 3 
行列
階数3 3 2 

...メニューに戻る ..maximaのメニューに戻る