Javaによる波動方程式のシミュレーションプログラム

4年16組7番 伊藤 秀範

2005年2月21日

初期値境界値問題 (プログラムで扱える問題)

波動方程式

\frac{1}{c^{2}}u_{tt} = u_{xx} + u_{yy} (t > 0,(x, y) ∈ Ω)

Ω = {−2 < x < 2, −2 < y < 2}

初期条件

u(x, y, 0) = ϕ(x, y), u_{t}(x, y, 0) = ψ(x, y) ((x, y) ∈ \overline{Ω}) 境界条件は次のいずれかとする

(Dirichlet 境界条件) u(x, y, t)|_{∂Ω} = 0 (t > 0)
(Neumann 境界条件) \frac{∂u}{∂n}(x, y, t)|_{∂Ω} = 0 (t > 0)

平面波について

U を滑らかな関数とし、 ν を単位ベクトルとするとき、

u(x, y, t) = U(ν · χ − ct), χ = (x, y)

とおくと、 u は ℝ^{2} 全体で波動方程式をみたす。これは ν の方向に速さ c で進む波 (平面波) を表す。初期値は

u(x, y, 0) = U(ν · χ) =: ϕ(x, y),
u_{t}(x, y, 0) = −cU(ν · χ) =: ψ(x, y).

平面波の実験

c = 1, U(r) = \{ \begin{matrix}ϕ(x) = 1/4(sin π(2x − 0.5) + 1) & (−1 < r < 0) \\ 0 & (それ以外) \end{matrix}

(1) ν = (1, 0): x軸方向に進む平面波

(2) ν = (0, 1): y 軸方向に進む平面波

(3) ν = (1/\sqrt{2}, 1/\sqrt{2}): 斜めに動く平面波注意: 厳密には、平面波は初期値境界値問題の解にはならないが、境界で反射した波の影響が及ばないところでは、平面波と同じになるはず。

定常波について

初期値境界値問題を Fourier の方法で解いた解の公式

u(x, y, t) = ∑_{m,n=1}^{∞} sin nπx sin mπy(a_{nm} cos(\sqrt{n^{2} + m^{2}}cπt) + b_{nm} sin(\sqrt{n^{2} + m^{2}}cπt))

の一つ一つの項も波動方程式と境界条件をみたす。これを定常解 (定常波) という。

定常波の数値実験

Ω = (−2, 2) × (−2, 2) における定常波

c = 1, u(x, y, t) = sin 2πx sin πy cos \sqrt{5}πt

を数値実験で確認する。初期値は

ϕ(x, y) = sin 2πx sin πy
ψ(x, y) = 0