問題タブ [interval-arithmetic]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
math - 良い不確実性 (間隔) 算術ライブラリ?
編集済み
「不確実性」と「不確実性」という言葉がかなり遍在していることを考えると、「不確実性算術」をグーグルで調べてすぐに役立つものを得るのは難しい. したがって、この説明に従って、不確実な値の処理を実装する、ほぼすべてのプログラミング/スクリプト言語で、ルーチンの優れたライブラリを誰でも提案できます。
不確実性演算を使用して、測定された許容誤差がある近似値を記録します。これは、値について確信が持てない場合ですが、許容される上限と下限はわかっており、±値で表されます。
math - 最悪の場合のエラーを追跡するための算術ライブラリ
(編集済み)
算術演算の最大累積誤差を知ることができるライブラリまたはツールはありますか?
たとえば、反復計算を行うと...
... 最後に、計算された値だけでなく、潜在的なエラー (個々の操作の結果が各オペランドの範囲制限をとった場合の可能な値の範囲) も知りたいです。
私はすでにEADouble.java (エラー アカウンティングの EA)という Java クラスを作成しました。これは、いくつかの基本的な操作のために、正と負の最大誤差と計算値を保持および更新しますが、四角い車輪を再発明することになるのではないかと心配しています。 .
ライブラリ/Javaの何か/何か? 助言がありますか?
- 7 月 11 日に更新: 既存のライブラリを調査し、サンプル コードへのリンクを追加しました。
- フェローの方がコメントされていたように、区間演算という概念があり、それについては以前に質問(不確実性(区間)演算ライブラリは良いですか?)がありました。私の意図については、いくつかの小さな問題があります。
- 上限と下限よりも「主な」値に関心があります。ただし、オープン ライブラリにその付加価値を追加することは簡単です。
- エラーを独立した浮動小数点として考慮すると、精度が向上する可能性があります (たとえば、加算の場合、上限はULP全体ではなくULPの半分だけインクリメントされます)。
- 私が見たライブラリ:
- ia_math (Java。主な値を追加するだけです。これまでの私のお気に入り)
- ブースト/数値/間隔(C++、非常に複雑/完全)
- ErrorProp (Java、会計値、標準偏差としてのエラー)
- サンプル コード ( TestEADouble.java ) は、弾道シミュレーションと数 e の計算を正常に実行します。ただし、これらはそれほど要求の厳しいシナリオではありません。
javascript - Javascript の保守的な区間演算ライブラリ
Javascript で保守的な区間演算を行うための優れた既存のライブラリはありますか?
保守的に言えば、実数の範囲を表す 2 つの間隔 (端点がたまたま浮動小数点) が与えられた場合、それらの間隔の合計には、元の間隔からの実数のすべての合計が含まれ、他の操作についても同様です。クイック検索で見つかった唯一のライブラリはhttps://github.com/Jeff-Tian/JavaScriptIntervalArithmeticですが、保守的ではないようです。
丸めモードにアクセスできないため、間隔が最適でない場合でも問題ありません (実際には速度の点で好ましい)。たとえば、[(1-epsilon)*(x*x),(1+epsilon)*(x*x)]
これが最適な浮動小数点間隔よりも大きい場合でも、数値の 2 乗が保守的に で近似された場合は問題ありません。
python - パンダを使用して重複する時間範囲の期間を計算する
以下のサンプルのようなトラフィック データの大きな csv ファイルがあり、合計バイト数と各データ転送の期間を計算する必要があります。時間範囲が重複していますが、それらをマージする必要があります。
望ましい出力:
現在、次のような行を使用しています。
calculate_duration 関数 (以下) は、各グループの内容を反復し、重複する時間間隔をマージしてから、合計されたデータフレーム df に連結されるデータフレームを返します。
このアプローチは、反復と各グループの apply メソッドの呼び出しを伴うため、非常に時間がかかります。
データ転送の期間を計算し、重複する間隔をマージして、できれば cython に頼らずに pandas を使用して (何とか反復を回避しますか?)、より効率的な方法はありますか?
floating-point - ボクセルと三角形の交差に対する保守的な AABB
私が解決しようとしている問題は、三角形と立方体の交点に対して AABB を生成することです。2D では、必要なボリュームは次の緑色の四角形です。
入力ポイントと出力境界は IEEE float です。
浮動小数点を使用する現在の方法は、三角形をボクセルの各面にクリップし、結果のポリゴンをバインドすることです。ただし、浮動小数点を使用すると交点が正確ではないため、結果の AABB が交点領域を完全に境界付けない場合があります。保守的な境界が必要です。
クリッピングに区間演算を使用することを検討しましたが、2 つの潜在的な問題があります。
- 一連の操作の間隔が大きくなる可能性があります
- 条件が間隔に依存する分岐は混乱します。結果が不確実になる可能性があるため、両方の可能性を計算する必要があります。例えば。もし (線が平面と交差する)
これを行うためのよりきちんとした方法はありますか?最終結果をオフセットするために必要なイプシロンを計算する方法はありますか? double で計算し、最終的な浮動小数点数の結果を 1ULP オフセットするためだけにテンピングします。これは、double 演算が 28 ビットを超えるエラーを蓄積しないことを期待しています。証明できれば良いのですが。
有理演算も別の選択肢かもしれませんが、入力が浮動小数点範囲全体に及ぶ場合に十分なビット数を保証する方法がわかりません。
助言がありますか?前もって感謝します。
c++ - boost::numeric::interval の長さの組み込み関数はありますか
コードに次のように入力しています
長さを計算する簡単なユーティリティがboost::numeric::intervalに見つからないことに驚いています。私ができるように長さ関数を期待します
これはどちらか
- 見落としとして図書館から行方不明
- コンセプトに合わないため、正当な理由でライブラリから欠落しています
- そこにあるが、私が見落とした別の名前で
明らかに、これを行うための単純なインライン関数を作成できますが、min や max などの関数が表示されていることを考えると、少し驚いています。