2次元拡散方程式による常微分方程式の数値解法のベンチマーク

2次元拡散方程式による常微分方程式の数値解法のベンチマーク#

2 次元における拡散方程式

\[ \frac{\partial u}{\partial t} = \triangle u \]

について,空間微分を RBF-FD 法 [22] を用いて離散化し, method of lines 法を用いて常微分方程式の数値解法を適用し, 計算時間と誤差を測定した.

Hint

誤差には空間の離散化による誤差も含まれる.

ディリクレ境界条件とノイマン境界条件について実験を行った. ディリクレ境界条件の場合は領域内のみの \(u\) の値を計算する常微分方程式を解き, ノイマン境界条件の場合は境界上の \(u\) の値も含めて境界条件をそのまま方程式にした微分代数方程式を解いた. 微分代数方程式については使用できる数値解法が限られるため, ディリクレ境界条件の場合とノイマン境界条件の場合で使用する数値解法が異なっている.

ディリクレ境界条件#

領域 \([0, 1] \times [0, 1]\) において,境界では値が 0 とするディリクレ境界条件を設定し, 初期値を以下のように設定した.

\[ u(x, y, 0) = \sin(\pi x) \sin(\pi y) \]

ノイマン境界条件#

領域 \([0, 1] \times [0, 0.5]\) において, \(y = 0.5\) の境界では \(\frac{\partial u}{\partial y} = 0\) とするノイマン境界条件を設定し, その他の境界では値が 0 とするディリクレ境界条件を設定し, 初期値を以下のように設定した.

\[ u(x, y, 0) = \sin(\pi x) \sin(\pi y) \]

結果#

時刻 \(t=0\) における初期値をもとに時刻 \(t=1\) における解を求める時間と精度を測定した.

Hide code cell source

from num_anal_plots.show_plot_in_jupyter import show_plot_in_jupyter

show_plot_in_jupyter("pde-diffusion2d-ode-solvers-work-error", version=3)