3.1 Glimm 差分の構成法

この節では、Glimm 差分近似解の作り方について説明する。

Glimm 差分は、基本的には初期値を階段関数で近似して、 それに対する複数個の Riemann 問題を解くことで短い時間の解 (局所解) を作り、 ある時間でまたそれを階段関数で近似してそれを初期値とする局所解を作る、 ということを繰り返す。

この構成法の中で、階段関数への近似の際に確率変数を利用するので、 この Glimm 差分は ランダム選択法 (random choice method) とも 呼ばれる。

非線形の方程式なので、厳密には局所解を作ることができるための条件や 近似解の評価も近似解の 1 ステップ毎に変化し、 本当はそれを検証しつつ近似解を構成していく必要があるが、 それらは後回しにしてこの節では近似解の構成法のみを扱うことにする。

まず、初期値 $U_0(x)$ は有界変動関数であるとする:

\begin{displaymath}
\mathop{\mathrm{TV}}\nolimits _R U_0<\infty
\end{displaymath}

なお、 $\mathop{\mathrm{TV}}\nolimits _R$ は、$R$ 上の全変動を表す (詳しくは、A 節参照)。

この初期値に対して、空間方向 ($x$) の差分幅 $\Delta x$、 時間方向 ($t$) の差分幅 $\Delta t$ の、 初期値問題 (2.1) に対する差分近似解 $U^\Delta (t,x)$ を構成する。

今、これから構成する $U^\Delta (t,x)$ に対する特性速度 $\lambda_j(U^\Delta)$ の値は一様に有界であるとする:

\begin{displaymath}
\sup_{1\leq j\leq N, t>0, x\in R}\vert\lambda_j(U^\Delta(t,x))\vert
=\Lambda_0
<\infty\end{displaymath} (3.22)

本来は、これは示すべき事柄であるが、証明は後回しとする。

  1. $\Lambda$ を、 $\Lambda > \Lambda_0$ なる定数とし、 小さい正数 $\Delta x$ に対し、
    \begin{displaymath}
\frac{\Delta x}{\Delta t}=\Lambda > \Lambda_0
\end{displaymath} (3.23)

    となるように取る。

    なお、この条件 (3.2) は、 Courant-Friedrichs-Lewy 条件 (CFL 条件) とも呼ばれ、 $\Delta t$$\Delta x$ と解 (波の速度) に応じて 小さく取らなければならないことを意味している。

  2. まずは初期値を階段関数で近似する。

    奇数でかつ

    \begin{displaymath}
(\vert m\vert+1)\Delta x\leq \frac{1}{\Delta x}
\end{displaymath} (3.24)

    を満たすすべての $m$ に対して、
    \begin{displaymath}
U^0_m = U_0(m\Delta x)
\end{displaymath}

    とし、この値を $2\Delta x$ 幅で持つ階段関数を $U^\Delta(0,x)$ とする:
    \begin{displaymath}
U^\Delta(0,x)=U^0_m\hspace{1zw}((m-1)\Delta x\leq x<(m+1)\Delta x)
\end{displaymath} (3.25)

    大きい $x$ に対しては、次のように $U^\Delta(0,x)$ は定ベクトルとする: (3.3) を満たす最大の奇数を $m_0$ とするとき、 $U^\Delta(0,x)$ は (3.4) によって $(-m_0-1)\Delta x\leq x<(m_0+1)\Delta x$ で定義されることになるが、 その外では、
    \begin{displaymath}
U^\Delta(0,x)=\left\{\begin{array}{ll}
U^0_\infty & (x\geq...
...,\\
U^0_{-\infty} & (x<(-m_0-1)\Delta x)
\end{array}\right. \end{displaymath}

    と定める。ここで、 $U^0_{\pm\infty}$
    \begin{displaymath}
U^0_{\pm\infty} = \lim_{x\rightarrow\pm\infty}U_0(x)
\end{displaymath}

    とする。$U_0(x)$$R$ 上の有界変動関数なので、 この極限は確かに存在する (詳しくは A 節参照)。

    階段部分は、 $2(m_0+1)\Delta x$ 幅であり、 この幅も段差の個数も有限なので、 この $U^\Delta(0,x)$ はせいぜいこの幅でしか $U_0(x)$ を近似しないように見える。 しかし、(3.3) より この幅はほぼ $2/\Delta x$ 幅に等しく、 よって $\Delta x$ が 0 に近くなるとだんだんこの幅が広くなり、 最終的には $U_0(x)$ 全体を近似していくことになる。

    なお、このような有限範囲への切り捨ては、 [Glimm], [Smoller], [Dafermos] 等には書かれていないが、 その方が後の説明にも都合がいいし、 これにより近似作業の手続きの有限性も保証されるので、 ここではこのようにすることにする。

  3. この階段関数 $U^\Delta(0,x)$ を初期値とみて、 初期値問題 (2.1) の解を作る。 $U^\Delta(0,x)$ は階段関数なので、 その段差のところで丁度 Riemann 問題となる。 つまり、奇数の $m$ ( $-m_0-2\leq m\leq m_0$) に対し、
    \begin{displaymath}
\left\{\begin{array}{l}
U_t+F(U)_x=0 \hspace{1zw}(0<t<\Del...
... x\leq x<(m+2)\Delta x)
\end{array}\right. \end{array}\right. \end{displaymath}

    のような、 $x=(m+1)\Delta x$ 中心の Riemann 問題を解いて、 その解をその範囲での $U^\Delta (t,x)$ とする (図 3.1)。
    図 3.1: $0<t<\Delta t$ での $U^\Delta (t,x)$
    \includegraphics[width=0.7\textwidth]{udelta_1.eps}

    Riemann 問題の波の速度 ($dx/dt$) は、 いずれの波もその両側の状態の特性速度でおさえられ、 $\Lambda_0$ を越えることはない。 よって、CFL 条件 (3.2) により、 その波は時間 $\Delta t$ までの間に $\Delta x$ 幅までは広がらず、 よって隣り合う波がぶつかることはない。

    なお、2. で、$t=0$ での値は $(-m_0-1)\Delta x\leq x<(m_0+1)\Delta x$ の外では定ベクトルとしたので、 そこでは段差はなく、その定ベクトル値がそのまま解となるので、 $0<t<\Delta t$ では $(-m_0-2)\Delta x\leq x< (m_0+2)\Delta x$ の外では その定ベクトルの値が $U^\Delta (t,x)$ となる。

  4. $t=\Delta t$ での $U^\Delta$ の値 (階段関数) は、 すべての偶数の $m$ に対して
    \begin{displaymath}
U^1_m = U^\Delta(\Delta t-0,(m+\theta_1)\Delta x)
\end{displaymath}

    とし、
    \begin{displaymath}
U^\Delta(\Delta t,x)=U^1_m\hspace{1zw}((m-1)\Delta x\leq x<(m+1)\Delta x)
\end{displaymath} (3.26)

    と定める。ここで、$\theta_1$$-1<\theta_1<1$ である値で、 これを後で確率変数と考えることになる。

    $U^\Delta (t,x)$ の段差は、 $t=0$ では偶数の $k$ に対して $x=k\Delta x$ のところにあったが、 $t=\Delta t$ では奇数の $k$ に対して $x=k\Delta x$ のところに できることになる。

    また、$t=\Delta t$ ではすべての $x$ に対し (3.5) で $U^\Delta(\Delta t,x)$ を決めるが、 実際には $(-m_0-2)\Delta x\leq x< (m_0+2)\Delta x$ の外では 定ベクトルとなることになる。

  5. 以下この 3., 4. を繰り返して先に進めていく。

    $t_n=n\Delta t$ とし、$n+m$ が奇数であるような $n(\geq 1)$, $m$ に対し

    \begin{displaymath}
\mathop{\mathrm{Cell}}\nolimits ^n_m=\{(t,x); t_{n-1}\leq t<t_n,
 (m-1)\Delta x\leq x<(m+1)\Delta x\}
\end{displaymath}

    と書くことにするとき、$t_{n-1}<t<t_n$ では $t=t_{n-1}$ での階段関数の値 $U^\Delta(t_{n-1},x)$ に対して、 各セル $\mathop{\mathrm{Cell}}\nolimits ^n_m$ 内で Riemann 問題を解くことで $U^\Delta (t,x)$ を作り、$t=t_n$ では、
    \begin{displaymath}
U^n_m = U^\Delta(t_n-0,(m+\theta_n)\Delta x)
\end{displaymath}

    とし、
    \begin{displaymath}
U^\Delta(t_n,x)=U^n_m\hspace{1zw}((m-1)\Delta x\leq x<(m+1)\Delta x)
\end{displaymath}

    によって $t=t_n$ で、有限段で $2\Delta x$ 幅の段を持つ階段関数を作る。 ここで、$\theta_n$$-1<\theta_n<1$ とする。

    以後、この階段関数の値 $U^n_m$ を作るために代表値を取る点を、

    \begin{displaymath}
a^n_m=(t_n,(m+\theta_n)\Delta x)
\hspace{1zw}(\mbox{$n+m$ は奇数})
\end{displaymath}

    のように書くことにする。
    図 3.2: $0<t<2\Delta t$ での $U^\Delta (t,x)$
    \includegraphics[height=0.2\textheight]{udelta_2.eps}

この構成法では、このようにして近似解が作り続けていけるかどうかは 考えていなかったが、そのためには次のようなことを考える必要がある。

竹野茂治@新潟工科大学
2009年1月18日