要计算两个向量之间的夹角,通常我们会使用向量的点积公式。但如果你希望使用arccos
函数来找到这个角度,并且这个角度的范围是从0到2弧度(而不是常规的0到π弧度),你可以按照以下步骤操作:
两个向量A和B之间的夹角θ可以通过它们的点积和模长来计算:
cos(θ) = (A·B) / (|A| * |B|)
其中,A·B是向量的点积,|A|和|B|分别是向量A和B的模长。
由于arccos
函数返回的角度范围是0到π弧度,为了得到0到2弧度的范围,你可以根据向量的方向来调整角度。例如,如果两个向量的点积为负,说明夹角大于90度,你可以将得到的角度加上π来得到0到2弧度的范围内的角度。
import math
def vector_angle(v1, v2):
dot_product = sum(a * b for a, b in zip(v1, v2))
magnitude_v1 = math.sqrt(sum(a**2 for a in v1))
magnitude_v2 = math.sqrt(sum(b**2 for b in v2))
cos_theta = dot_product / (magnitude_v1 * magnitude_v2)
# 确保cos_theta在[-1, 1]范围内,以避免arccos的域错误
cos_theta = max(min(cos_theta, 1.0), -1.0)
theta = math.acos(cos_theta)
# 如果点积为负,则调整角度范围
if dot_product < 0:
theta += math.pi
return theta
# 示例向量
v1 = [1, 0]
v2 = [-1, 1]
angle = vector_angle(v1, v2)
print(f"The angle between the vectors is {angle} radians.")
arccos
之前,要检查点积除以模长乘积的结果是否在[-1, 1]范围内,以避免数学错误。这种方法可以帮助你找到两个向量之间的夹角,并且角度范围可以从0到2弧度。
领取专属 10元无门槛券
手把手带您无忧上云