next up previous contents
Next: 4.3 エネルギー保存則 Up: 4. 桂田メモ Previous: 4.1.3.2 について

4.2 Friedrichs の差分法

$\displaystyle \frac{\rd U}{\rd t}=A \frac{\rd U}{\rd x}
$

$\displaystyle \frac{U_{i,j+1}-\Dfrac{U_{i+1,j}+U_{i-1,j}}{2}}{\tau}
= A\frac{U_{i+1,j}-U_{i-1,j}}{2h}
$

と離散化するのが Friedrichs の差分法である。

\begin{displaymath}U=\vec U=
\left(
\begin{array}{c}
v\\ w
\end{array}\right)\end{displaymath}, $ A=
\left(
\begin{array}{cc}
0 & 1\\
1 & 0
\end{array}\right)
$ の場合に考えてみる。両辺に $ \tau$ をかけて $ \lambda=\tau/h$ とおくと、

$\displaystyle \vec U_{i,j+1}-\frac{1}{2}(\vec U_{i+1,j}+\vec U_{i-1,j})
=\frac{1}{2}\lambda A(\vec U_{i+1,j}-\vec U_{i-1,j}),
$

ゆえに

$\displaystyle \vec U_{i,j+1}=
\frac{1}{2}(I+\lambda A)\vec U_{i+1,j}
+
\frac{1}{2}(I-\lambda A)\vec U_{i-1,j}.
$

mail protected],$G=q$/$H

$\displaystyle \twovector{v_{i,j+1}}{w_{i,j+1}}
=\frac{1}{2}
\left(
\begin{array...
...-\lambda \\
-\lambda & 1
\end{array}\right)
\twovector{v_{i-1,j}}{w_{i-1,j}},
$

すなわち
  $\displaystyle v_{i,j+1}$ $\displaystyle =$ $\displaystyle \frac{1}{2}
\left[
(v_{i+1,j}+v_{i-1,j})+\lambda(w_{i+1,j}-w_{i-1,j})
\right],$
  $\displaystyle w_{i,j+1}$ $\displaystyle =$ $\displaystyle \frac{1}{2}
\left[
\lambda(v_{i+1,j}-v_{i-1,j})+(w_{i+1,j}+w_{i-1,j})
\right]$

$ i=1,2,\cdots,N-1$ に対して $ v_{i,j+1}$, $ w_{i,j+1}$ はこの式を使っ てすぐに求められる。

$ u$ について Dirichlet 境界条件

$\displaystyle u(0,t)=u(1,t)=0$   $\displaystyle \mbox{($t>0$)}$

を課してある場合を考える。まず

$\displaystyle \frac{\rd u}{\rd t}(0,t)=\frac{\rd u}{\rd t}(1,t)=0$   $\displaystyle \mbox{($t>0$)}$

であるから

$\displaystyle v(0,t)=v(1,t)=0$   $\displaystyle \mbox{($t>0$)}$

ゆえに $ v_{i,j+1}$ については、

$\displaystyle v_{0,j+1}=v_{N,j+1}=0$   $\displaystyle \mbox{($j=0,1,2,\cdots$)}$

とするのが自然である。

$ w_{0,j+1}$ については、まず

$\displaystyle \frac{\rd w}{\rd x}(0,t)=\frac{\rd w}{\rd x}(1,t)=0
$

となることから、いわゆる仮想格子点 $ x_{-1}$ を導入して、 Neumann 境界条件を中心差分近似して

$\displaystyle w_{-1,j+1}=w_{1,j+1}
$

を得る。未知数が増えた分は、$ i=0$ についても差分方程式、 すなわち
  $\displaystyle v_{0,j+1}$ $\displaystyle =$ $\displaystyle \frac{1}{2}
\left[
(v_{1,j}+v_{-1,j})+\lambda(w_{1,j}-w_{-1,j})
\right],$
  $\displaystyle w_{0,j+1}$ $\displaystyle =$ $\displaystyle \frac{1}{2}
\left[
\lambda(v_{1,j}-v_{-1,j})+(w_{1,j}+w_{-1,j})
\right]$

が成り立つと仮定してつじつまを合わせる。まず第一の式に $ v_{0,j+1}=0$, $ w_{1,j}=w_{-1,j}$ を代入して

$\displaystyle v_{1,j}+v_{-1,j}=0.
$

これから $ v_{-1,j}=-v_{1,j}$ となるから、 $ w_{-1,j}=w_{1,j}$ と合わせて第二式に代入して

$\displaystyle w_{0,j+1}=
\iffalse
\frac{1}{2}
\left[
\lambda(v_{1,j}-v_{-1,j})+...
...[
\lambda(v_{1,j}+v_{1,j})+(w_{1,j}+w_{1,j})
\right]
=\lambda v_{1,j}+w_{1,j}.
$

$ w_{N,j+1}$ についても同様で、

$\displaystyle v_{N,j+1}=0,
$

$\displaystyle w_{N+1,j}=w_{N-1,j},
$


  $\displaystyle v_{N,j+1}$ $\displaystyle =$ $\displaystyle \frac{1}{2}
\left[
(v_{N+1,j}+v_{N-1,j})+\lambda(w_{N+1,j}-w_{N-1,j})
\right],$
  $\displaystyle w_{N,j+1}$ $\displaystyle =$ $\displaystyle \frac{1}{2}
\left[
\lambda(v_{N+1,j}-v_{N-1,j})+(w_{N+1,j}+w_{N-1,j})
\right]$

から

$\displaystyle v_{N+1,j}=-v_{N-1,j},
$

さらに

$\displaystyle w_{N,j+1}=
\frac{1}{2}
\left[
\lambda(-v_{N-1,j}-v_{N-1,j})+(w_{N-1,j}+w_{N-1,j})
\right]
=
-\lambda v_{N-1,j}+w_{N-1,j}.
$

$ u$ を求めるには、 $ \Dfrac{\rd u}{\rd t}=v$

$\displaystyle \frac{u_{i,j+1}-\Dfrac{1}{2}(u_{i+1,j}+u_{i-1,j})}{\tau}=v_{i,j}$   $\displaystyle \mbox{($i=1,2,\cdots,N-1$)}$

と近似して

$\displaystyle u_{i,j+1}=\frac{1}{2}(u_{i+1,j}+u_{i-1,j})+\tau v_{ij}$   $\displaystyle \mbox{($i=1,2,\cdots,N-1$)}$

とすれば良い。

まとめると、
Friedrichs の差分法による差分方程式

  $\displaystyle u_{i,j+1}$ $\displaystyle =$ $\displaystyle \frac{1}{2}(u_{i+1,j}+u_{i-1,j})+\tau v_{ij}$   $\displaystyle \mbox{($i=1,2,\cdots,N-1$)}$$\displaystyle ,$
  $\displaystyle v_{i,j+1}$ $\displaystyle =$ $\displaystyle \frac{1}{2}
\left[
(v_{i+1,j}+v_{i-1,j})+\lambda(w_{i+1,j}-w_{i-1,j})
\right],$   $\displaystyle \mbox{($i=1,2,\cdots,N-1$)}$$\displaystyle ,$
  $\displaystyle w_{i,j+1}$ $\displaystyle =$ $\displaystyle \frac{1}{2}
\left[
\lambda(v_{i+1,j}-v_{i-1,j})+(w_{i+1,j}+w_{i-1,j})
\right]$   $\displaystyle \mbox{($i=1,2,\cdots,N-1$)}$$\displaystyle ,$
  $\displaystyle u_{0,j+1}$ $\displaystyle =$ $\displaystyle u_{N,j+1}=0,$
  $\displaystyle v_{0,j+1}$ $\displaystyle =$ $\displaystyle v_{N,j+1}=0,
$
  $\displaystyle w_{0,j+1}$ $\displaystyle =$ $\displaystyle \lambda v_{1,j}+w_{1,j},$
  $\displaystyle w_{N,j+1}$ $\displaystyle =$ $\displaystyle -\lambda v_{N-1,j}+w_{N-1,j}.$


next up previous contents
Next: 4.3 エネルギー保存則 Up: 4. 桂田メモ Previous: 4.1.3.2 について
Masashi Katsurada
平成14年11月29日