A..3.2 差分方程式(連立1次方程式) の行列、ベクトル表現

簡単のため、同次 Dirichlet 境界条件 ( $ g_1\equiv 0$ ) の場合に説明する。

$\displaystyle \bm{U}
=\begin{pmatrix}
U_{11} \\
U_{21} \\
\vdots \\
U_{...
... \\
f(x_{2},y_{N_y-1}) \\
\vdots \\
f(x_{N_x-1},y_{N_y-1})
\end{pmatrix}$

とおくと、差分方程式から次のような連立1次方程式が得られる:

      $\displaystyle A\bm{U}=\bm{F},$
(A.16)   $\displaystyle A:= \left( I_{N_y-1}\otimes \frac{1}{h_x^2} (2I_{N_x-1}-J_{N_x-1}) + \frac{1}{h_y^2} (2I_{N_y-1}-J_{N_y-1})\otimes I_{N_x-1} \right).$

ここで $ \otimes$ は行列のテンソル積を表す記号であり、 $ I_k$ $ k$ 次の単位行列、 $ J_k$ は次の形の $ k$ 次正方行列であるとする。

$\displaystyle J_k=
\begin{pmatrix}
0 & 1 & & & \bigzerou \\
1 & 0 & 1 &  ...
...& \ddots & \ddots \\
& & 1 & 0 & 1\\
\bigzerol & & & 1 & 0
\end{pmatrix},
$

(詳しくは桂田 [1] を見よ。)

プログラムを書くときのために、$ \bm{U}$ , $ \bm{F}$ の成分 $ U_\ell$ , $ F_\ell$ を式で表しておく。

(A.17)   $\displaystyle U_\ell=U_{i,j},\quad F_\ell=f(x_i,y_j),$
(A.18)   $\displaystyle \ell=i+(j-1)(N_x-1).$

つまり、領域内部の格子点 $ (x_i,y_j)$ を1次元的に並べて番号をつけた 8、 ということである。 並べ方は一通りではなく、(A.18) の代わりに

(A.19) $\displaystyle \ell=j+(i-1)(N_y-1)$

というものも良く使われる。 (A.18) を row first, (A.19) を column first と呼んで区別する。 次に紹介する MATLAB プログラムでは、 (A.18) を採用してある。

桂田 祐史
2018-06-18