Numpy 叉积不 return 正交向量
Numpy cross product does not return orthogonal vector
我正在使用 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.
我正在使用 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.