質問<3595>2007/8/25 from=小豆 「行列」
いつもお世話になっています。
以下の問題を教えて下さい。
行列
について
の正規直交基底をなす3つの固有ベクトルを求めよ。
* 計算したら、固有値がt=8,−1(重根)となり3つの固有ベクトルが
直交しないのですが、計算が間違っているのでしょうか?
アドバイス宜しくお願いします。
* 以前質問した行列の問題はよくわかりました!落ち着いて解いてみて
納得しました。解答を下さった皆様、ありがとうございました。
★希望★完全解答★
計算が間違っているのでしょうか?
いや、計算は間違ってませんよ。合ってます。
以前、3566でも書きましたが、Maximaでは固有ベクトルの計算もあっと言う間に行えます。
従って、検算なんかにも役立つんで、「この計算合ってるかしら?」等と不安に陥った時にもMaximaに頼ってください。特に線形代数の分野は計算がややこしいんでね・・・・・・。
また、別のトコにも書きましたが、MaximaではAlgebraと書かれたプルダウンメニューに大体、頻出の「良く使う」線形代数関連の命令が入っています。従って、労力的な事を考えたら、まずはMaximaで問題を解くにあたって使えそうな関数が無いか探す癖を付けてください。数年前、「高校数学の窓」でMaximaを初めて紹介した時よりも格段に使い易くなってはいるのですから。
万が一、小豆さんの計算とMaximaが出した答えが食い違って、小豆さんの解の方が正しかったら、それは立派な「バグ発見」です。Maximaの提供元に胸を張ってバグ報告しましょう(笑)。そうする事でオープンソース界への立派な貢献となります。
さて、取り敢えずMaximaを起動しましょうか。
では、デスクトップの壁紙に萌えながら作業を開始しますか(笑)。僕だけですがね(笑)。
まずは行列AをMaximaに入力しましょう。これも方法は3566に記述してありますね。従って、細かい手順は省いてサクサク進めます。
さて、Maximaで固有ベクトルを求めるコマンドは以下のようになります。
eigenvectors(固有ベクトルを求めたい行列)
以上です。
なお、eigenvectorとはドイツ語で固有ベクトルを意味しています。英語で言うと、eigenとはproperの意味なんですが、元々eigenとはドイツ語での数字の1(ein)から来ていて、従って「たった一つの〜」→「固有の」と言う意味になるんです。豆知識だよッ!!!(by 桜塚やっくん)
今、Maxima上では問題の行列をAとして定義してるので、次のようにMaxima下段の入力セクションに入力します。
eigenvectors(A)
さて、[Enter]キーを叩いてみましょう。
Maximaでは
[[[固有値],[固有値の個数]],固有ベクトル]
の順番で出力されます。
従って、上の出力を見る限り、小豆さんが計算した通り、固有値をとすると、
(個数=1)
(個数=2:重解)
ってのは間違ってないんですね。合ってます。
従って、固有値の総数が三つだとすると一次独立な固有ベクトルは三つ存在し、それぞれの固有ベクトルを、、とすると、
となるのは確かに間違い無いんです。
そして性器化、もとい(笑)、正規化された固有ベクトル(正規基底)、、、はそれぞれ
となります。
ところで、得られる固有ベクトルは確かに一次独立ですが、必ずしも直交している必然性はありません。いわば、
3つの固有ベクトルが直交しないのです
ってのは当たり前なんです。小豆さんはこのあたり、ちょっと勘違いしている気がします。確かに直交は一次独立のうちの一つですが、逆は成り立たないのです。一次独立のベクトルが全て直交しているワケではありません。この辺り、もう1回教科書に戻って良く確認して下さい。
すなわち、この問題は解くにあたって、固有ベクトルを求めれば終わり、と言うような問題ではないんです。追加作業が必要なのです。
・・・・・・とか言いながら、実は僕も一次独立の正規基底を直交化する方法なんて知らなかったんですね(笑)。いいなあ、高校数学の窓って(笑)。色々新しい事柄覚えられる(笑)。
ええと、一次独立の正規基底を直交化する方法論ってのはキチンと確立されている模様です。それをグラム・シュミットの直交化とか言うらしいです。
んで、僕も今初めて知ったくらいなんで(笑)、解説できません(笑)。理論的な背景、またはその計算手順に関してはこのページでも参考になさってください。
(もっとも幾何学的には一つの軸を基準としてそれに交差している面を直交させた後、二軸を開いたりして互いに直交させるような作業は充分アリ、でしょう。)
ここではMaximaを使って得られた固有ベクトルをグラム・シュミット方式で正規直交化してみましょう。
Maximaのグラム・シュミット直交化のコマンドは
gramschmidt(x)
で行えます。ここでxは固有ベクトル(ないしは正規基底)を縦に並べた行列、とします。
例えば、上の例で言うと
と並べたような行列ですね。
ではMaximaに行列Xを入力してみましょう。
次にMaxima下段の入力欄に以下のように入力して[Enter]キーを叩きます。
gramschmidt(X)
はい。答えが出てきましたね。
ここで正規直交基底を、、とすると、
となるようです。
各基底が直交していて、かつ、長さが1であることを確認してみてください。
以上です。
Maxima Manual: 行列と線形代数
0 コメント:
コメントを投稿