向量模块中的点积

时间:2019-04-16 09:12:57

标签: python vector

我正在尝试使用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 个答案:

答案 0 :(得分:0)

正如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