数値計算 (理工系の基礎数学 8)

この本を初めて読んだのは数値計算を始めた頃のことだった。平易な語り口のプログラミングと物理学の両方をとりもつ内容でなかなか重宝した。

ソースコード部分は日本語を交えた疑似コードで書かれ特定のプログラミング言語に縛られない内容になっている。基礎的な手法については一通り紹介されているし初学者であれば基礎はこの1冊で済むだろう。

CAEソフトウェアを使っていて自分でも数値計算プログラムを書いてみたい人、数値計算をする研究室に配属になったが何から始めたらわからない人は第一歩として本書の演習問題を自分で解く(プログラムを書く)ことから始めるといいかもしれない。

以下、簡単な内容紹介。

1章 数値計算へのガイド

数値計算での作業の流れ、数値表現、丸め誤差、微分可能性といった数値計算の前提になる基礎的な内容について解説している。

2章 方程式の根

f(x) = 0 の形の方程式の反復解法、具体的には2分法とニュートン法の2つを解説している。どちらもこの手の数値計算では最も基礎となる手法だ。

3章 曲線の推定

離散的なデータ点に対してそれを補間する曲線の推定方法を紹介している。取り上げられているのはラグランジュ補間、スプライン補間、最小2乗法の3つ。実験系や確率的なモデルの計算をする人には有用なのではないかと思う。

4章 積分

関数 f(x) を特定の区間で積分する方法を紹介している。手法としては台形則、シンプソン則、ロンバーグ積分法を紹介している。計算量に対して誤差がどのように収束していくかの検討は読んでいて参考になった。

5章 常微分方程式

生物の個体数問題(いわゆるレプリケーター方程式)やバネの減衰振動、梁のたわみなど物理モデルを例に常微分方程式の初期値問題・境界値問題を数値計算で解く方法を紹介している。手法としてはオイラー法、ホイン法、ルンゲクッタ法の3つの差分法を紹介している。

6章 偏微分方程式

拡散方程式、波動方程式、ラプラス方程式を例に陽公式(陽解法)、陰公式(陰解法)を解説し、計算の安定性の条件や解析解との誤差の検討をおこなっている。この章に限らず数値誤差の評価について詳しく解説されているのが本書の特徴であるように思う。

7章 連立1次方程式

前章で偏微分方程式の陰解法が結局、連立1次方程式の問題に帰着されることを受けて、ではそれをどのように解くのかということを解説している。マトリックスソルバーという言葉を聞いたことがある人もいるかも知れないがそれを解説してるのがこの章だ。

具体的には直接解法としてガウスの消去法とLU分解、反復解法としてヤコビ法、ガウス-ザイデル法、SOR(逐次過緩和)法が紹介され、内容を追っていけば自分でマトリックスソルバーを作成できる内容になっている。また加速係数(緩和係数)の調整による収束速度の変化についても解説している。

数値流体解析に興味がある人は6章、7章を読むとソルバーが内部で何をやっているのかの理解が深まると思う。