利用者:Meniv/sandbox/区間演算
表示
ここはMenivさんの利用者サンドボックスです。編集を試したり下書きを置いておいたりするための場所であり、百科事典の記事ではありません。ただし、公開の場ですので、許諾されていない文章の転載はご遠慮ください。
登録利用者は自分用の利用者サンドボックスを作成できます(サンドボックスを作成する、解説)。 その他のサンドボックス: 共用サンドボックス | モジュールサンドボックス 記事がある程度できあがったら、編集方針を確認して、新規ページを作成しましょう。 |
区間演算とは、区間 (数学)に対する演算である。主に計算機で計算結果の誤差を保証するときに用いられる。
概要
[編集]区間演算は計算の誤差をすべて包み込むために用いられる。演算には上端と下端を設定する方式と中心と誤差半径を設定する方式の2パターンがある。
上端・下端方式の演算は以下のように定義される。
- 和
- [a, b] + [c, d] = [a+b, c+d]
- 差
- [a, b] - [c, d] = [a-b, c-d]
- 積
- [a, b]・[c, d] = [min{ac,bc,ad,bd}, min{ac,bc,ad,bd}]
- 商
- [a,b] / [c,d] = [min{a/c,b/c,a/d,b/d}, max{a/c,b/c,a/d,b/d}]
この定義から0を含む区間での商は定義できないことは自明である。例えば[2, 3] / [0, 2]は実数の演算である2/0や3/0の演算が定義されていないため不可能である。
ここで、例えば区間[1, 2]の和についての逆元を考えてみよう。ゼロ元[0,0 ]となるのは[1-1,2-2]であるが、[1, 2]-[1, 2]=[-1, 1] ≠ [1, 1]となってしまうため逆元は存在しない。これは積に関してもいうことができる。[1, 2] / [1, 2] = [1/2, 2]となるからである。
すなわち、差や商は和や積の逆演算ではない。
- 和:[-1, 2] + [-1, 2] = [-2, 4] ⇔ 差:[-2, 4] - [-1, 2] = [-4, 6]
- 積:[-2, 3]・[2, 5] = [-10, 15] ⇔ 商:[-10, 15] / [2, 5] = [-5, 15/2]
実装
[編集]→「任意精度演算 § ライブラリ」も参照
参考
[編集]- “情報数値解析 第4回 区間演算” (PDF). 九州大学. 2013年7月1日閲覧。
- 松田望. “精度保証付き多倍長演算の新手法”. 電気通信大学. 2013年8月23日閲覧。