• ベストアンサー

行列の固有ベクトルの解法

現在行列の固有値と固有ベクトルをもとめるプログラムを作成しています。 手順としては、入力行列をハウスホルダー法により三重対角行列に変換し、その後QR法で対角化を行い固有値を求めます。 固有ベクトルはLU分解を使用して固有値ごとに求めていこうと考えました。 現状固有値を求めるプログラムは作成できました(そして正しく求められていることも確認しました)。そして行列のLU分解を行うプログラムまで作成できたのですが、LU分解後の行列から固有ベクトルを求める方法がわかりません。 詳しく説明します Ax = λx を (A - Iλ)x = 0 として、この(A - Iλ)をLU分解しました。 すると式は LUx = 0 となり 最終的に Ux = 0 をとく問題になります。 ここで行列Uは上三角行列なので、1次の連立方程式を解くように、行列Uの右下の要素を使って計算を始めていくのですが、自分がなにか勘違いをしているのだと思うのですがこの方法で計算すると固有ベクトルが全て0になってしまいます。  行列U     x       0 | 2 3 4 5 | |x1|   =  |0| | 0 4 2 9 | |x2|   =  |0| | 0 0 7 5 | |x3|   =  |0| | 0 0 0 8 | |x4|   =  |0| このような図式になり、固有ベクトルであるxを求めていくのですが、x4から順にもとめても0にしかならないんです。 下記のサイトを参考に学んでいたんですが、この部分が分からずにいます。 http://hooktail.org/computer/index.php?KL%C5%B8%B3%AB2 どこを勘違いしているんでしょうか? アドバイスをお願いします。  

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

Lの方は対角成分が全部1で、正則だから、Uが正則でなくなるはずです。 ご質問文のUは正則になってしまっていますが…。 例えば、数値計算の誤差のために、0になるべきものに、小さな≠0の値が入っていたりしませんか?

noconan
質問者

補足

すいません。単純なミスをしてしまいました。 右下の8は0です。 見間違えてしまいました・・・・・ 申し訳ないです。 とすると正則ではないですね・・・・・・

その他の回答 (2)

noname#101087
noname#101087
回答No.3

| 2 3 4 5 | |x1|   =  |0| | 0 4 2 9 | |x2|   =  |0| | 0 0 7 5 | |x3|   =  |0| | 0 0 0 0 | |x4|   =  |0| これを所与としましょう。 最下行は任意の (x1 x2 x3 x4) で成立しますから、仮に x4 = 1 とおけば、x1~x3 が求まりますね。 これ、固有ベクトルの一つじゃありませんか ?

noconan
質問者

お礼

返信ありがとうございました。 おっしゃられるとおり、X4を1にすれば1つの固有ベクトルが求まります。 自分の見間違いでこんな質問をしてしまって申し訳ありませんでしたTT

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

λ を A の固有値とすると A - λI は正則じゃないので, A - λI = LU と分解したときに L と U の少なくとも一方は正則じゃないです. 挙げられた例だと U が正則なので, 対応する L は正則でないということになります. つまり LUx = 0 から Ux = 0 が導けません.

noconan
質問者

お礼

返答ありがとうございました。 Ax=λx (A-λI)x=0 A-λI=LUとして LUx=0とかけます。 ここでUx=Cと置くと LC=0となります。 行列L     C       0 | 1 0 0 0 | |x1|   =  |0| | 3 1 0 0 | |x2|   =  |0| | 3 8 1 0 | |x3|   =  |0| | 7 2 6 1 | |x4|   =  |0| ここで通常の連立方程式を解くように計算をすると、明らかにCは0ですよね。 よって Ux=C が Ux=0と記述できると思うのですが・・・・

関連するQ&A