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

使用内积计算两个向量之间的角度

使用内积计算两个向量之间的角度

RISEBY 2021-06-14 16:00:26
我想创建一个函数来计算两个向量 x、y 之间的角度,使用内积的定义为 x@A@y,其中 A 是一个正定矩阵。我的功能如下:def angle(A, x, y):    import numpy as np    from numpy.linalg import norm    nominator = x@A@y    denominator = (x@A@x)*(y@A@y)    angle = np.arccos(nominator/denominator)    return(angle)但是,它不会返回正确的答案。例如,y = np.array([0, -1])x = np.array([1, 1])A = np.array([    [1, -1/2],    [-1/2, 5]])angle(A, x, y)1.7517827780414443这不是正确的答案。
查看完整描述

1 回答

?
慕田峪7331174

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

您需要取分母的平方根,因为向量的范数v定义为sqrt(innerprod(v, v))。这是否给了您预期的答案?


import numpy as np


def angle(A, x, y):

    nominator = x@A@y

    denominator = np.sqrt((x@A@x)*(y@A@y))

    angle = np.arccos(nominator/denominator)

    return(angle)


angle(A, x, y)

2.6905658417935308


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

添加回答

举报

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