logo

数値解析における関数の近似 📂数値解析

数値解析における関数の近似

ビルドアップ

数値計算を行う際、コンピュータが人間よりも圧倒的に速いのは事実だけれど、それが超越関数や無理数を理解しているからではない。例えば、$\displaystyle \sin {{ \pi } \over {6}} = {{1} \over { 2 }}$を計算させる場合、三角関数の幾何学的な定義を利用して直角三角形を描き、斜辺と高さの比を求めるのではなく、多項式関数を使って級数展開し、四則演算で計算する方式だ。

コンピュータの立場から言えば、$\displaystyle \sin x \approx x - {{x^3} \over {3!}} + {{x^5} \over {5!}}$が実際に何を意味しているかはあまり気にしない。人間よりも四則演算が速いから、ある多項式関数の公式をそのまま使っているだけである。そして、このような多項式関数の存在は次の定理によって常に保証されている。

ストーン・ワイエルシュトラスの定理: $f$が$[a,b]$上で連続である場合、与えられた$\epsilon > 0$に対して$\displaystyle \max_{x \in [a,b]} | f(x) - p (x) | < \epsilon$を満たす多項式関数$p(x)$が存在する。

しかし、「コンピュータの立場」の話が出たところで、$\displaystyle {{\pi^{31} } \over {31!}}$のような数の計算はコンピュータにとってもかなり難しいことが分かる。まず、分子も分母もかなり長く、計算を始める前に大きな数字を保存すること自体が一仕事で、人とは異なり計算を省略するため計算順序を変えるという発想もない。[ : 実際には、暗号学などの応用数学分野で連続べき乗法といったアルゴリズムを介してこのような技巧が実装されている。] さらに、「人間の立場」から見ると、テイラー級数は十分に小さい$(-h, h)$でのみ収束性が保証されることが知られている。これは、実際にテイラー公式を使用した計算がポイントワイズであるということだ。

もちろん、テイラー展開は理論的に数学史上最も強力なツールの一つとして高く評価されるが、上述の考察から数値計算のための公式としては必ずしも良いとは言えないことが分かる1。別の言い方をすれば、$f(x)$を $$ f(x) \approx \sum_{k=0}^{n} a_{k} \varphi_{n} (x) $$ のような式で計算したい場合、$\displaystyle \left\{ \varphi_{n} (x) = {{x^{n}} \over {n!}} : n \ge 0 \right\}$はあまり良いベースではないということだ。

グラム・シュミットの過程: すべての有限次元の内積空間は正規直交基底を持つ。

幸いなことに、多項式関数の集合$\mathbb{Q} [ x ]$は有限次元ノルムベクトル空間を形成するため、正規直交基底を持つことは保証されている。数値解析では、特に次の性質を持つ基底に注目している。

良い基底とは?

  • (i): $\displaystyle p_{n} (x)$が$\displaystyle \left\{ \varphi_{n} (x) \in \mathbb{Q} [ x ] : n \ge 0 \right\}$の線形結合として表され、$\displaystyle \max_{x \in [a,b]} | f(x) - p_{n} (x) |$が望むほど小さくなるような$n \in \mathbb{N}$が存在する必要がある。
  • (ii): $p_{n} (x)$は$\displaystyle p_{n} (x) = \sum_{k=0}^{n} a_{k} \varphi_{n} (X)$のように計算されるのが良い。つまり、誤差を減らすたびに完全に新しく計算するのではなく、新しい項を加えることによって計算するのが良い。
  • (iii): $| a_{n} |$が速やかに$0$に収束するのが良い。つまり、少ない項を加えても速やかに収束するのが良い。

$\mathbb{R} [ x ]$ではなく、係数が有理数の多項式関数の集合$\mathbb{Q} [ x ]$を考える理由は簡単だ。それは、数値計算を行う際、コンピュータは無理数を理解できないからである。


  1. Atkinson. (1989). An Introduction to Numerical Analysis(2nd Edition): p199. ↩︎