Numpy叉积不返回正交向量

时间:2018-11-21 18:28:44

标签: python numpy cross-product

我正在使用numpy中的叉积来生成与两个正交向量正交的第三向量。在下面的代码片段中,第一个运算(叉积)显示了我的问题,采用两个向量的叉积仅给我一个输入向量的取反,而不是与两个向量正交的第三向量。

下一个操作表明我的两个向量确实是正交的,这并不重要。这里发生了什么?

np.cross([ 0.36195593,  0.93219521,  0.        ],[ 0.65916161, -0.25594151, -0.70710672])
Out[94]: array([-0.6591615 ,  0.25594147, -0.70710684])

np.dot([ 0.36195593,  0.93219521,  0.        ],[ 0.65916161, -0.25594151, -0.70710672])
Out[95]: 3.905680168170278e-09

1 个答案:

答案 0 :(得分:1)

首先,它不是完全的否定词。最后一项具有相同的符号。恰好巧合的是,它恰好与原始向量之一的取反接近。

其次,它是正确的叉积。不用手工做,我将吸引一个事实,即叉积在几何上被定义为必须与两个原始输入正交的向量。两个输入是正交的事实(在很大程度上)无关紧要。

In [11]: first = [ 0.36195593,  0.93219521,  0.]

In [12]: second = [ 0.65916161, -0.25594151, -0.70710672]

In [13]: third = np.cross(first, second)

In [14]: third
Out[14]: array([-0.6591615 ,  0.25594147, -0.70710684])

In [15]: np.dot(first, third)
Out[15]: 0.0

In [17]: np.dot(second, third)
Out[17]: 1.1102230246251565e-16

In [18]: np.isclose( np.dot(second, third), 0)
Out[18]: True

HTH。