为了账号安全,请及时绑定邮箱和手机立即绑定

Numpy叉积不返回正交向量

Numpy叉积不返回正交向量

沧海一幻觉 2021-08-24 17:32:13
我在 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 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

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


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


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


查看完整回答
反对 回复 2021-08-24
  • 1 回答
  • 0 关注
  • 196 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信