もう一度(これでだめな時は更新してください。) : 新しいNと場所で描き直します。
ガウス・ザイデル法(2011年6月7日公開、2011年06月12日10:17:26第1回の改訂)
●注意
上はJAVAで作られています。メモリを大量に使ったり、重くなるかもしれません。その時は、ごめんなさい。
実行後に画面をスクロールしたり、アプレット全体が画面に入ってないと、間違った画面になるかもしれないので、気をつけてください。画面の大きさを決めてから”もう一度”をクリックするか、更新(reload)してください。
ガウス・ザイデル法は、ホームページで数式を書くのは、ちょー面倒なので詳しくは参考文献を読む方がよろしいかとは思いますが、一次の連立方程式Ax=b(Aは行列、bはベクトル、xは答えのベクトル)でxを求める方法の一つです。
nu(ν)が反復回数で、ここでは、この反復回数が増えるについれて、Axとbの差がどれくらい小さくなるかを楽しんでいます。わーい。
なお、Aとbの要素を*.**の形式で表示していますが、実際には桁数をたくさん使っています。表示の都合で*.**にしています。
ヤコビ法では、対角成分が他の成分より小さい方が収束しやすい性質があるので、(ってかなり半端な説明ですみません。詳細は参考文献を参照。。。) じゃぁ、ガウス・ザイデルだとどうなのか、そのあたりはよくわからないのですが、このプログラムでは対角成分が他の成分よりも大きくなることが多くなるように乱数を使って、A, bを設定しています。
ここでは、求めたい連立方程式を
a11x1 + a12x2 +・・・+ a1jxj +・・・+ a1nxn = b1
a21x1 + a22x2 +・・・+ a2jxj +・・・+ a2nxn = b2
・・・
ai1x1 + ai2x2 +・・・+ aijxj +・・・+ ainxn = bi
・・・
an1x1 + an2x2 +・・・+ anjxj +・・・+ annxn = bn
と表現します。これを行列とベクトルを使ってあらわすと、ただし、行列とベクトルで使う括弧()はかっこ悪いけど使っていませんが・・・
A =
a11 a12 ・・・ a1j ・・・ a1n
a21 a22 ・・・ a2j ・・・ a2n
・・・
ai1 ai2 ・・・ aij ・・・ ain
・・・
an1 an2 ・・・ anj ・・・ ann
x=
x1
x2
・・・
xi
・・・
xn
b=
b1
b2
・・・
bi
・・・
bn
を使って、Ax=bとなります。
ガウス・ザイデル法は、
-------------
STEP 1
i = 1,2, ..., nの順に
xi(0)を適当にセットする。
STEP 2
ν=1,2, ...の順、i = 1,2,..., nの順に
xi(ν) = (bi - Σ(j=1)(j=i-1)aijxj(ν) - Σ(j=i+1)(j=n)aijxj(ν-1) ) / aii
を計算する。
-------------
というプロセスでxを求める方法です。
●参考文献
有本卓著、コロナ社、数値解析(1)
川上一郎著、岩波書店、数値計算
●プログラムのダウンロード
○Java(gs.java)
ご意見、ご感想、お問い合わせ、お願い等がございましたら、お気軽に、
メール送信フォームからメールを送るか、
●掲示板に書き込むか、
どちらかお好きな方法で、ご連絡お願いいたします。
●大山崇のホームページの利用について
●大山崇のホームページ