この人頭いいなと思ったエピソード

現在行列の固有値と固有ベクトルをもとめるプログラムを作成しています。

手順としては、入力行列をハウスホルダー法により三重対角行列に変換し、その後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% …


どこを勘違いしているんでしょうか? アドバイスをお願いします。

 

A 回答 (3件)

Lの方は対角成分が全部1で、正則だから、Uが正則でなくなるはずです。



ご質問文のUは正則になってしまっていますが…。

例えば、数値計算の誤差のために、0になるべきものに、小さな≠0の値が入っていたりしませんか?

この回答への補足

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

とすると正則ではないですね・・・・・・

補足日時:2007/09/20 00:02
    • good
    • 0

| 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 が求まりますね。
これ、固有ベクトルの一つじゃありませんか ?
    • good
    • 0
この回答へのお礼

返信ありがとうございました。

おっしゃられるとおり、X4を1にすれば1つの固有ベクトルが求まります。

自分の見間違いでこんな質問をしてしまって申し訳ありませんでしたTT

お礼日時:2007/09/22 14:29

λ を A の固有値とすると A - λI は正則じゃないので, A - λI = LU と分解したときに L と U の少なくとも一方は正則じゃないです.


挙げられた例だと U が正則なので, 対応する L は正則でないということになります. つまり LUx = 0 から Ux = 0 が導けません.
    • good
    • 0
この回答へのお礼

返答ありがとうございました。
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と記述できると思うのですが・・・・

お礼日時:2007/09/19 23:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報