数表(すうひょう、: mathematical table または numerical / numeric table)とは、特定の計算式あるいは関数について独立変数引数)を様々に変化させた場合の結果として得られる従属変数数列を示したである[1]。代表的なものとして、常用対数表や三角関数表、乱数表などがある。

代表例

編集

計算機が安価で手の届くものになる以前は、計算を簡略化し迅速に結果を求めるために用いられていた。一般に「数表」と呼ばれたものは、関数電卓やコンピュータ以前は容易には計算できなかった初等関数や、計算尺では精度が足りない(計算尺で扱えるのは、十進で2桁〜せいぜい3桁である)10桁弱程度の対数の数表(対数表)などである。

単純な例としては、整数乗算に関する表(いわゆる九九)などであろう。これは算数の授業でほとんどの人が知ることになる。

十進法乗算
× 1 2 3 4 5 6 7 8 9 10 11 12
1 1 2 3 4 5 6 7 8 9 10 11 12
2 2 4 6 8 10 12 14 16 18 20 22 24
3 3 6 9 12 15 18 21 24 27 30 33 36
4 4 8 12 16 20 24 28 32 36 40 44 48
5 5 10 15 20 25 30 35 40 45 50 55 60
6 6 12 18 24 30 36 42 48 54 60 66 72
7 7 14 21 28 35 42 49 56 63 70 77 84
8 8 16 24 32 40 48 56 64 72 80 88 96
9 9 18 27 36 45 54 63 72 81 90 99 108
10 10 20 30 40 50 60 70 80 90 100 110 120
11 11 22 33 44 55 66 77 88 99 110 121 132
12 12 24 36 48 60 72 84 96 108 120 132 144

7×8の結果を得たい場合、左端の列に書かれた「7」を探し、次いで「7の行」を右へ進んで「8の列」と交差するところで56という結果に至る(乗算の表の場合は行と列を逆にしても構わないし、しばしば節約などのため半分(上三角あるいは下三角などと呼ばれる)の表にされることも多い)。

上記は独立変数が2つの離散関数 z = f(x, y) = x × y についての数表であるとも言える。

歴史と利用

編集
 
Abramowitz and Stegunに掲載された常用対数表の一部

三角関数の表を最初に作成したのはヒッパルコスであると言われている。常用対数や真数の表は、乗除算やべき乗(たとえばn乗根の開平法など)を高速に求めるために用いられた。特殊関数の数表は、現在でも用いられている。たとえば、正規分布累積分布関数値の数表は教科書の巻末付録などを中心に広く存在している。

数学定数物理定数の中には、数表中にその近似値あるいは真値が現れるものもある。例えば円周率 π について、tan(π/4) = 1 であることから、逆三角関数表のうち、x = 1 における逆正接 arctan(x) の値として π/4 の近似値が出現する。

対数の数表を特に「対数表」と言うが、最初の対数表はネイピアにより1614年に完成・発表された。ネイピアの対数表自体には自然対数の底は含まれていなかったが、のちの時代にネイピア数 e として発見されることにつながった。

19世紀に建造が計画された階差機関は多項式近似で関数値を計算し、機械的に数表の印刷原版を生成する特殊用途の計算機であった。これは、人手で作成されていた対数表の計算ミスや印刷ミスによる誤りの多さが動機であったと言われている。第二次世界大戦中に初期の電子計算機が開発されたのも、(特にENIACは)大砲の弾道に関する特殊な数表(射表)を作成することが目的のひとつであった。

大規模な計算では大型計算機の発達により[2]、さらに一般においても関数電卓の普及後は、ほとんどの数表は使われなくなった。

特殊な数表も種々存在するが、天測航法に使う天測暦(航海暦)のように、明るいため識別の容易な惑星の、天球上の位置を知るためのデータといったものも一種の数表と言えるだろう。他には、乱数列を得るための乱数表といったものがある(何らかの乱数それ自体はサイコロなどによって簡単に得られるが、大量にかつ良質な乱数列を得るのは一般に容易でない所に乱数表の有用性がある。また暗号などでは両者が同一の乱数表を参照する、といった使い方をする)。

数表を利用することはよく知られたコード最適化の手法であり、人手による計算だけでなく計算機を用いた場合でも有効に機能する。計算機においては、そのつど計算を行うよりもルックアップテーブルを用いた方が高速である場合(特に計算機がその計算に適したハードウェア実装を有していないような時)に数表が用いられる。反復法などの初期値を数表から得る、といった用法もある。また三角関数の例では、科学計算などでは任意の角度に対する高精度な計算が必要であるのに対し、ゲームなどでは64方向[要出典]の量子化で足りるといった場合も多い[3]。基本的にこの問題は、計算時間と(数表を格納するための)メモリ容量とのトレードオフである。但し、ハードウェアの技術進歩で見た場合に、プロセッサの劇的な性能向上と比較してメモリアクセスの性能向上は遅いため、ルックアップテーブルによる最適化を行う場合には、メモリアクセスがボトルネックになる可能性を考察する必要がある。テーブルが膨大でキャッシュメモリに乗り切らない場合は、レジスタで都度計算したほうが速くなることもありえる。

  1. ^ 数表(すうひょう)とは - コトバンク
  2. ^ 計算機が普及する前のごくわずかな期間には「計算機によって作られた高品質な数表」といったようなものが現れたが、すぐに需要がなくなり忘れられた存在となった。
  3. ^ ハードウェアの性能が低かった時代のコンピュータゲームにおける測位では、そもそも三角関数は使わずにデジタル微分解析 (Digital Differential Analyzer, DDA) やブレゼンハムのアルゴリズムが用いられていた。

関連項目

編集

外部リンク

編集
  NODES