概要
Interval Union Arithmetic は、実数だけでなく 区間の合併 上で計算を行う新しい電卓システム。 ゼロを含む区間での除算 にも対応し、演算結果が 閉じた集合 として保たれる特徴。 不確実性の表現 や 浮動小数点誤差への耐性 に優れる。 シンプルな構文 で使いやすく、 オープンソース で公開。 今後の拡張 も活発に計画中。
区間合併演算電卓とは
-
Interval Union Arithmetic (区間合併演算)の実装例
- 区間 [a, b] :a 以上 b 以下の全ての数を表現
- 区間合併 [a, b] U [c, d] :重なりのない複数区間の集合
-
通常の区間演算の拡張
- ゼロを含む区間での除算が可能
- 例:2 / [-2, 1] → [-∞, -1] U [2, +∞]
- 閉じた演算体系 の維持
- ゼロを含む区間での除算が可能
-
包含性質 (Inclusion Property)
- 入力区間から任意の実数を選び、同じ式を実数で計算した場合、結果は必ず出力区間合併に含まれる
-
不確実性の表現
- 例:50 * (10 + [-1, 1]) → [450, 550]
-
複雑な式や合併演算もサポート
- 例:([5, 10] U [15, 16]) / [10, 100] → [0.05, 1.6]
主な演算例
- 加算 :[90, 100] + [-2, 2] → [88, 102]
- 減算 :[14, 16] - [8, 12] → [2, 8]
- 乗算 :[-5, 10] * [2, 4] → [-20, 40]
- 除算 :[2, 4] / [-1, 2] → [-∞, -2] U [1, +∞]
- 指数 :[2, 3] ^ [-2, 3] → [0.1111, 27]
関数・定数サポート
- 定数 :inf, ∞, pi, e など
- 下限・上限 :lo([1, 2]) → [1, 1]、hi([1, 2]) → [2, 2]
- 絶対値・平方根 :abs([-10, 5]) → [0, 10]、sqrt([9, 49]) → [3, 7]
- 対数・指数 :log10([1, 10000]) → [0, 4]、exp([-∞, 0] U [1, 2]) → [0, 1] U [2.718, 7.389]
- 三角関数 :cos([pi/3, pi]) → [-1, 0.5]、tan([pi/3, 2*pi/3]) → [-∞, -1.732] U [1.732, +∞]
- min/max :min([1, 2], [0, 6]) → [0, 2]、max([0, 10], [5, 6]) → [5, 10]
構文と使い方
- 区間表記 :[a, b]、単独数値は [a, a] として扱う
- 合併演算 :U で区間を合併
- ネストや関数も可能
- 例:[0, cos(2*pi)] → [0, 1]
- 例外的な合併例 :1 / [-2, 1] → [-∞, -0.5] U [1, +∞]
フル精度モード
- IEEE 754倍精度浮動小数点 に基づく
- 外向き丸め で常に真の値を含む区間を保証
- 入力値解釈・出力表示の切替 が可能
- 例:0.1 + 0.2 → [0.29999999999999993, 0.3000000000000001]
バグ・オープンソース・今後の展望
- バグ報告 :GitHubで受付
- エンジン(not-so-float)もTypeScriptで公開
- 今後の拡張
- フル精度モードの細分化
- 前回結果(ans)変数の追加
- 合併の優先順位改善
- 空集合入力サポート
区間合併演算の意義と背景
- 従来の区間演算 ではゼロを含む区間の割り算が困難
- 例:1 / [-1, 2] → [-∞, +∞] または未定義
- 区間合併演算 なら [-∞, -1] U [0.5, +∞] と明確に分離
- 非連続関数(tanなど)も閉じた体系で計算可能
- 2017年の論文「Interval Unions」 (Schichl ら)に基づく理論
- TypeScript製のインタラクティブ電卓 として実装
- 浮動小数点誤差にも強い 設計
区間合併演算電卓 は、数値計算における不確実性やゼロ割りなどの課題を柔軟に解決し、より信頼性の高い計算結果を提供する 革新的なツール です。