Я хочу создать функцию для вычисления угла между двумя векторами 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
Что не является правильным ответом.