No.2ベストアンサー
- 回答日時:
差分法による定常2次元ポアソン方程式の解法は、ほとんどの数値計算のテキストに出ているので、Webにもいろいろありますが[1]、エッセンスだけまとめておきます。
参考資料にはプログラムも載っているので、手っ取り早く計算したいだけならそれを使ってください。フローは以下のとおりです。
【1】 支配方程式と境界条件を差分方程式に変換する
【2】 連立方程式を作る
【3】 連立方程式を解く
【1】 差分方程式の導出
一例として簡単な境界条件(周辺値=一定:ディリクレ境界条件)での解き方を紹介します。
関数 φ = φ( x , y ) は
支配方程式:∂^2(φ)/∂x^2 + ∂^2(φ)/∂y^2 =- f ( x,y ) ; 0 ≦ x ≦ 1, 0 ≦ y ≦ 1 --- (1)
境界条件:境界上で φ =a --- (2)
を満足するとします。質問の問題は f(x,y) = 13*π^2*sin(3*π*x)*sin(2*π*y) ですが、一般的に f(x,y)と書いておきます。
2階偏導関数の差分表式は5点近似と9点近似があります[4]が、簡単な5点近似を使って式 [1] を差分方程式に変換すると
{ φ[ i+1 , j ] - 2*φ[i,j] + φ[ i-1 , j ] } / (Δx)^2 + { φ[ i , j+1 ] -2*φ[i,j] + φ[ i , j-1] } / (Δy)^2 = f(x[i] , y[i] ) --- (3)
となります(ここまではVTR250さんの質問に書かれています)。関数 f( x , y ) の x 依存性と y 依存性が著しく異なっていない場合( f( x , y ) = 13*π^2*sin(3*π*x)*sin(2*π*y) は、x方向もy方向も似た形状なのでOK )、Δx = Δy = h とおけば式 (3) は
φ[ i+1 , j ] + φ[ i , j+1 ] + φ[ i-1 , j ] + φ[ i , j-1 ] -4*φ[ i , j ] = -h^2*f( i*h, j*h ) ( i = 1, 2, ... , N-1 ; j = 1, 2, ... , N-1 ) --- (4)
となります。一方、境界条件 [2] は以下のようになります。
φ[ i , 0 ] = φ[ i , N ] = a ( i = 0, 1, 2, ... , N ) 、φ[ 0 , j ] = φ[ N , j ] = a ( j = 0, 1, 2, ... , N ) --- (5)
【2】 連立方程式を作る
【1】の結果をまとめます
φ[ i+1 , j ] + φ[ i , j+1 ] + φ[ i-1 , j ] + φ[ i , j-1 ] -4*φ[ i , j ] = -h^2*f( i*h, j*h ) ( i = 1, 2, ... , N-1 ; j = 1, 2, ... , N-1 )
φ[ i , 0 ] = φ[ i , N ] = a ( i = 0, 1, 2, ... , N )
φ[ 0 , j ] = φ[ N , j ] = a ( j = 0, 1, 2, ... , N )
これをベクトル表示 A*φ = B の形(連立方程式)にすればφ が求められます。Aは係数行列( (N-1)行(N-1)列 )で、資料[3]の式(4.22)のような形になります。φ は解ベクトル(列ベクトル)で
φ = ( φ[1,1], φ[2,1], ... , φ[1,2], φ[2,2], ... , φ[1, i ], φ[2, i ], ... , φ[1, N-1 ], φ[2, N-1], ... , φ[N-1, N-1 ] )
という形になります。解ベクトルのφ の[ ] 内部は 1 から N-1 までですが、[ ] 内部が0やNになるのは境界上なので、この場合解くまでもなく、最初から値が決まっている(φ [ ] = a )ため除外しています。境界条件がノイマン条件の場合、境界内部のφ の値によって、境界上の値が変わってきます(資料[3]はノイマン型境界条件のポアソン方程式の差分解法です)。解ベクトルの並べ方は任意ですが、これはナチュラルオーダリングと呼ばれる並べ方です。Bは項ベクトル(列ベクトル)で、この場合
B = ( -h^2*f( h, h ) , -h^2*f( 2*h, h ), ... , -h^2*f( h, 2*h ), -h^2*f( 2*h, 2*h ), ... , -h^2*f[1, i ],-h^2*f[2, i ], ... , -h^2*f[1, N-1 ], -h^2*f[2, N-1], ... , -h^2*f[N-1, N-1 ] )
となります。
【3】 連立方程式を解く
【2】の結果をまとめると
A*φ = B
φ = ( φ[1,1], φ[2,1], ... , φ[1,2], φ[2,2], ... , φ[1, i ], φ[2, i ], ... , φ[1, N-1 ], φ[2, N-1], ... , φ[N-1, N-1 ] )
A = ( ) --- 資料[3]の式(4.22)の形
B = ( -h^2*f( h, h ) , -h^2*f( 2*h, h ), ... , -h^2*f( h, 2*h ), -h^2*f( 2*h, 2*h ), ... , -h^2*f[1, i ],-h^2*f[2, i ], ... , -h^2*f[1, N-1 ], -h^2*f[2, N-1], ... , -h^2*f[N-1, N-1 ] )
となります。これをφについて解く方法は、資料[2]に出ていますのでここで改めて書きませんが、計算を進めていくと、行列Aが上三角行列になるので、解ベクトルの最下位φ[N-1, N-1 ] から順番に値が求まっていくというものです(資料[3]の例で言えば、最初にx3が求まり、その値を使ってx2が求められる)。φ が求められたら、解ベクトルの並べ方から逆算して、1次元の配列 φ [ 1~(N-1)^2 ] を2次元配列 φ [x,y] に変換します。なお、Gaussの消去法は対角成分(i=j)がゼロになると計算できないので、他の解法も紹介しておきます[5]。
【参考資料】
[1] 数値計算法演習講義ノート(33ページ:2次元ポアソン方程式) http://www.kitasato-u.ac.jp/sci/resea/buturi/his …
[1] CG法によるポアソン方程式の差分解法 http://www.na.cse.nagoya-u.ac.jp/~reiji/lect/alg …
[2] Gaussの消去法(アルゴリズム・Fortranコード) http://www.na.cse.nagoya-u.ac.jp/~yamamoto/lectu … の3ページ、または http://polaris.s.kanazawa-u.ac.jp/chuou/chuou.pdf の8ページ
[3] 2次元 ポアソン方程式の係数行列の構造(p.35-38) http://www.coins.tsukuba.ac.jp/~itosho/NC05/chap …
[4] 2階偏導関数の5点近似と9点近似(p.23-24の式8.2と8.3) http://toshi1.civil.saga-u.ac.jp/ohgushik/sabun1 …
[5] 改良された連立方程式の解法 http://www.na.cse.nagoya-u.ac.jp/~yamamoto/lectu …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
解答に「∵ベクトルOA+ベクトル...
-
△OABにおいて,辺OAの中点をC,辺...
-
この図よりベクトルOPの式でOQ/...
-
図のようにベクトルはOA+ABのよ...
-
正八角形のベクトル
-
高校数学B ベクトル
-
複素数平面での|x+yi|² におい...
-
ベクトルについて ベクトルの一...
-
平面ベクトルの問題です
-
ベクトル 絶対値 ルート
-
位置ベクトルの考え方
-
平面上の定点をA(↑a)とする。...
-
位置ベクトル
-
ベクトルの垂心の証明
-
数Bベクトル 平行四辺形ABCDに...
-
お互いに垂直だが、接触せず距...
-
面法線ベクトル
-
このベクトルは同じものですか...
-
opベクトルを求めたのですが答...
-
このようなベクトルOPをOA OBで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
解答に「∵ベクトルOA+ベクトル...
-
複素数平面での|x+yi|² におい...
-
図のようにベクトルはOA+ABのよ...
-
位置ベクトルについて
-
数学Ⅰ Ⅱ Ⅲ 以外に数学A B が有...
-
線形数学です ベクトルの括弧?...
-
お互いに垂直だが、接触せず距...
-
3次元空間での傾き、切片の求め方
-
線分ABを3:7に外分する点P
-
3つの線分は、同じ点で交わる...
-
高校数学のベクトルのパラメー...
-
ベクトルの読み方
-
曲率の求め方
-
(平面ベクトル) このbベクトル...
-
何故ベクトルの和の定義は↑AB+↑...
-
ゼロベクトルになる理由を教え...
-
△OAB において,辺 OA を 1 : 2...
-
ベクトルの大きさの最小値
-
正八角形のベクトル
-
アドミタンスのベクトル軌跡に...
おすすめ情報