• 締切済み

偏微分の計算(上下左右対称な拡散の計算)

以下の偏微分の数値計算をしたいと思っています.(添え字などが分かりにくく,申し訳ありません.) ∂C(x,y,t)/∂t=▽{D(φ(x,y))▽C} 計算領域はx-y方向共に500分割されていて,1つの分割長をΔxとします.Dがφ(x,y)の関数なので前に出してD▽^2Cの形にはできません.このとき,以下の考え方が合っているのか教えていただきたいです.お願いします. 簡単のためにx方向だけで考えることにします.まず,後ろ(▽C)の部分を計算します. (▽C)[i]=(C[i+1]-C[i])/Δx.ここで(▽C)[i],C[i]は▽CおよびCのx方向のi番目の要素とします. i番目の▽Cができたので,それを使って前の部分を計算します. ∂C(x,y,t)/∂t={(D[i+1](▽C)[i+1])-(D[i](▽C)[i])}/Δx. この方法で計算はできるのでしょうか? もし,これで良いとすると例えば中心部から左右に対称(上下も同様)に拡散していく計算はできないことにならないでしょうか?Dを前に出せれば左右対称の計算結果になることは分かりますが,Dを前に出せない場合に左右対称にするための計算方法が分からず困っています.「対称なので半分の領域で計算すれば良い」という回答はなしでお願いします.上の考え方が合っているor間違っているだけでなく,正しい解法を教えていただけると助かります.

みんなの回答

  • m0r1_2006
  • ベストアンサー率36% (169/464)
回答No.1

普通は,中心差分を使うけど (▽C)[i] = (C[i+1]-C[i-1])/(2△x) 全部の変数がテーラー展開できると仮定して,偏微分が △x の何次まで 近似できているか調べましょう. >これで良いとすると例えば中心部から左右に対称(上下も同様)に拡散していく計算はできないことにならないでしょうか よくある話です.まあ拡散方程式だから,それほど変にはならないと思うけど.△x と △ t の比率も重要です.

yodel
質問者

補足

ご回答ありがとうございます. 中心差分やΔxとΔtの比率などの教科書的なことについては承知しています.それでも実際にプログラムを作るときに対称性がなくなって困っています.その点の解決策が分かればお願いいたします.

関連するQ&A

専門家に質問してみよう