差分方程式近似
本パネルでは,最も簡単な形で1次元の波動方程式
\[
\frac{\partial^2 u}{\partial t^2}=s^2\frac{\partial^2 u}{\partial x^2}
\tag{1}
\]
を差分方程式に近似して数値計算しています.
下の図のように,区間を\(N\)等分して\(0\cdots N\)の\(N+1\)個の分点を考えます.
ちょうど,2.3.4節で離散的に考えていた系の極限を取って連続化して波動方程式を得たのと逆のことをするわけですね. 同様に時間軸も区分時間\(\varDelta t\)で差分化して,2階微分を次のように近似します. \[ \begin{aligned} \frac{\partial^2 u}{\partial t^2}&=\frac{u(t+\varDelta t,x)+u(t-\varDelta t,x)-2u(t,x)}{(\varDelta t)^2},\\ \frac{\partial^2 u}{\partial x^2}&=\frac{u(t,x+\varDelta x)+u(t,x-\varDelta x)-2u(t,x)}{(\varDelta x)^2}. \end{aligned} \tag{2} \] すなわち,時空間\((t,x)\)を \[ t=(\varDelta t)j,\;\;\;x=(\varDelta x)k \] により,非負整数指数格子\((j,k)\)で離散近似します.\(u(t,x)\)を\(u(j,k)\)と書いてしまうことにしましょう.すると,式(2)より \(\zeta\equiv\varDelta x/\varDelta t\)として, \[ \begin{aligned} u(j+1,k)&=2u(j,k)-u(j-1,k)\\ &\phantom{2u(j,k)}+\left(\frac{s}{\zeta}\right)^2(u(j,k+1)+u(j,k-1)-2u(j,k)) \end{aligned} \tag{3} \] となり\(u(j,k)\)と\(u(j-1,k)\) (\(k=0,1,\cdots,N\))のデータがあれば,\(u(j+1,k)\)が求まります. 後は順次時間発展を追えば良いことになります.
そこで,初期条件として\(u(0,k)\)と\(u(1,k)\)を与える必要がありますが,「左右へ別れて進む波」ではここでガウス型の盛り上がり波形を与え,最初は波が静止,すなわち\(u(1,k)=u(0,k)\)と与えています.
境界条件
式(3)を見てもわかるように,\(k\)方向も端の条件(境界条件)を決めないと全部が決まりません.
固定端では,\(u=0\)にするのなら\(u(j,0)=u(j,N)=0\)とすれば良いので簡単です.
自由端では,逆に,「端は中の動きに完全に追従する」と考え,\(u(j,0)=u(j,1)\),\(u(j,N)=u(j,N-1)\)と
すれば良く,これまた簡単ですね.
さて,問題は,吸収端の境界条件です.これは一般には簡単ではありません. NIIにアクセスのある方は,文献[1]などを御覧ください. ただし,文献[1]では例として分散のない波に大変面倒な方法で無反射境界条件を作り出しているようですが, 分散がない式(1)のような場合には,簡単な方法があります.
[1] 谷口隆晴「波動現象シミュレーションのための無反射境界の作り方」, シミュレーション Vol.26(2), 84-89, (2007)