Python Numpy叉积不返回正交向量

Python Numpy叉积不返回正交向量,python,numpy,cross-product,Python,Numpy,Cross Product,我使用numpy中的叉积来生成与两个正交向量正交的第三个向量。在下面的代码片段中,第一个操作(叉积)显示了我的问题,取两个向量的叉积只得到其中一个输入向量的反,而不是与这两个向量正交的第三个向量 下一个操作表明我的两个向量确实是正交的,这并不重要。这是怎么回事 np.cross([ 0.36195593, 0.93219521, 0. ],[ 0.65916161, -0.25594151, -0.70710672]) Out[94]: array([-0.6591615 ,

我使用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
首先,这不完全是否定。最后一个术语有相同的符号。恰好,完全巧合的是,它接近于一个原始向量的求反

其次,它是正确的叉积。我不想用手去做,而是想利用这样一个事实:叉积是几何上定义为一个向量,它必须与其两个原始输入正交。两个输入是正交的事实(在很大程度上)是不相关的

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.

这并不完全是对上一个向量的求反。你所用的值正好是这样的:这是正确的叉积。再看一次结果。结果中的最后一项是
-0.70710684
,它与
np.cross
的第二个参数的第三项具有相同的符号。