
2026/03/27 4:47
テーブルからどれだけ精度を引き出せるでしょうか?
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
要約
補間表は高速な関数評価に依然として有用ですが、適切な補間次数を選択することが不可欠です。低次のスキーム(線形または二次)は通常十分であり、高次法は内在的な表エラー (\delta) が支配的になるまで精度を向上させるのみです。ラグランジュ定理により総誤差は (c,h^{n+1} + \lambda\delta) で制限されます:最初の項は点数と次数が増えるにつれて減少し、第二項は表データの精度を反映します。(c,h^{n+1}<\delta) の場合、等間隔ノードでは (\lambda) が指数的に増加するため(チェビシェフ間隔の場合は対数的であり、ほとんど使用されない)、次数 (n) を上げることは逆効果になります。
実際の例はこのトレードオフを示します:
- アブラモヴィッツ & ステガンの自然対数表では (h=10^{-3}) のとき、線形補間誤差は約 (10^{-6}) ですが、表値は (10^{-15}) 精度で提供されます。4次補間器は実用上限に達し、5次補間器はわずかな追加精度しか与えません。
- (\sin) の表では (h=0.001) rad と23桁の項目があり、7次で約9桁の精度を得られます。
- Bessel関数 (J_0) の表で (h=0.1) を採用した場合、四捨五入して小数点以下4桁を達成するには11次補間器が必要です。これは広い間隔ほど高次数が要求されることを示しています。
定数 (c) は (\sin) のような関数ではほぼ一定ですが、他の関数では (n) とともに増加し、ランゲ型振動を引き起こす可能性があります。手作業での参照が減少しているにもかかわらず、表と補間は計算機科学で広く使用され続けています。今後の研究では精度と計算コストのバランスを取るために次数と点分布の最適化に焦点を当て、迅速かつ正確な数値ライブラリに依存する科学者・エンジニア・ソフトウェア開発者に恩恵をもたらします。
本文
リチャード・ファインマンは「十分に深く掘り下げれば、ほぼすべてのことが興味深くなる」と語った。
表から数値を調べるだけでは退屈だが、欠落部分を埋める精度を追求する過程でより魅力的になる。
1. 補間の基礎
ある区間 (x) の離散点において表された関数値から、中間点の値を知りたい場合は「補間」を用いる。
線形補間で十分なケースも多いが、より高次の補間を行うと精度が向上する。
例として、関数 (f(x)) が
[ x = 3.00,; 3.01,; 3.02,;\dots ,; 3.99,; 4.00 ]
で表されているとし、(f(\pi)) を近似したいとする。
最も近い二点 (f(3.14)) と (f(3.15)) を線形補間すれば十分だが、さらに多くのデータを活用すると次のようになる。
- 三次補間:(f(3.13), f(3.14), f(3.15), f(3.16))
- 29 次元補間:(f(3.00) \dots f(3.29)) すべてを利用
ラグランジュ補間定理は、各表値が正確であると仮定した場合の誤差上限を与える。実際には、表値自体の精度よりも「x の離散化幅」が主な誤差源となる。
2. 補間誤差の上限
(n) 次補間の場合、誤差上限は次式で表される。
[ c,h^{,n+1} + \lambda,\delta ]
ここで
- (h) – 補間点間隔
- (\delta) – 表値の誤差
- (c) – 補間対象関数の導関数に依存する定数
- (\lambda \ge 1) – 「表点での補間誤差」を示す係数
補間した値の精度は、一般的に (\delta) を上回ることはできない。従って、
[ c,h^{,n+1} < \delta ]
を満たすように (n) を選ぶべきである。
それ以上高次にすると (\lambda) が指数的に増大し、結果が悪化する恐れがある(等間隔の場合)。
3. 実例
(a) 自然対数 (Abramowitz & Stegun)
| 項目 | 値 |
|---|---|
| 表の間隔 (h) | (10^{-3}) |
| 線形補間誤差 | (O(h^2)=10^{-6}) |
| 表値の本質的誤差 | 約 (10^{-15}) |
| 4 次補間 | 表の精度とほぼ同等 |
| 5 次補間 | 誤差は (10^{-8}) 程度で、これが最良 |
(b) 正弦関数 (Abramowitz & Stegun)
| 項目 | 値 |
|---|---|
| 表の間隔 (h) | (0.001,\text{rad}) |
| 表値精度 | 23 桁 |
| 推奨補間次数 | 7 次(約 9 桁の正確性) |
(c) ベッセル関数 (J_0) (Abramowitz & Stegun)
| 項目 | 値 |
|---|---|
| 表の間隔 (h) | (0.1) |
| 表値精度 | 15 桁 |
| 推奨補間次数 | 11 次(4 桁の正確性) |
4. 関連投稿
脚注
- 現代では直接表を参照することは少ないが、計算環境で依然として広く利用されている。
- (\sin) のような関数では定数 (c) は (n) が増えるにつれて実際には緩やかに減少する。一方で他の関数では (c) が増大し、ランゲ現象を引き起こすこともある。
- (\lambda) は等間隔点の場合 (n) と指数的に増加するが、チェビシェフ間隔では対数的にしか増えないため、一般用途の表には不向きである。