[ 実習トップページ | 2012 スケジュール・各回資料 | 07/27 | 実習資料・課題トップ ]

数値計算実習課題

提出について

レポートの作成・提出方法

[Exp2012]シェルスクリプト課題 のときの「レポート作成方法」と 基本は一緒ですが, 以下の項目に注意してください.

作成について

提出について

課題

問題 1 (必須 + オプション) 移流方程式の続き

実習に引き続き, 移流方程式の数値実験を行います. 系の設定は実習と同じです.

実習で用いた中心差分は 移流方程式において不安定な数値解法でした. そこで改良として中心差分を風上差分に変更してみることにします. 風上差分の定義は

\[ \left. \frac{\partial u}{\partial x} \right|_j^n = \begin{cases} \frac{u_j^n - u_{j-1}^n}{\Delta x} + \mathrm{O}(\Delta x) & \text{if $\quad c \geq 0$} \\ \frac{u_{j+1}^n - u_j^n}{\Delta x} + \mathrm{O}(\Delta x) & \text{if $\quad c < 0$} \end{cases} \]

です. すなわち, 移流の方向によって前進差分と後退差分を使い分けています.

問題 1.A (必須) 風上差分への書き換え

実習で用いたコードを風上差分に書き換えて, $c$ の値が正の場合と負の場合の両方で 結果の Gif アニメーションを作成してください.

レポートには以下を含めてください.

問題 1.B (必須) 安定なパラメータ条件の確認

問題 1.A で用いたコードで 格子点数 $n$ を $32 \times (情報実験機番号)$ に設定します. (情報実験機番号)はたとえば joho02 の場合は 2 になります. そして 時間刻み $\Delta t$ の値が $\frac{\Delta x}{c}$ よりわずかに大きい場合とわずかに小さい場合を適当に選び, Gif アニメーションを作成してください. 全ステップ数 nt, 出力間隔 nt_out は アニメーションが見やすいように適宜変更してください. 用いたパラメータは全て記述してください. この小問ではコードの提出は不要です.

問題 1.C (オプション) 安定性解析

この問題ではプログラミングから一旦離れ, 数式を用いた検討を行います.

実習資料で行った中心差分の場合を参考に, 問題 1.A で用いた風上差分の場合で 離散化された式に von Neumann の安定性解析を行い, 数値解の挙動や $\Delta t > \frac{\Delta x}{c}$ のとき (すなわち $C_{CFL} > 1$ のとき) に計算が破綻する原因について考察を行ってください.

問題 1.D (オプション) その他の数値解法の実装

自分で適当な数値解法を探してきて実装してください. 提出内容は問題 1.A のものに加え, 離散化に用いた数値解法の式とその引用元, およびその解法で離散化された移流方程式の導出過程を必ず書いてください.

問題 2 (オプション) 差分式の誤差を数値的に確認する

関数 $f(x)$ の空間微分を数値的に求めるとき, 異なる精度の差分式を用いるとそれに応じて 誤差の空間解像度依存性が異なることを確認します.

長さ $L$ の一次元の系を $m$ 個に等分割します. このとき格子点の間隔は $\Delta x = \frac{L}{m}$ になります. $j$ 番目の格子点において関数 $f(x)$ の微分を差分で近似するときに,

\[ \left. \frac{d f}{d x} \right|_{j} = \frac{f_{j+1} - f_j}{\Delta x} + \mathrm{O}(\Delta x) \]

\[ \left. \frac{d f}{d x} \right|_j = \frac{f_{j+1} - f_{j-1}}{2 \Delta x} + \mathrm{O}(\Delta x^2) \]

\[ \left. \frac{d f}{d x} \right|_j = \frac{2 f_{j+1} +3 f_j -6 f_{j-1} + f_{j-2}}{6 \Delta x} + \mathrm{O}(\Delta x^3) \]

を比較することにします. また, 誤差の評価式は以下の通りとします.

\[ \mathrm{error} = \frac{1}{m} \sum_{j=1}^{m} \left| \left. \frac{d f}{d x} \right|_j - 解析解 \right| \]

ここで, $f(x) = \sin x$, $L = 2 \pi$ のとき, 上記のそれぞれの差分式で求めた微分の値の解析解 からの誤差の $m$ 依存性を 横軸に $\Delta x$, 縦軸に上記の式による誤差を用いた両対数グラフとしてプロットしてください. $m$ は $32, 64, 128, 256, 512, 1024$ を試してください. また, 各差分式の傾きから精度を確認してください. 計算には Ruby を用い, 描画には gnuplot または Ruby を用いてください. 計算から描画までをひとつのファイルで行っても構いません.

計算や描画に用いたソースと図の画像ファイルを提出し, それらを用いて図を生成する手順を説明してください.

提出されたレポート


[ 実習トップページ | 2012 スケジュール・各回資料 | 07/27 | 実習資料・課題トップ ]
ITPASS
Last Updated: unknown, Since: unknown