Java で Apache Commons RealVector および ArrayRealVector クラスを使用しています。2 つのベクトル v1 と v2 の間のユークリッド距離を次のように計算できます。
double dist = v1.getDistance(v2);
ただし、二乗ユークリッド距離を取得しようとしています。Apache Commons Vector3D でこれを行う方法があることは知っています。distanceSq 関数を使用するだけです。私は高次元のベクトルで最近傍検索を行っているので、平方根を取る意味がありません。私のニーズに対して計算が無駄になるだけです。
私はそれをできた
ArrayRealVector diff = v1.subtract(v2);
double dist = diff.dotProduct(diff);
もちろん、これには回避したい中間の ArrayRealVector を返すことが含まれます。二乗ユークリッド距離を取得するコードを簡単に作成できますが、Apache Commons 数学のソリューションを使用したいと考えています。組み込みのソリューションはどれも素晴らしいものです。他の Apache Math クラスからのソリューションでさえ、おそらく問題ありません。