1

学校のプロジェクトでは、20x20の写真を比較する簡単なプログラムがあります。私は20枚の写真を入れ、次に21枚目の写真を入れて20枚目の写真と比較し、挿入した写真(またはどちらが最も似ているか)をポップアップします。問題は、私の先生が私に最寄りのアルゴリズムを使用したかったので、すべての写真から距離を数えています。私はすべてが機能しているが、写真が似ていると、どちらが私のものに近いのかという問題がある。たとえば、私は2枚の異なる写真(だけでなく、彼らはほぼ同じです)とこれらの距離を取得:CLI/C++ 15桁以上の浮動小数点数を格納するには?

0 distance: 1353.07982026191 
1 distance: 1353.07982026191 

それはすでに15桁ですが、私はdoubleタイプを使用しています。私はlong doubleが同じであることを読んでいた。 15桁以上の数字を格納して数学を行う「簡単な」方法はありますか?

私はちょうど私がそのような類似した写真を比較傾けるより正確にする必要があり、または私はおそらくここに渡す習慣のthats限度、と私は私の先生に相談してくださいユークリッド距離 enter image description here を使用して距離を数えますか?

+0

平方根を取る必要はありません。なぜなら、同じ答えに対して、代わりに平方差を比較できるからです。また、確かにここに15以上の有効数字が必要ではありません。もし2枚の絵がこの精度に等しいならば、それらを等しく近いものとして扱います。 – TonyK

答えて

2

たぶん、あなたは、代数的アプローチを使用することができます。

私たちはあなたがベクトルXまたはBに近い場合calcuateしようとしていると仮定しよう。 (I'LLなっD (X、B

- 何を計算するのに必要なの

D (X)のサインです簡潔にするため、いくつかの通路)

した後を省略唯一の非常に類似していなければならない値の差が含まれてい

。このような小さな値を合計すると、集約を処理するよりも精度が向上します。

+0

私の最後の発言の注記:実際には、同じ大きさの2つの数値を加算しています(精度の損失はありません)。おそらくはるかに小さいものを乗算します(IEEE表現を使用するマシンでは精度が失われません)。 –

関連する問題