田中敏幸 : 数値計算法基礎

2026-02-27

概要

「まえがき」より引用する。

本書では,いろいろな分野で利用される数値計算法のアルゴリズムについて,それらの基本的手法についての説明を行っている.(中略)本書が,これから数値計算法を勉強しようとする読者の一助になれば幸いである.

感想

各種数値計算法について、解説とともに C 言語によるプログラムのリストが掲載されている。これらのプログラムが現在でも稼働するか、検証した。環境は Windows 11 の WSL2-Ubuntu 22.04 で動作する、 gcc 11.4.0 を用いた。

連立1次方程式

3章は連立1次方程式である。 pp.171-173 にある [3章] (1) の解答となっているプログラムを見た。このままでも正常に動作するが、下記の点を直すべきだろう。

結果は次のように表示される。

x[0] = 1.000000
x[1] = -2.000000
x[2] = 3.000000

固有値問題

4章は固有値問題である。4.4 節では QR 分解による固有値計算を扱っている。QR 分解は行列 `A` を 直交行列 `Q` と 上三角行列 `R` の積に分解する手法であるが、 本書では、`A` を正方行列に限定している。一般には、QR 分解で分解される行列 `A` は `m times n` 行列でよい( `m gt n`)のだが、行列の固有値を求める QR 法で使われるので正方行列に絞ったのだろう。

DFT と FFT

7章は時系列データの周波数解析である。周波数解析といえばまず高速フーリエ変換(FFT) があって、それから自己回帰モデルがあるのが通例だが、本書では自己回帰モデルは扱われていない。 章末の問題は、FFT のプログラミングではなく、離散的フーリエ変換(DFT)のプログラミングであった。巻末にある、問題への解答を見ると、円周率の PI を独自に定義していた。 実際には、円周率を独自に定義せず、math.h に定義済の M_PI を用いるのがいいと思う。

数理計画法

10 章は数理計画法である。p.129 にある章末問題は1問のみで次の通りだ。

最急降下法を用いてつぎの非線形関数の最小値とそのときの `x_1, x_2` の値を求めるプログラムを作成せよ。ただし,初期値を `(x_1, x_2) = (0.0, 0.0)` とする。 また,ステップ幅は `alpha = 0.1` で固定とする。

pp.186-187 にある [10章] (1) の解答となっているプログラムを実行した。このままでも正常に動作するが、下記の点を直すべきだろう。

結果は次のように表示される。ただし、最初の5回と最後の5回のみを掲げた。反復回数は 100 回である。

x1=0.400000, x2=0.000000
x1=0.640000, x2=0.160000
x1=0.848000, x2=0.288000
x1=1.024000, x2=0.396800
x1=1.173120, x2=0.488960
(中略)
x1=1.990597, x2=0.994189
x1=1.992034, x2=0.995077
x1=1.993251, x2=0.995829
x1=1.994282, x2=0.996466
x1=1.995156, x2=0.997006

真値は `(x_1, x_2) = (2, 1)` であるから収束は非常に遅い。したがって、収束を速めるためには、本書 10.2 節で説明されている共役勾配法を使うなど、他の方法を適用すべきだろう。

モンテカルロ法

13章はモンテカルロ法である。[13章] (1) の解答となっているプログラムを実行した。このままでも正常に動作するが、下記の点を直すべきだろう。

文献

本書の参考文献(p.167)には 14 冊の文献が列挙されている。このなかで私が読んだことがあるのは次の本である。

誤植

p.129 上から9行目、評価関数を逆符合にしてとあるが、《評価関数を逆符号にして》が正しい。

数式表示

数式表現はMathJax4 を用いている。

書誌情報

書名数値計算法基礎
著者田中敏幸
発行日2006 年 4 月 6 日 初版第1刷
発行元コロナ社
定価2400 円 (税別)
サイズ
ISBN4-339-06078-X
NDC
その他草加市立図書館で借りて読む