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

向量模块中的点积

向量模块中的点积

一只名叫tom的猫 2022-01-11 16:58:28
我正在尝试使用 Python Vectors 模块。v1 =  Vector(1,0,0)v2 =  Vector(1,1,0)这些向量之间的角度是 45 度。我可以使用以下说明获得正确的值。>>> v1.angle(v2)45.00000000000001但是,v2.angle(v1) 出现错误。在调查中,发现 v1.dot(v2) 和 v2.dot(v1) 给出不同的结果,这就是这个错误背后的原因:>>> v1.dot(v2)1>>> v2.dot(v1)2与上面不同,我的理解是点积是可交换的。对此的任何帮助都会很棒。
查看完整描述

1 回答

?
泛舟湖上清波郎朗

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

正如 pypi.org/project/vectors 评论的那样,它是非常过时的模块。它不是标准或推荐的模块。请改用 numpy 或 scipy。


import numpy as np

v1  = np.array([1,0,0])

v2  = np.array([1,1,0])

您可以通过以下任何一种方法找到点积:


print(v2.dot(v1))              # Output = 1

print(v2.dot(v1))              # Output = 1

print(np.dot(v1,v2))           # Output = 1

要找到角度:


cos = np.dot(v1,v2)/(norm(v1)*norm(v2))

angle = np.arccos(np.clip(cos, -1, 1))

如果您更喜欢象征性地工作,您也可以查看 sympy。https://docs.sympy.org/latest/modules/geometry/lines.html#sympy.geometry.line.LinearEntity.angle_between


查看完整回答
反对 回复 2022-01-11
  • 1 回答
  • 0 关注
  • 140 浏览
慕课专栏
更多

添加回答

举报

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