Тригонометрия

Тригонометрия в графике и сигналах

Каждый кадр игры в Unity - это сотни тысяч умножений на матрицы вращения. Каждый токен в LLaMA - это RoPE-поворот embedding-вектора через cos и sin. Каждый пиксель JPEG - это 2D дискретное косинусное преобразование. Тригонометрия - это не школьный материал, который «потом пригодится». Это буквально то, что выполняется прямо сейчас в коде на ваших устройствах.

  • **Игровые движки:** каждый объект в сцене трансформируется матрицами вращения R(θ) 60 раз в секунду
  • **LLaMA/GPT-NeoX:** RoPE - стандарт позиционного кодирования в современных LLM; поворот через cos/sin на каждую позицию токена
  • **FFT-спектральный анализ:** atan2(Im(X[k]), Re(X[k])) даёт фазу каждой гармоники сигнала

Предварительные знания

  • Euler's Formula

Матрицы вращения 2D и 3D

Поворот точки (x, y) на угол θ против часовой стрелки описывается матричным умножением. Матрица вращения R(θ) - прямое следствие формулы Эйлера: умножение вектора на eⁱᶿ в комплексной плоскости эквивалентно умножению на матрицу.

**2D матрица вращения:** R(θ) = [[cos θ, −sin θ], [sin θ, cos θ]] [x', y'] = R(θ) · [x, y]ᵀ Свойства: det(R) = 1, Rᵀ = R⁻¹ (ортогональная матрица)

В 3D-движках вращение реализуется либо через 3×3 матрицы (три матрицы для Rx, Ry, Rz), либо через кватернионы (избегающие проблемы gimbal lock). Матрица Ry(θ) для вращения вокруг оси Y: [[cos θ, 0, sin θ], [0, 1, 0], [−sin θ, 0, cos θ]].

Матрица вращения R(θ) - ортогональная. Что это означает для R⁻¹?

Ряды Фурье периодических сигналов

Любой периодический сигнал с периодом T можно разложить в ряд Фурье - бесконечную сумму синусоид с частотами, кратными основной: f₀ = 1/T. Прямоугольная волна, пилообразный сигнал, любая повторяющаяся форма - всё разлагается.

Феномен Гиббса: ряд Фурье у точки разрыва всегда перерегулирует примерно на 9%, независимо от числа гармоник. Это не ошибка алгоритма - математическое свойство ряда. В обработке изображений он вызывает «звон» (ringing) вокруг резких краёв.

Прямоугольная волна содержит только нечётные гармоники. Что происходит при добавлении чётных гармоник?

RoPE-позиционное кодирование и atan2

RoPE (Rotary Position Embedding) - метод позиционного кодирования в современных трансформерах (LLaMA, GPT-NeoX). Идея: поворачивать вектор запроса q и ключа k на угол, зависящий от позиции токена в последовательности. Скалярное произведение rotated_q · rotated_k зависит только от разности позиций.

Функция atan2(y, x) возвращает угол в диапазоне (−π, π], учитывая знаки обоих аргументов и корректно определяя четверть. В отличие от arctan(y/x), она: не делит на ноль при x = 0, различает (1, 1) и (−1, −1), используется во всём коде от игровых движков до навигации.

В чём ключевое свойство RoPE-позиционного кодирования?

Ключевые идеи

  • **Матрица вращения:** R(θ) = [[cos θ, −sin θ], [sin θ, cos θ]], det = 1, R⁻¹ = Rᵀ
  • **Ряды Фурье:** любой периодический сигнал = сумма sin/cos гармоник; феномен Гиббса - 9% перерегулирование у разрывов
  • **RoPE:** поворот векторов q и k на угол m·θᵢ; ключевое свойство - скалярное произведение зависит только от разности позиций
  • **atan2(y, x):** угол с учётом четверти; всегда использовать вместо arctan(y/x) в коде

Связанные темы

Тригонометрия в графике и сигналах - применение всех предыдущих тем:

  • Формула Эйлера — Матрицы вращения и DFT - прямые следствия eⁱˣ = cos x + i·sin x
  • Обратные тригонометрические функции — atan2 - практическая версия arctan с учётом знаков обоих аргументов
  • Тригонометрия на собеседовании — Угол между векторами, поворот, cross product - все задачи из интервью используют матрицы вращения и atan2

Вопросы для размышления

  • RoPE позволяет трансформерам обобщаться на последовательности длиннее обучающих. Как это связано со свойством зависимости скалярного произведения только от разности позиций?
  • В чём разница между комплексным умножением z·eⁱᶿ и матричным умножением R(θ)·v? Это один и тот же поворот или разные операции?
  • Феномен Гиббса появляется в JPEG как рябь вокруг резких краёв. Как инженеры JPEG борются с этим эффектом? Подсказка: DCT vs DFT.

Связанные уроки

  • dsp-01
Тригонометрия в графике и сигналах

0

1

Войти