数値計算アルゴリズムの評価方法
これから数値計算プログラムを書くに先立って(まだ書けてない)、
これからできるであろう自分のプログラムを「客観的」に評価する必要を感じている。
そのため、数値計算アルゴリズムの評価方法を用意したい。
評価の尺度として、計算精度、計算量、計算時間が考えられる。
私の場合、数値計算にリアルタイム性を求めていない。
したがって、私が最も気になるのは計算精度である。
どうすれば計算精度を評価できるだろうか?
話を単純化するため、問題の解が一意的に存在する場合に限定して考える。
理論的な解釈
(机上の話ではあるが、「理論的な実数」を前提としたとき、)アルゴリズムの出す解が真の解に収束するか?
調べる必要がある。
誤差の測定実験
しかし、実際の計算機はメモリーが有限なので、理想的な実数を扱えない。
このような状況において、解の収束を理論的に証明することは、複雑さ故に極めて困難である。
そこで、複数の例題をプログラムに解かせて、その計算精度を評価する必要がある。
近似解と厳密解の誤差を計算するには、厳密解がわかっている例題を使えばよい。
このような例題に対しては、アルゴリズム同士の比較が可能になる。
(一般的に厳密解は得られないことが多い。しかし、特殊なケースでは、厳密解がわかる。)
厳密解がわかっている例題を数多く手中に収めている方が良い。
そのような例題数が多ければ多いほど、数値計算アルゴリズムを、より正確に評価できる。
ただ、(ヒルベルト行列に関する論文を見て思ったのだが、)そういった厳密解は、式が非常に複雑。厳密解の計算にも計算機の力を借りたい。それは可能なのだろうか?