next up previous
Next: 3 プログラム Up: 計算天文学 II 第3回 Previous: 1 放物型方程式

2 差分法

偏微分方程式の数値計算の方法は基本的には有限要素法と差分法に大別される。 あ、あとスペクトラル法というのもあるが、これはちょっとおいておく。 有限要素法の考え方はだいぶややこしいので、まず差分法を考える。

差分法とは、基本的には微分方程式に出てくる空間微分や時間微分の項を、差 分で置き換えるものである。差分というのはそもそも何かというのを説明 しないといけない。

例えば区間 $[0,1]$$n$等分して、 $x_0$ から $x_n$ まで ( $x_i=i\Delta x, \Delta x = 1/n$)で表すとする。時間も同様に、 $t_j =
j\Delta t$ として、これから求める近似解 $\hat u$ を簡単のため単に $u_{ij}$ と書く。だいぶ記号が繁雑になるので、図1に 様子を書いておく。

Figure 1: 差分法の考え
\begin{figure}\begin{center}
\leavevmode
\epsfxsize 10 cm
\epsffile{parabolic1.eps}\end{center}\end{figure}

ここで、差分とは例えば $u_{i+1,j} - u_{i,j}$ といった具合に隣との差を とることである。微分を差分で近似するには、例えば

\begin{displaymath}
\frac{\partial u}{\partial x} = \frac{u_{i+1,j}-u_{i,j}}{\Delta x} +
O(\Delta x^2)
\end{displaymath} (3)

というようなことになる。

なお、差分のとり方は一意的ではないことに注意して欲しい。例えば、 $(u_{i,j}-u_{i-1,j})/\Delta x$ でもいいし、 $(u_{i+1,j}-u_{i-1,j})/2\Delta x$ といったものも考えられる。さらに、もっ と沢山の点を使うことも原理的には可能である。

さて、拡散方程式なので2次微分がいる。これはどう作ればいいかというわけ だが、これはむしろ一般に高階微分を差分で表す、つまり数値微分の方法を説 明しておくほうが簡単であろう。

$x_{i-k}, x_{i-k+1}, ...x_i, ... x_{i+l}$$k+l+1$ 点での関数値 $u_j
(i-k\le j\le i+l)$ をつかって、点 $x_i$ での$m$ 階導関数の近似値を求める考え方は以下 のようなものである。

  1. 各点で $p(x_j) = u_j$ を満たす $k+l$ 次補間多項式 $p(x)$ を作る。
  2. $p(x)$$m$ 回微分する。
  3. 微分した結果の式に $x_i$ を代入する。

2階導関数を作るためには最低3点いるので、まずもっとも簡単な以下の形を使っ てみる。


\begin{displaymath}
\frac{\partial^2 u}{\partial x^2} \sim
\frac{u_{i+1,j}-2u_{i,j}+u_{i-1,j}}{\Delta x^2}
\end{displaymath} (4)

で、時間微分についても、もっとも安直な形
\begin{displaymath}
\frac{\partial u}{\partial t} = \frac{u_{i,j+1}-u_{i,j}}{\Delta t}
\end{displaymath} (5)

を使ってみる。



Jun Makino
平成17年10月23日