• ベストアンサー

2次元ラプラス方程式を差分法で解くというプログラムなのですが、

2次元ラプラス方程式を差分法で解くというプログラムなのですが、 ・プログラムの流れ ・具体的にどのような計算をしているのか を教えていただけないでしょうか? 面倒だとは思いますがお願いします。 以下プログラムURL http://www.geocities.jp/laprog321/

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

double second() ただ単に、処理時間を表示するために、時間を 取得しているだけで、方程式の解法には関係あ りません。 void init(double u[SIZE+2][SIZE+2]) 解くべき方程式の境界条件を設定しています。 と思ったら、初期条件を設定しています。 ちょっと不自然な気もしますが。 int main() 方程式を解くための主要部分です。 格子状の配列の、上・下・右・左の値の平均を とることを繰り返しています。 これを繰り返すことで、方程式の解に収束します。 配列を、u, uu と2つ準備し、 ・一番最初に、init() を呼んで初期条件をセット。 ・uu の配列で、上・下・右・左の値の平均をとって  u に代入(1回分の計算) ・この繰り返しが収束したかどうかチェックするために  u (このステップの計算前)と uu(このステップの計  算後)のノルム(この場合は、差の自乗の和)が、EPS  以下になるまで繰り返し。 ・繰り返しに当たって、u の値を、uu に代入して、同  じ計算を繰り返す。  ※実は繰り返しの最初で、u を uu に代入(コピー)   しているので、init(uu); は不要。 ・最後に結果とかかった時間を表示 (と思ったら、結果は表示していませんでした)

関連するQ&A

専門家に質問してみよう