浮動小数点のベクトルを比較する正しい方法は何ですか?


8

浮動小数点数の比較には許容誤差を使用する必要があることを知っています。しかし、ベクトルを比較するために、さまざまな距離メトリックに対応する3つの可能なソリューションを考えることができます。

  1. 各ベクトルのコンポーネントを個別に比較します。3つすべてが許容範囲内であれば、ベクトルは等しいです。このオプションは、均一なノルムのように動作し、公差の立方体を提供します。
  2. すべての絶対差の合計をある許容誤差と比較します。これは、タクシーの規範のように動作し、許容範囲のシンプレックスを提供します。
  3. (vecA-vecB)のユークリッド長を計算し、許容範囲内かどうかを確認します。これは、許容範囲を持つ標準ユークリッドノルムを与えます。

しかし、私の主な関心事は数値の安定性です。ユークリッドノルムは最良のオプションのように「感じます」が、すべての計算がより多くの丸め誤差を誘発するのではないかと心配しています。程度は低いですが、オプション2でもエラーが発生する可能性があります。(たとえば、ベクトルのx成分がyおよびzよりもはるかに大きい場合、すべての差を合計すると、yおよびzからの寄与がすべて失われる可能性があります。)現在、オプション1に傾いています。

誰もがこの問題について権威ある立場を取ることを検討できますか?


1
それはあなたが望むものに依存します。ベクトルの成分が等しいか、大きさが等しいかを確認していますか?プログラミングの意味で等しいかどうかを確認するには、オプション1が適しています。
ja72

これは浮動小数点に関する問題ではなく、数学的概念の適用に関する問題です。
shuhalo

1
ほとんどのアプリケーションでは、これらのアプローチはすべて満足できるものになります。特に、言い回しが示唆するように、3次元にのみ関心がある場合はなおさらです。私の最初の返事は「心配しないで」です。このコンテキストでエラーを丸めることについて心配している特定の理由はありますか?
MRocklin、2012

回答:


5

この質問に対する答えは、アプリケーションに大きく依存します。正確な数値の実装に汗を流す代わりに、提案したそれぞれの潜在的な実施形態が何を意味するかについてより多くを考えます。たとえば、計算された距離の1つ以上に物理的な解釈がありますか?ベクトルコンポーネントの単位とスケールは同じですか?

すべてのパラメーターの単位が同じで、値のスケールが異なるシナリオでは、システムをディメンション化するための最良の方法についてさらに検討する必要があります。 無次元化は、邪悪な数値精度のノームを追い払うのに役立ちます。

x、y、zを値の名前として使用しているので、空間内のある種の位置を見ていると思います。この2つの基準には、継続的な導関数があるという明確な利点があるため、実際に問題の情報が欠けているので、そこから始めます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.