浮動小数点数の比較には許容誤差を使用する必要があることを知っています。しかし、ベクトルを比較するために、さまざまな距離メトリックに対応する3つの可能なソリューションを考えることができます。
- 各ベクトルのコンポーネントを個別に比較します。3つすべてが許容範囲内であれば、ベクトルは等しいです。このオプションは、均一なノルムのように動作し、公差の立方体を提供します。
- すべての絶対差の合計をある許容誤差と比較します。これは、タクシーの規範のように動作し、許容範囲のシンプレックスを提供します。
- (vecA-vecB)のユークリッド長を計算し、許容範囲内かどうかを確認します。これは、許容範囲を持つ標準ユークリッドノルムを与えます。
しかし、私の主な関心事は数値の安定性です。ユークリッドノルムは最良のオプションのように「感じます」が、すべての計算がより多くの丸め誤差を誘発するのではないかと心配しています。程度は低いですが、オプション2でもエラーが発生する可能性があります。(たとえば、ベクトルのx成分がyおよびzよりもはるかに大きい場合、すべての差を合計すると、yおよびzからの寄与がすべて失われる可能性があります。)現在、オプション1に傾いています。
誰もがこの問題について権威ある立場を取ることを検討できますか?
1
それはあなたが望むものに依存します。ベクトルの成分が等しいか、大きさが等しいかを確認していますか?プログラミングの意味で等しいかどうかを確認するには、オプション1が適しています。
—
ja72
これは浮動小数点に関する問題ではなく、数学的概念の適用に関する問題です。
—
shuhalo
ほとんどのアプリケーションでは、これらのアプローチはすべて満足できるものになります。特に、言い回しが示唆するように、3次元にのみ関心がある場合はなおさらです。私の最初の返事は「心配しないで」です。このコンテキストでエラーを丸めることについて心配している特定の理由はありますか?
—
MRocklin、2012