8

浮動小数点の精度が原因で、並列ベクトルを見つけるのに問題があります。ベクトルが許容範囲内で平行かどうかを判断するにはどうすればよいですか?

また、許容範囲との直交性のチェックも必要です。

4

3 に答える 3

12

ベクトルの場合、それらが直交しているかどうかを次のようにチェックしv1ますv2

abs(scalar_product(v1,v2)/(length(v1)*length(v2))) < epsilon

epsilon十分に小さいです。アナログ的に使用できます

scalar_product(v1,v2)/(length(v1)*length(v2)) > 1 - epsilon

並列性テスト用および

scalar_product(v1,v2)/(length(v1)*length(v2)) < -1 + epsilon

反平行のため。

于 2011-09-27T16:41:26.887 に答える
3

3D ベクトルがある場合、答えは簡単です。外積を計算し、それがゼロに近い場合、ベクトルはほぼ平行です: http://mathworld.wolfram.com/ParallelVectors.html

2D ベクトルの場合、ゼロ (1;2) => (1;2;0)、(4; 5.6) => (4; 5.6; 0) などの座標を追加するだけで、それらを 3D ベクトルに変換できます。

内積がゼロの場合、2 つのベクトルは直交または直交します: http://mathworld.wolfram.com/CrossProduct.html

-編集 http://mathworld.wolfram.com/Perpendicular.html

于 2011-09-27T16:45:06.023 に答える
0

3D ベクトルを使用している場合は、ツールベルトvgを使用してこれを簡潔に行うことができます。これは numpy の上にある軽量レイヤーであり、単一の値と積み重ねられたベクトルをサポートします。

import numpy as np
import vg

v1 = np.array([1.0, 2.0, 3.0])
v2 = np.array([-2.0, -4.0, -6.0])

vg.almost_collinear(v1, v2)
# True

私は最後のスタートアップでライブラリを作成しました。このライブラリは、NumPy で冗長または不透明な単純なアイデアを使用することによって動機付けられました。

于 2019-04-04T13:16:51.430 に答える