境界条件、境界でのポテンシャルの値を決めることで、方程式と未知数の数が一致するこ
とは前に示したとおりである。したがって、連立方程式を解けば、格子点のポテンシャル
は分かることになる。しかし、実際問題この方程式を作るのが大変である。未知数のポテ
ンシャルは、分かりやすくするために
と行列で表示したが、実際に連立方程式
を解く場合、未知数としてベクトルになる。この式を書くのは大変厄介である。本当に大
変かどうかは、諸君が実際に、係数行列と同次項を求めてみれば分かる。
そこで、次のお手軽な方法で連立方程式を解くことにする。この方法は、連立方程式の係
数行列や同次項を求める必要がなく、プログラムは非常に簡単になる。
- 外周の境界上の格子点のポテンシャルの値をに代入する。こ
の値は、これ以降、ずっと一定とする。
- 電極の内部の格子点のポテンシャルの値をを代入する。この
値も、これ以降、ずっと一定とする。
- 計算すべき内部の格子点のポテンシャルを、
に従い計算する。
- が収束するまで、繰り返し、式
(10)を計算する。
実際、この方法で無限の回数ループ処理をすれば、真の解に収束するはずである。このよ
うに、反復により解に収束させる方法を反復法と言う。とくに、ここで示した方法をガウ
ス・ザイデル法という。以前学習したように、SOR法の法が収束が早いが、ここではプログラムが簡単なガウス・ザイデル法で計算するのは良いであろう。
格子点がポテンシャルが固定されている内部電極の内側にあるか否か判断しなくてはなら
ない。内部にあるとそれは固定点で、先に示したガウス・ザイデル法で値を変えてはなら
ない。一方、外部だと境界でない限り、ガウス・ザイデル方で計算しなくてはならない。
そのようなことから、電極内部にあるか否かは予め判断する必要がある。その判断は簡単
である。格子点と電極中心の距離と電極半径を比べれば良いのである。
固定電極内部の点や外部の境界の格子点では、ガウスザイデル方で計算する必要がない。
それを計算しないようにプログラムを書かなくてはならない。境界の計算を省くのは簡単
である。境界の格子点のポテンシャルは、
の場合である。この
場合、ガウス・ザイデル法で式(
10)の
を計算し
なければ良いのである。
次に、電極内部の点であるが、これは予め目印を付ければ良い。例えば、整数型の配列を
用意して、その値が1の場合は、電極の内部と目印をしておく。1以外の時、式
(10)のを計算する。
以上をまとめると、連立方程式を解く場合には、次のようなループとすれば良いであろう。
for(k=1; k<=ガウス・ザイデル法の計算回数;k++){
for(j=1; j<= x方向の分割数-1 ; j++){
for(i=1; i<= y方向の分割数-1 ;i++){
if(フラグ[i][j] != 1){
u[i][j]=0.25*(u[i][j-1]+u[i][j+1]+u[i-1][j]+u[i+1][j]);
}
}
}
}
このループを図7に示す。先のループがどのように計算されるか、よ
く考えよ。
ホームページ:
Yamamoto's laboratory著者:
山本昌志
Yamamoto Masashi
平成17年2月8日