/ / Обчислення кута між векторами, використовуючи вектор як еталонну точку: - python, cosinus-подібність, косинус

Обчислення кута між векторами за допомогою вектора як контрольної точки: - python, cosinus-подібність, косинус

Я намагався знайти швидкий алгоритм обчислення всього кута між n векторами, які мають довжину x. Наприклад, якщо x = 3 та n = 4, мої дані виглядали б приблизно так:

A: [1,2,3]
B: [2,3,4]
C: [...]
D: [...]

Мені було цікаво, чи прийнятно це знайтикут між усіма бути векторами (A, B, C, D) щодо деякого фіксованого вектора (тобто X: [100, 100, 100, 100]), а потім віднімати кути (A, B, C, D), виявлені щодо цього фіксоване значення, щоб знайти кут між усіма ними. Я хочу це зробити, тому що мені потрібно буде лише один раз обчислити кут, а потім я зможу відняти всі мої вектори, щоб знайти різні між собою. Словом, я хочу знати, чи можна зробити це припущення?

кут "між (A, B) == angle_between (A, X) - angle_between (B, X)

а функція angle_between - це косинус подібність.

Відповіді:

0 для відповіді № 1

Цей підхід буде працювати тільки для 2-D векторів. Для вищих розмірів будь-які два вектори визначають гіперплощу, і тільки якщо ваш третій (опорний) вектор лежить у цій гіперплоскості, ваш підхід буде працювати. На жаль, замість того, щоб тільки обчислити n кути і віднімання, щоб визначити кути між кожною парою векторів, вам доведеться розраховувати все n choose 2 їх.