忘却の微分方程式(49) 反復練習13、行列の対角化その2 Maxima

Joseph Halfmoon

前回、みんな大好き P-1AP ってやつまでたどり着いていたので、今回は単純な計算練習のつもり。練習っていって計算するのはMaxima様ですが。けれど単純に以下同文できないところが用意されとりました。「固有値が重解を持つ場合でも、対角化可能なものもある」と。勿論、対角化可能でないものもあるっと。恐れ入ります。

※「忘却の微分方程式」投稿順 index はこちら

※以下の参考書(以下URLは「改訂9」)の「改訂1」版の演習問題をMaximaの練習用に使わせていただいております。

線形代数キャンパス・ゼミ 改訂9 馬場敬之/著

数学の御本なのに数学の勉強には全然なってないです。恐れ多いことです。

計算練習:3x3行列の変換行列を用いた対角化

前回やった事に準じて作成した手順が以下に。Pの作成のところがチト順番やらスカラー倍やらしているのは教科書と「バッチリ」な途中経過にするためのお化粧であります。

B: matrix([-1, 2, 1], [0, 4, 2], [0, -1, 1])
EB: eigenvectors(B)
X1: transpose(EB[2][1][1])
X2: transpose(EB[2][2][1])
X3: transpose(EB[2][3][1])
P: addcol(X3, X2, 3*X1)
PI: invert(P)
PI . B . P

まずは固有ベクトルを求めたところが以下に。

diagMat000

リスト形式の固有ベクトルから列ベクトル形式での取り出し。列ベクトルを並べて変換行列Pを作るところまで。

diagMat001

変換行列Pが出来たので、 P-1AP して対角化っと。

diagMat002

対角化できたようです。これなら、この手順のまま関数にしてしまいたいくらい。でも大丈夫か?

計算練習:2x2行列の変換行列を用いた対角化

一歩もどって、2x2行列の場合の計算問題が以下に。以下同文的に解いてみます。

C: matrix([3, 4], [-1, -2])
EC: eigenvectors(C)
X1: transpose(EC[2][1][1])
X2: transpose(EC[2][2][1])
P: addcol(4*X1, X2)
PI: invert(P)
(P^^-1) . C . P

まずは固有ベクトルを求め、diagMat010

列ベクトルを取り出して、

diagMat011

変換行列を作って、 P-1AP。diagMat012

対角化できましたな。

計算練習:3x3行列の変換行列を用いた対角化、問題の件

同様に3x3行列ですが、以下はちょっとトラブった件。

D: matrix([2, 1, 0], [1, 2, 0], [1, 1, 1])
ED: eigenvectors(D)
X1: transpose(ED[2][1][1])
X2: transpose(ED[2][2][1])
X3: transpose(ED[2][2][2])
P: addcol(X2, X3, X1)
(P^^-1) . D . P

ぼーっとして生きているので、以下の固有値、固有ベクトルのお答えがちょいと違うのを最初は見逃してます。

diagMat020

いつもの手順で列ベクトルを取り出そうとして、エラーに遭遇しました。こんな感じ。diagMat021

これは、eigenvectors()の返り値を見れば分かるのですが、固有値が重解でした。ただ、その固有値に対応するベクトルはというと線形独立な2つのベクトルが得られていました。diagMat020EC

列ベクトルの「抽出」の指定方法を変更して、抽出しなおし、変換行列を作って、 P-1APしてみます。diagMat022

対角化できました。でも、固有値が重解のとき、いつでも線形独立なベクトルが得られると思うなよ、と。ダメなこともあるのだ、と。

忘却の微分方程式(48) 反復練習12、固有値と固有ベクトル、対角化 Maxima へ戻る

忘却の微分方程式(50) 反復練習14、列ベクトルの内積となす角Θ へ進む