もう一度(これでだめな時は更新してください。) : 新しいNと場所で描き直します。
LU分解(2011年6月12日公開、2011年06月12日22:37:36第1回の改訂)
●注意
上はJAVAで作られています。メモリを大量に使ったり、重くなるかもしれません。その時は、ごめんなさい。
実行後に画面をスクロールしたり、アプレット全体が画面に入ってないと、間違った画面になるかもしれないので、気をつけてください。画面の大きさを決めてから”もう一度”をクリックするか、更新(reload)してください。
ここでは、連立方程式を解く方法を学ぶときに、たいていの教科書で紹介されているLU分解をやっています。LU分解自体は連立方程式を解かなくてもやってみることができるので、ここでは分解だけしています。
行列Aを括弧()はかっこ悪いけど使っていませんが・・・次のようにあらわします。
A =
a11 | a12 | ・・・ | a1j | ・・・ | a1n |
a21 | a22 | ・・・ | a2j | ・・・ | a2n |
・・・ |
ai1 | ai2 | ・・・ | aij | ・・・ | ain |
・・・ |
an1 | an2 | ・・・ | anj | ・・・ | ann |
この行列Aを以下のような下三角行列Lと上三角行列Uを使って、LU=Aとなるように分解するのがLU分解です。
L =
l11 | 0 | ・・・ | 0 | ・・・ | 0 |
l21 | l22 | 0・・・ | 0 | ・・・ | 0 |
・・・ |
ai1 | ai2 | ・・・ | lii | 0・・・ | 0 |
・・・ |
ln1 | ln2 | ・・・ | lnj | ・・・ | lnn |
U =
u11 | u12 | ・・・ | u1j | ・・・ | u1n |
0 | u22 | ・・・ | u2j | ・・・ | u2n |
・・・ |
0 | 0 | ・・・0 | ujj | ・・・ | uin |
・・・ |
0 | 0 | ・・・ | 0 | ・・・0 | unn |
ここで行っている分解の方法は、LU分解法と呼ばれるもので、以下のような感じです。
---------------
STEP 1
u11 = 1
l11 = a11
をセットする。
STEP 2
j =2,3,...,n の順に、
u1j = a1j / l11
を計算する。
STEP 3
i =2,3,...,n の順に、
li1 = ai1
を計算する。
STEP 4
k =2,3,...,n の順に、
ukk = 1
lkk = akk - Σ(m=1)(m=k-1)lkmumk
j = k + 1,...,n の順に、
ukj = (akj - Σ(m=1)(m=k-1)lkmumj ) / lkk
i = k + 1,...,n の順に、
lik = aik - Σ(m=1)(m=k-1)limumk
を計算する。
---------------
●参考文献
有本卓著、コロナ社、数値解析(1)
川上一郎著、岩波書店、数値計算
●プログラムのダウンロード
○Java(lu.java)
ご意見、ご感想、お問い合わせ、お願い等がございましたら、お気軽に、
メール送信フォームからメールを送るか、
●掲示板に書き込むか、
どちらかお好きな方法で、ご連絡お願いいたします。
●大山崇のホームページの利用について
●大山崇のホームページ