next up previous
Next: 9 最後に Up: 8 差分近似解 Previous: 8.2 偏微分方程式の差分近似 (PDF ��������: pdetutor.pdf)

8.3 特性方向の差分

前節で述べた方法は、偏微分をそれぞれ縦横の方向に差分化して考える 方法であるが、方程式 (35) の左辺を、特性 曲線の方向に斜めに考える方法もある。ここではそれを考えてみる。 2 節で見たように、

\begin{displaymath}
\frac{d}{dt}u(t,at+x_0) = \left. (u_t+ a u_x)\right\vert _{x=at+x_0}
\end{displaymath}

であったが、この式の差分化を行えば

\begin{displaymath}
\frac{u(t+h,a(t+h)+x_0)-u(t,at+x_0)}{h}\approx
\left. (u_t+ a u_x)\right\vert _{x=at+x_0},
\end{displaymath}

すなわち、$at+x_0$$x$ とすれば

\begin{displaymath}
\frac{u(t+h,x+ah)-u(t,x)}{h}\approx u_t(t,x)+ a u_x(t,x)
\end{displaymath}

が成り立つことがわかる。これを用いると方程式 (35) は

\begin{displaymath}
\frac{u(t+h,x+ah)-u(t,x)}{h}\approx f(t,x)
\end{displaymath}

すなわち

\begin{displaymath}
u(t+h,x+ah)\approx u(t,x)+hf(t,x)
\end{displaymath}

となるので、$\Delta t=h$, $\Delta x=ah$ とし、 $u^n_j=u(n\Delta t,j\Delta x)$ とすれば

\begin{eqnarray*}
u^{n+1}_{j+1} & = & u((n+1)\Delta t,(j+1)\Delta x) \\
& = &...
... = & u^n_j + \Delta t f^n_j \ \ (f^n_j = f(n\Delta t,j\Delta x))
\end{eqnarray*}



と計算できることになる。

これをさらに発展させて、波動方程式の初期値問題

\begin{displaymath}
\left\{\begin{array}{ll}
u_{tt}-a^2 u_{xx} = f(t,x) & (t>0...
...y) \\
u_t(0,x)= h(x) & (-\infty<x<\infty)
\end{array}\right.\end{displaymath} (39)

の差分近似を考えてみる ($a>0$)。 1 節で見たように

\begin{displaymath}
u_{tt}-a^2 u_{xx} = \left(\frac{\partial }{\partial t}+a\fra...
...rtial }{\partial t}-a\frac{\partial }{\partial x}\right)u(t,x)
\end{displaymath}

であり、よって $v(t,x)=u_t(t,x)-au_x(t,x)
=(\partial/\partial t-a\partial/\partial x)u(t,x)$ とおけば

\begin{displaymath}
u_{tt}-a^2 u_{xx}=\left(\frac{\partial }{\partial t}+a\frac{\partial }{\partial x}\right)v
\end{displaymath}

となるので、方程式は

\begin{displaymath}
v_t(t,x)+av_x(t,x)=f(t,x)
\end{displaymath}

となる。これは $v$ に関する移流方程式なので、これを特性方向に 差分化すると
\begin{displaymath}
\frac{v(t+\Delta t,x+a\Delta t)-v(t,x)}{\Delta t}\approx f(t,x)\end{displaymath} (40)

となる。一方、$u_t-au_x=v$ も、$u$ に関する移流方程式とみれば、 特性速度が $a$ から $-a$ に変わっているだけなので、
\begin{displaymath}
\frac{u(t+\Delta t,x-a\Delta t)-u(t,x)}{\Delta t}\approx v(t,x)\end{displaymath} (41)

と差分化でき、よって、この式で $t$$t+\Delta t$$x$$x+a\Delta t$ とすれば
\begin{displaymath}
\frac{u(t+2\Delta t,x)-u(t+\Delta t,x+a\Delta t)}{\Delta t}
\approx v(t+\Delta t,x+a\Delta t) \end{displaymath} (42)

という式も得られる。簡単のため $P^s_y=(t+s,x+y)$ とすると (41),(42) の左辺は それぞれ

\begin{displaymath}
\frac{u(P^{\Delta t}_{-a\Delta t})-u(P^0_0)}{\Delta t},\ \
\frac{u(P^{2\Delta t}_0)-u(P^{\Delta t}_{a\Delta t})}{\Delta t}
\end{displaymath}

なので、 (41), (42) を 式 (40) に代入すると

\begin{eqnarray*}
&& \frac{ \displaystyle \frac{u(P^{2\Delta t}_{0})
-u(P^{\De...
...t}_{-a\Delta t})+u(P^0_0)}{\Delta t^2} \\
& \approx & f(P^0_0)
\end{eqnarray*}



となる。これにより、波動方程式 (39) は

\begin{displaymath}
u(P^{2\Delta t}_{0})\approx u(P^{\Delta t}_{a\Delta t})
+u(P^{\Delta t}_{-a\Delta t})-u(P^0_0) + \Delta t^2 f(P^0_0),
\end{displaymath}

すなわち、 $\Delta x=a\Delta t$ として、 $u^n_j=u(n\Delta t,j\Delta x)$ とすれば

\begin{displaymath}
u^{n+2}_j=u^{n+1}_{j+1}+u^{n+1}_{j-1}-u^n_j+\Delta t^2 f^n_j
\ \ (f^n_j=f(n\Delta t,j\Delta x))
\end{displaymath}

と近似計算できることになる。

この式による計算は $n+2=2$、すなわち $t=2\Delta t$ に対する $u$ の 近似値を求めることから始まるので 、 $u^1_j\ (t=\Delta t)$, $u^0_j\ (t=0)$ の値は別に求める必要があるが、 これらは初期値より計算でき、$u^0_j$

\begin{displaymath}
u^0_j = u(0,j\Delta x) = g(j\Delta x)
\end{displaymath}

から、また、 $u^1_j=u(\Delta t,j\Delta x)$

\begin{displaymath}
\frac{u(\Delta t,j\Delta x)-u(0,j\Delta x)}{\Delta t}\approx
u_t(0,j\Delta x)=h(j\Delta x)
\end{displaymath}

と考えれば

\begin{displaymath}
\frac{u^1_j-u^0_j}{\Delta t}=h(j\Delta x)
\end{displaymath}

により求められる。

波動方程式 (39) の数値計算には、ほかにも、縦 横の差分を用いる方法

\begin{displaymath}
\frac{u^{n+1}_j-2u^n_j+u^{n-1}_j}{\Delta t^2}
-a^2\frac{u^n_{j+1}-2u^n_j+u^n_{j-1}}{\Delta x^2}=f^n_j
\end{displaymath}

もありこれもよく使われる。この差分は 2 階微分 $F''(x)$

\begin{eqnarray*}
F''(x) & = & \lim_{h\rightarrow 0}
\frac{\displaystyle \fra...
...\\
& = & \lim_{h\rightarrow 0} \frac{F(x+h)-2F(x)+F(x-h)}{h^2}
\end{eqnarray*}



と書けることに基づいている。


next up previous
Next: 9 最後に Up: 8 差分近似解 Previous: 8.2 偏微分方程式の差分近似
Shigeharu TAKENO
2001年 9月 21日