Я намагався знайти швидкий алгоритм обчислення всього кута між 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
їх.