3重対角化をすると固有値の計算が早くなるらしい。
固有値を解くための大まかな流れを描いてみた。
1.固有値を解きたい行列を用意
| a11, a12, a13, a14, a15|
| a21, a22, a23, a24, a25|
| a31, a32, a33, a34, a35|
| a41, a42, a43, a44, a45|
| a51, a52, a53, a54, a55|
2.行列を3重対角化(HouseHolder変換を使う)
| b11, b12, 0, 0, 0|
| b21, b22, b23, 0, 0|
| 0, b32, b33, b34, 0|
| 0, 0, b43, b44, b45|
| 0, 0, 0, b54, b55|
3.この変換後の行列を解く(QR法とか、ランチョス法とか)
ここでいつもムズムズしていた。
「そもそも3重対角化って現実世界でいうところの何をしてんの?可視化したい」
これらを大雑把に理解してみる。
・・・色々思い悩んだが、結局以下のアイデアにたどり着いた。
3重対角化行列は、有限要素法(FEM)でいうところの1次元のバネ連結モデルの行列に激似だ。
1次元のバネ連結モデルのイメージ(X方向のみ動く)

1次元のバネ連結モデルにバネの方程式を適用し、行列で描いたもの
| -k1, k1, 0, 0, 0| | dx1 | | f1 |
| k1, -(k2+k1), k2, 0, 0| | dx2 | | f2 |
| 0, k2, -(k3+k2), k3, 0| × | dx3 | = | f3 |
| 0, 0, k3, -(k4+k3), k4| | dx4 | | f4 |
| 0, 0, 0, k4, -k4| | dx5 | | f5 |
どうだろう、左側の行列は3重対角化そのまんまではないか!!!
ということで、「3重対角化にする」ということは、「1次元のばね連結モデルに置き換える」と言っていいのでは?
ということは、例え乱雑に繋がったバネモデルでも、固有値は1次元のバネ連結モデルに置き換えられる、と言えるだろう。
こんな感じの並列部分があるバネモデルでも置き換えられる。
「3重対角化」は、複雑なモデルを非常に単純なモデルに置き換えるのが目的なんだな。
少しムズムズが収まった。
今日はここまでで限界だ。ここまで書き進めると別の興味が沸いてくる。
「3重対角化を進める過程と、バネが統合される過程の対応を見たい」
それはきっと私には厳しい。ここまでにする。
[0回]