🔴 Сложный ⏱️ 50 минут

Периодические функции

📋 Содержание урока

Периодические функции 🔄

Представь, что ты обучаешь модель предсказывать нагрузку на сервис по часам. Ты честно кладёшь в датасет колонку hour со значениями от 0 до 23 — и модель начинает вести себя странно: в полночь предсказания резко ломаются. Причина обидная и чисто математическая. Для модели час 23 и час 0 — это числа, отличающиеся на 23, максимально далёкие друг от друга во всём признаке. А в реальности между ними одна минута. Модель не знает, что время замкнуто в кольцо.

Лечится это одной строчкой: вместо числа hour подают пару $\left(\sin\frac{2\pi h}{24},\ \cos\frac{2\pi h}{24}\right)$. И вдруг всё работает: 23 часа и 0 часов оказываются соседями, потому что синус и косинус — периодические функции, и они по построению возвращают одно и то же значение через каждые 24 шага. Это не хитрый трюк из блога по data science, это прямое следствие определения периодичности, которое мы сейчас разберём до последнего винтика.

Периодичность — вообще одна из самых «физических» идей во всей школьной математике. Всё, что повторяется — вращение Земли, переменный ток в розетке, сердцебиение, звуковая волна, недельный цикл продаж, орбита спутника GPS, — описывается функциями, у которых значение возвращается на круги своя через фиксированный шаг. И как только ты умеешь находить этот шаг, ты умеешь очень многое: сворачивать сложные тригонометрические выражения, решать уравнения сразу «оптом» для бесконечной серии корней, читать спектрограмму сигнала и понимать, почему в трансформере позиционное кодирование сделано именно через синусы, а не через простую нумерацию токенов.

В этом уроке мы пройдём путь от аккуратного определения периода к вычислительной технике (как за пять секунд находить период у $\sin(kx+b)$, у $\sin^2 x$, у суммы двух гармоник) и дальше — к тому, как периодичность работает в машинном обучении и анализе данных. По дороге разберём коварные места: почему у константы нет основного периода, почему сумма двух периодических функций может оказаться непериодической, и почему $|\sin x|$ повторяется вдвое чаще, чем сам синус.

🎯 Ты узнаешь:

  • Что такое период и основной (наименьший) период функции, и почему в определении обязательно участвует область определения
  • Как мгновенно находить период любой функции вида $y = A f(kx + b) + c$ — и почему сдвиги на период не влияют
  • Как считать период суммы двух периодических функций через НОК и когда сумма периодической не будет
  • Почему $\sin^2 x$, $|\sin x|$ и $\sin^4 x + \cos^4 x$ имеют период меньше, чем $2\pi$
  • Как периодичность превращается в циклические признаки, позиционное кодирование трансформеров и разложение временного ряда на сезонные компоненты

История: откуда это взялось?

Первыми периодичность поставили на службу астрономы. Клавдий Птолемей в «Альмагесте» (около 150 года н. э.) столкнулся с задачей: планеты на небе иногда движутся «назад» (петлями), а объяснять это надо было через равномерные круговые движения. Решение Птолемея — эпициклы: планета едет по маленькой окружности, центр которой едет по большой. Математически это буквально сумма двух периодических движений с разными периодами, и точность модели повышали, добавляя всё новые и новые круги. Птолемей не знал слова «период функции», но фактически работал с суммой гармоник — той самой конструкцией, которую через полторы тысячи лет назовут тригонометрическим рядом.

Настоящий прорыв случился в 1822 году, когда Жозеф Фурье опубликовал «Théorie analytique de la chaleur» — аналитическую теорию тепла. Фурье решал совершенно приземлённую инженерную задачу: как распределяется температура в металлическом стержне со временем. И выдвинул идею, которая тогда казалась дикой: любую разумную периодическую функцию можно представить как сумму синусов и косинусов с кратными частотами. Жозеф Луи Лагранж, сидевший в комиссии Парижской академии, категорически возражал: сумма гладких синусоид не может дать функцию с изломом, это же нелепо. Работу Фурье с первого раза не приняли, и премию он получил только в 1811 году с оговорками о недостаточной строгости. Лагранж был отчасти прав по части строгости (аккуратная теория сходимости рядов Фурье появится только у Дирихле в 1829 году), но Фурье был прав по существу: разложение работает, и сегодня оно — основа всей обработки сигналов.

Мостик в сегодня короткий и очень прямой. В 1965 году Джеймс Кули и Джон Тьюки опубликовали алгоритм быстрого преобразования Фурье (FFT), который считает разложение на периодические компоненты за $O(n\log n)$ вместо $O(n^2)$ — и с этого момента спектральный анализ стал доступен машинам в реальном времени. А в 2017 году в статье «Attention Is All You Need» Васвани с соавторами предложили кодировать позицию токена в трансформере набором синусов и косинусов с периодами, растущими геометрической прогрессией от $2\pi$ до примерно $10000 \cdot 2\pi$. То есть буквально: модель понимает, где стоит слово в предложении, потому что в неё зашили целый оркестр периодических функций с разными периодами. Идея Птолемея, техника Фурье, железо Кули-Тьюки — и вот она в архитектуре GPT.


Что такое период: определение и первые ловушки

Интуиция

Представь заводную карусель, которая делает полный оборот ровно за 40 секунд. Если ты сфотографируешь её сейчас, а потом ровно через 40 секунд — фотографии будут идентичны. Через 80 секунд — тоже. Через 120 — тоже. Число 40 здесь и есть период: сдвиг во времени, который ничего не меняет.

Формально «ничего не меняет» означает вот что: сдвинули аргумент функции на $T$ — значение осталось прежним. Причём это должно выполняться для всех $x$ сразу, а не для одного удачно подобранного. Если $\sin(x + T) = \sin x$ выполнилось только при $x = 0$, это ещё ни о чём не говорит — таких $T$ вагон. Периодичность — это утверждение обо всей функции целиком.

И тут прячется первая ловушка, о которой обычно забывают. Сдвинуть аргумент на $T$ можно только если сдвинутая точка всё ещё принадлежит области определения. Возьми синус, но рассмотри его не на всей прямой, а только на отрезке $[0; 10\pi]$. Формула та же, график выглядит волнисто и «периодично» — но функция не является периодической, потому что для $x = 9\pi$ точки $x + 2\pi = 11\pi$ в области определения просто нет. Периодичность требует, чтобы область определения сама была устроена «бесконечно-повторяющейся».

Определение: Функция $f$ называется периодической, если существует число $T \neq 0$ такое, что для любого $x \in D(f)$ выполняется: точки $x + T$ и $x - T$ тоже принадлежат $D(f)$, и при этом

$$f(x + T) = f(x).$$

Число $T$ называется периодом функции $f$.

Базовые свойства, которые следуют прямо из определения:

  • Если $T$ — период, то $-T$ тоже период: подставь в равенство $x - T$ вместо $x$
  • Если $T$ — период, то и $2T$, $3T$, $\dots$, и вообще $nT$ для любого целого $n \neq 0$ — тоже периоды
  • Если $T_1$ и $T_2$ — периоды одной функции, то $T_1 + T_2$ и $T_1 - T_2$ (если не ноль) — тоже периоды
  • Периодов у функции всегда бесконечно много — поэтому спрашивать «а какой у неё период?» имеет смысл только вместе со словом «основной»

Примеры с разбором

Пример 1 (простой): проверь, что $T = 2\pi$ — период функции $y = \cos x$

Решение:

Шаг 1. Область определения косинуса — вся числовая прямая $\mathbb{R}$. Значит, для любого $x$ точки $x + 2\pi$ и $x - 2\pi$ тоже лежат в $D(f)$ — первое условие определения выполнено.

Шаг 2. Применим формулу косинуса суммы:

$$\cos(x + 2\pi) = \cos x \cdot \cos 2\pi - \sin x \cdot \sin 2\pi$$

Шаг 3. Подставим табличные значения $\cos 2\pi = 1$ и $\sin 2\pi = 0$:

$$\cos(x + 2\pi) = \cos x \cdot 1 - \sin x \cdot 0 = \cos x$$

Шаг 4. Равенство выполнено для любого $x$ — значит, $2\pi$ действительно период.

Ответ: $T = 2\pi$ — период функции $y = \cos x$.


Пример 2 (средний): докажи, что функция «дробная часть» $y = \{x\}$ периодична с периодом 1

Напомню: $\{x\} = x - \lfloor x \rfloor$, то есть от числа отбрасывается целая часть (наибольшее целое, не превосходящее $x$). Например, $\{3{,}7\} = 0{,}7$, а $\{-1{,}2\} = -1{,}2 - (-2) = 0{,}8$.

Решение:

Шаг 1. Область определения — вся прямая $\mathbb{R}$, сдвиг на $\pm 1$ никуда не выводит.

Шаг 2. Заметим ключевое свойство целой части: $\lfloor x + 1 \rfloor = \lfloor x \rfloor + 1$. Прибавление единицы к числу увеличивает его целую часть ровно на единицу.

Шаг 3. Подставим в определение дробной части:

$$\{x + 1\} = (x + 1) - \lfloor x + 1 \rfloor = (x + 1) - (\lfloor x \rfloor + 1) = x - \lfloor x \rfloor = \{x\}$$

Проверим наш ответ: $\{2{,}3\} = 0{,}3$ и $\{3{,}3\} = 0{,}3$ ✅

Ответ: $y = \{x\}$ периодична, $T = 1$ — период.

📌 Эта функция — математический двойник операции x % 1 в коде. И вообще любая операция «взять остаток от деления на $n$» порождает периодическую функцию с периодом $n$. Именно поэтому день недели, месяц и час — все они по своей природе периодические признаки.


Пример 3 (сложный): докажи, что если $T$ — период функции $f$, то $nT$ — тоже период при любом натуральном $n$

Решение:

Давай разберёмся методом математической индукции — это ровно тот случай, когда индукция читается легко.

Шаг 1. База. При $n = 1$ утверждение — это само условие: $f(x + T) = f(x)$. Верно.

Шаг 2. Предположение индукции. Пусть для некоторого $n = k$ уже доказано, что $kT$ — период, то есть $f(x + kT) = f(x)$ для всех $x \in D(f)$.

Шаг 3. Переход. Рассмотрим сдвиг на $(k+1)T$ и разобьём его на два шага:

$$f\big(x + (k+1)T\big) = f\big((x + kT) + T\big)$$

Внутренняя точка $x + kT$ лежит в области определения (по предположению индукции), значит к ней применимо исходное свойство периода $T$:

$$f\big((x + kT) + T\big) = f(x + kT) = f(x)$$

Шаг 4. Получили $f(x + (k+1)T) = f(x)$ — переход доказан.

Ответ: $nT$ — период для любого натурального $n$; аналогично для отрицательных целых (через свойство $-T$).

Вывод: у периодической функции периодов бесконечно много, и они образуют «решётку» из кратных. Поэтому вопрос «найди период» на самом деле всегда означает «найди наименьший положительный период» — к нему и переходим.

Почему это важно

Требование «область определения должна быть инвариантна к сдвигу» — не педантизм, а вполне рабочая вещь. Когда ты в анализе временных рядов говоришь «у ряда недельная сезонность с периодом 7», ты неявно предполагаешь, что данные идут сплошным потоком без дыр: если в датасете пропущены выходные, наивная свёртка «взять то же значение неделю назад» начнёт брать значения не оттуда. И ровно та же логика в проверке гипотезы о периодичности: прежде чем сравнивать $f(x)$ и $f(x+T)$, убедись, что обе точки вообще существуют. В коде это отлавливается как KeyError или как тихо подставленный NaN, который потом портит обучение.


Основной период: тот самый «наименьший шаг»

Интуиция

Периодов бесконечно много, но среди них обычно есть «главный» — самый маленький положительный. Представь узор на обоях: он повторяется каждые 30 см, а значит и каждые 60, и каждые 90. Но производитель напишет на рулоне именно 30 — это минимальный раппорт, наименьшая повторяющаяся ячейка. В математике эту величину называют основным периодом.

Разберём по шагам, зачем нужна именно минимальность. Если ты знаешь основной период $T_0$, то ты знаешь функцию целиком, изучив её на одном-единственном отрезке длины $T_0$ — всё остальное получается копипастой. Это огромная экономия: вместо бесконечного графика достаточно понять один «кирпичик».

Определение: Основным (наименьшим положительным) периодом функции $f$ называется наименьшее положительное число $T_0$ среди всех её периодов, если такое число существует.

Оговорка «если существует» — не формальность. Есть вполне живые функции, у которых основного периода нет:

  • Константа $f(x) = 5$. Любое число $T \neq 0$ является её периодом ($5 = 5$ при любом сдвиге). Наименьшего положительного среди всех положительных чисел не бывает — значит, основного периода нет
  • Функция Дирихле $D(x) = 1$ при рациональном $x$ и $D(x) = 0$ при иррациональном. Любое ненулевое рациональное число — период (рациональное плюс рациональное = рациональное, иррациональное плюс рациональное = иррациональное). Наименьшего положительного рационального числа не существует — основного периода нет

Основные периоды, которые надо знать наизусть:

  • $y = \sin x$ — основной период $2\pi$
  • $y = \cos x$ — основной период $2\pi$
  • $y = \operatorname{tg} x$ — основной период $\pi$
  • $y = \operatorname{ctg} x$ — основной период $\pi$
  • $y = \{x\}$ (дробная часть) — основной период $1$
  • $y = |\sin x|$ — основной период $\pi$
  • $y = \sin^2 x$ — основной период $\pi$

Примеры с разбором

Пример 1 (простой): докажи, что основной период $y = \cos x$ равен $2\pi$

Решение:

Шаг 1. Что $2\pi$ — период, мы уже проверили выше. Осталось показать, что меньшего положительного периода нет.

Шаг 2. Предположим противное: существует период $T$, причём $0 < T < 2\pi$.

Шаг 3. Раз $T$ — период, равенство $\cos(x + T) = \cos x$ обязано выполняться для любого $x$. Возьмём самое удобное значение $x = 0$:

$$\cos(0 + T) = \cos 0 \quad \Longrightarrow \quad \cos T = 1$$

Шаг 4. Уравнение $\cos T = 1$ имеет решения только вида $T = 2\pi k$, где $k$ — целое. На интервале $(0; 2\pi)$ таких точек нет: ближайшие решения — это $T = 0$ и $T = 2\pi$, оба вне интервала.

Шаг 5. Получили противоречие с предположением.

Ответ: основной период $y = \cos x$ равен $2\pi$.

📌 Приём универсальный: подставь в равенство точку экстремума (там, где функция достигает максимума или минимума). В такой точке значение достигается «редко», и это сразу сильно ограничивает возможные $T$.


Пример 2 (средний): найди основной период функции $y = |\sin x|$

Решение:

Шаг 1. Проверим кандидата $T = \pi$. Используем формулу приведения $\sin(x + \pi) = -\sin x$:

$$|\sin(x + \pi)| = |-\sin x| = |\sin x|$$

Равенство выполняется для всех $x$ — значит, $\pi$ действительно период.

Шаг 2. Теперь докажем минимальность. Пусть $T$ — период, $0 < T < \pi$.

Шаг 3. Возьмём точку максимума $x = \dfrac{\pi}{2}$, где $|\sin x| = 1$:

$$\left|\sin\left(\frac{\pi}{2} + T\right)\right| = \left|\sin\frac{\pi}{2}\right| = 1$$

Шаг 4. Модуль синуса равен единице только в точках $\dfrac{\pi}{2} + \pi k$. Значит:

$$\frac{\pi}{2} + T = \frac{\pi}{2} + \pi k \quad \Longrightarrow \quad T = \pi k$$

Шаг 5. При $T > 0$ получаем $T \geq \pi$ — противоречие с предположением $T < \pi$.

Ответ: основной период $y = |\sin x|$ равен $\pi$.

Проверим наш ответ на графике мысленно: взятие модуля отражает отрицательные «горбы» синуса вверх, и они становятся неотличимы от положительных. Волн стало вдвое больше на том же отрезке — период сократился вдвое ✅


Пример 3 (сложный): существует ли основной период у функции $f(x) = 7$?

Решение:

Шаг 1. Проверим, периодична ли она вообще. Возьмём любое $T \neq 0$:

$$f(x + T) = 7 = f(x)$$

Равенство выполнено. Область определения — вся прямая. Значит, каждое ненулевое число является периодом константы.

Шаг 2. Теперь ищем наименьший положительный период. Множество положительных периодов — это весь интервал $(0; +\infty)$.

Шаг 3. Предположим, что нашёлся наименьший положительный период $T_0 > 0$. Но тогда рассмотрим число $\dfrac{T_0}{2}$: оно положительно, оно тоже период (ведь период любое число), и оно строго меньше $T_0$. Противоречие с минимальностью.

Ответ: константа периодична (любое $T \neq 0$ — период), но основного периода у неё нет.

Вывод: «периодична» и «имеет основной период» — разные утверждения. Это не софистика: та же функция Дирихле — стандартный контрпример в анализе, а константа регулярно всплывает как вырожденный случай при разборе сумм периодических функций (в задании 24 ниже увидим, как выражение вида $\sin^4 x + \cos^4 x$ едва не схлопывается в константу).

Почему это важно

Основной период — это то, что реально измеряют, когда анализируют сигнал или временной ряд. Когда алгоритм ищет сезонность в продажах, он ищет именно наименьший период повторения: сказать «в данных есть годовая сезонность» технически верно и для недельной сезонности (365 кратно... хотя нет, не кратно — и это отдельная головная боль), но полезно только знание базового цикла. В спектральном анализе основной период соответствует основной частоте ($f_0 = 1/T_0$), а все остальные периоды — её гармоникам. Модель, которая ловит только гармонику, но не основную частоту, будет систематически ошибаться в фазе.


Как преобразования графика меняют период

Интуиция

Представь, что периодическая функция — это песня, а ты слушаешь её в плеере. Что произойдёт с длительностью одного куплета, если ты:

  • сделаешь громче (умножишь на $A$)? Ничего, куплет длится столько же
  • поставишь на паузу и начнёшь с середины (сдвинешь на $b$)? Ничего, куплет всё той же длины
  • включишь ускоренное воспроизведение в $k$ раз? Вот тут куплет станет в $k$ раз короче

Ровно то же самое с формулами. Период чувствителен только к тому, что происходит с аргументом внутри, причём только к коэффициенту при $x$. Всё, что делается снаружи (умножение, прибавление константы) и сдвиг внутри — период не трогают.

Давай разберёмся, почему. Пусть у $f$ период $T$. Возьмём $g(x) = f(kx)$, где $k \neq 0$, и найдём её период $T_g$:

$$g(x + T_g) = f\big(k(x + T_g)\big) = f(kx + kT_g)$$

Чтобы это равнялось $f(kx) = g(x)$, нужно, чтобы $kT_g$ был периодом функции $f$. Наименьший подходящий вариант: $|k| \cdot T_g = T$, откуда

$$T_g = \frac{T}{|k|}$$

Модуль здесь нужен потому, что период по определению положителен, а $k$ может быть отрицательным.

Определение (правило пересчёта периода): Если функция $f$ имеет основной период $T$, то функция $y = A \cdot f(kx + b) + c$ при $A \neq 0$, $k \neq 0$ имеет основной период

$$T_{\text{нов}} = \frac{T}{|k|}.$$

Параметры $A$, $b$, $c$ на период не влияют.

Готовые формулы для тригонометрии:

  • $y = A\sin(kx + b) + c$ и $y = A\cos(kx + b) + c$: период $\dfrac{2\pi}{|k|}$
  • $y = A\operatorname{tg}(kx + b) + c$ и $y = A\operatorname{ctg}(kx + b) + c$: период $\dfrac{\pi}{|k|}$

Примеры с разбором

Пример 1 (простой): найди основной период функции $y = \sin 5x$

Решение:

Шаг 1. Базовая функция — синус, её основной период $T = 2\pi$.

Шаг 2. Коэффициент при $x$: $k = 5$.

Шаг 3. По правилу пересчёта:

$$T_{\text{нов}} = \frac{2\pi}{|5|} = \frac{2\pi}{5}$$

Проверим наш ответ: $\sin\left(5\left(x + \frac{2\pi}{5}\right)\right) = \sin(5x + 2\pi) = \sin 5x$ ✅

Ответ: $T = \dfrac{2\pi}{5}$


Пример 2 (средний): найди основной период функции $y = 3\cos\left(\dfrac{x}{4} - \dfrac{\pi}{6}\right) + 2$

Решение:

Шаг 1. Сразу отбросим всё, что не влияет на период: множитель $3$ (растяжение по вертикали), слагаемое $-\frac{\pi}{6}$ внутри (горизонтальный сдвиг) и слагаемое $+2$ снаружи (вертикальный сдвиг). Остаётся только коэффициент при $x$.

Шаг 2. Здесь $k = \dfrac{1}{4}$.

Шаг 3. Считаем:

$$T = \frac{2\pi}{\left|\frac{1}{4}\right|} = 2\pi \cdot 4 = 8\pi$$

Ответ: $T = 8\pi$

📌 Обрати внимание на логику: коэффициент меньше единицы растягивает график по горизонтали, поэтому период вырастает. Легко ошибиться и умножить вместо деления — всегда прикидывай смысл: «сжали в 4 раза» или «растянули в 4 раза».


Пример 3 (сложный): найди основной период функции $y = \sin^2 3x$

Решение:

Здесь коэффициент при $x$ равен 3, но есть ещё квадрат — и он тоже влияет на период. Действовать надо не по внешнему виду, а через тождественное преобразование.

Шаг 1. Применим формулу понижения степени:

$$\sin^2 \alpha = \frac{1 - \cos 2\alpha}{2}$$

Шаг 2. Подставим $\alpha = 3x$:

$$y = \sin^2 3x = \frac{1 - \cos 6x}{2} = \frac{1}{2} - \frac{1}{2}\cos 6x$$

Шаг 3. Теперь функция записана в стандартном виде $A\cos(kx) + c$ с $k = 6$. Считаем период:

$$T = \frac{2\pi}{6} = \frac{\pi}{3}$$

Проверим наш ответ: $\sin^2\left(3\left(x + \frac{\pi}{3}\right)\right) = \sin^2(3x + \pi) = \left(-\sin 3x\right)^2 = \sin^2 3x$ ✅

Ответ: $T = \dfrac{\pi}{3}$

Вывод: возведение в чётную степень «стирает» знак, а значит склеивает половинки волны — период сокращается вдвое по сравнению с $\sin 3x$ (у которого он был $\frac{2\pi}{3}$). Универсальный рецепт: сначала преобразуй выражение к сумме простых гармоник, потом считай период.

Почему это важно

Формула $T = \frac{2\pi}{|k|}$ — это буквально мост между «математической» и «инженерной» записью колебания. В обработке сигналов пишут $x(t) = A\sin(2\pi f t + \varphi)$, где $f$ — частота в герцах. Сопоставь: $k = 2\pi f$, значит $T = \frac{2\pi}{2\pi f} = \frac{1}{f}$ — период равен обратной частоте, ровно как в физике. Когда ты в коде пишешь np.sin(2*np.pi*freq*t), ты используешь именно это правило пересчёта. И то же самое в позиционном кодировании трансформера: там частоты подобраны как $\frac{1}{10000^{2i/d}}$ — то есть каждое следующее измерение эмбеддинга имеет всё больший период, и модель получает «линейку» с делениями разного масштаба.


Сумма и композиция: когда периодичность выживает, а когда ломается

Интуиция

Представь двух барабанщиков. Первый бьёт каждые 4 секунды, второй — каждые 6. Когда рисунок целиком повторится? Через 12 секунд: за это время первый успеет ударить 3 раза, второй — 2 раза, и оба вернутся в исходную фазу одновременно. Число 12 — наименьшее общее кратное чисел 4 и 6. Именно так и работает период суммы.

А теперь злая версия: первый барабанщик бьёт каждую секунду, второй — каждые $\sqrt{2} \approx 1{,}41421\dots$ секунды. Когда рисунок повторится целиком? Никогда. Чтобы оба одновременно вернулись в начало, нужно, чтобы нашлись целые $m$ и $n$ с $m \cdot 1 = n \cdot \sqrt{2}$, то есть $\sqrt{2} = \frac{m}{n}$ — а иррациональность $\sqrt{2}$ означает, что таких чисел нет. Сумма будет вечно почти повторяться, но никогда точно. Такие функции называют квазипериодическими, и это не экзотика: почти вся небесная механика и теория хаоса живёт в этом режиме.

Определение (период суммы): Пусть $f$ имеет период $T_1 > 0$, а $g$ — период $T_2 > 0$. Если отношение $\dfrac{T_1}{T_2}$ рационально, то функция $f + g$ периодична, и её период — наименьшее общее кратное $T_1$ и $T_2$: наименьшее $T > 0$, для которого $T = m T_1 = n T_2$ при некоторых натуральных $m, n$.

⚠️ Важная оговорка: НОК даёт период суммы, но не всегда основной период. Классический пример — $f(x) = \sin x$ и $g(x) = -\sin x$: у обеих период $2\pi$, а сумма тождественно равна нулю, у которой основного периода вообще нет. Поэтому после вычисления НОК минимальность стоит проверять отдельно, если задача этого требует.

Примеры с разбором

Пример 1 (простой): найди период функции $y = \sin x + \cos x$

Решение:

Шаг 1. Период первого слагаемого: $T_1 = 2\pi$. Период второго: $T_2 = 2\pi$.

Шаг 2. Отношение $\frac{T_1}{T_2} = 1$ — рационально, сумма периодична. НОК двух одинаковых чисел равен им самим: $T = 2\pi$.

Шаг 3. Проверим минимальность через свёртку. Применим формулу вспомогательного аргумента:

$$\sin x + \cos x = \sqrt{2}\sin\left(x + \frac{\pi}{4}\right)$$

Это синус со сдвигом и растяжением по вертикали — а они, как мы выяснили, период не меняют.

Ответ: основной период $T = 2\pi$.


Пример 2 (средний): найди основной период функции $y = \sin\dfrac{x}{2} + \cos\dfrac{x}{3}$

Решение:

Шаг 1. Период первого слагаемого: $T_1 = \dfrac{2\pi}{1/2} = 4\pi$.

Шаг 2. Период второго слагаемого: $T_2 = \dfrac{2\pi}{1/3} = 6\pi$.

Шаг 3. Проверим отношение: $\dfrac{T_1}{T_2} = \dfrac{4\pi}{6\pi} = \dfrac{2}{3}$ — рационально, значит сумма периодична.

Шаг 4. Ищем НОК. Нужно наименьшее $T > 0$ вида $T = 4\pi m = 6\pi n$ при натуральных $m, n$. Сократим на $2\pi$:

$$2m = 3n$$

Наименьшее решение в натуральных числах: $m = 3$, $n = 2$.

Шаг 5. Подставим: $T = 4\pi \cdot 3 = 12\pi$. Проверка вторым способом: $6\pi \cdot 2 = 12\pi$ ✅

Проверим наш ответ прямой подстановкой:

$$\sin\frac{x + 12\pi}{2} = \sin\left(\frac{x}{2} + 6\pi\right) = \sin\frac{x}{2} \ ✅$$

$$\cos\frac{x + 12\pi}{3} = \cos\left(\frac{x}{3} + 4\pi\right) = \cos\frac{x}{3} \ ✅$$

Ответ: $T = 12\pi$


Пример 3 (сложный): докажи, что функция $y = \sin x + \sin\left(\sqrt{2}\,x\right)$ не является периодической

Решение:

Здесь пригодится приём, который стоит запомнить отдельно — назовём его «полусумма соседей». Если $T$ — период функции $f$, то вместе с $T$ периодом является и $-T$, а значит значение в точке $x$ совпадает со значениями сразу с двух сторон:

$$f(x - T) = f(x) \quad \text{и} \quad f(x + T) = f(x) \quad \Longrightarrow \quad f(x - T) + f(x + T) = 2f(x)$$

Смысл приёма в том, что левая часть сворачивается обычной школьной формулой суммы синусов — и слагаемые с разными частотами разделяются сами собой, без всякой тяжёлой техники.

Шаг 1. Предположим противное: существует период $T > 0$, то есть $f(x + T) = f(x)$ при всех $x$. Тогда, как мы только что обсудили, верно и $f(x - T) = f(x)$.

Шаг 2. Свернём каждую пару слагаемых формулой $\sin\alpha + \sin\beta = 2\sin\dfrac{\alpha+\beta}{2}\cos\dfrac{\alpha-\beta}{2}$.

Для первого слагаемого берём $\alpha = x + T$ и $\beta = x - T$, тогда полусумма равна $x$, а полуразность равна $T$:

$$\sin(x - T) + \sin(x + T) = 2\sin x\cos T$$

Для второго слагаемого аргументы равны $\sqrt2(x \pm T)$, полусумма $\sqrt2 x$, полуразность $\sqrt2 T$:

$$\sin\big(\sqrt2(x - T)\big) + \sin\big(\sqrt2(x + T)\big) = 2\sin(\sqrt2 x)\cos(\sqrt2 T)$$

Шаг 3. Сложим обе строки — слева получится ровно $f(x-T) + f(x+T)$, что равно $2f(x)$:

$$2\sin x\cos T + 2\sin(\sqrt2 x)\cos(\sqrt2 T) = 2\sin x + 2\sin(\sqrt2 x)$$

Разделим на $2$ и перенесём всё влево:

$$(\cos T - 1)\sin x + \big(\cos(\sqrt2 T) - 1\big)\sin(\sqrt2 x) = 0 \qquad \text{при всех } x$$

Шаг 4. Обозначим $a = \cos T - 1$ и $b = \cos(\sqrt2 T) - 1$. Косинус никогда не превышает единицы, поэтому

$$a \leq 0 \qquad \text{и} \qquad b \leq 0$$

Шаг 5. Подставим удобную точку $x = \dfrac{\pi}{2}$. Первый синус тогда равен $\sin\dfrac{\pi}{2} = 1$. Второй равен

$$\sin\frac{\sqrt2\,\pi}{2} = \sin\frac{\pi}{\sqrt2}$$

Так как $1 < \sqrt2$, число $\dfrac{\pi}{\sqrt2}$ лежит строго между $0$ и $\pi$ — а на этом промежутке синус положителен. Обозначим его значение $s > 0$. Равенство из шага 3 превращается в

$$a \cdot 1 + b \cdot s = 0$$

Шаг 6. Слева стоит сумма двух неположительных чисел: $a \leq 0$, и $bs \leq 0$ (ведь $b \leq 0$, а $s > 0$). Сумма неположительных чисел равна нулю только тогда, когда каждое из них — ноль:

$$a = 0 \quad \Longrightarrow \quad \cos T = 1 \quad \Longrightarrow \quad T = 2\pi k$$$$b = 0 \quad \Longrightarrow \quad \cos(\sqrt2\, T) = 1 \quad \Longrightarrow \quad \sqrt2\, T = 2\pi m$$

Здесь $k$ и $m$ — натуральные числа, поскольку обе величины $T$ и $\sqrt2 T$ положительны.

Шаг 7. Разделим второе равенство на первое:

$$\sqrt2 = \frac{2\pi m}{2\pi k} = \frac{m}{k}$$

Слева иррациональное число, справа — обыкновенная дробь. Противоречие.

Ответ: функция $y = \sin x + \sin(\sqrt{2}x)$ не периодична.

Вывод: периодичность суммы — это вопрос соизмеримости периодов, а не их величины. Два цикла длиной 3 года и 5 лет дают общий цикл в 15 лет, а циклы длиной 1 и $\sqrt{2}$ не совпадут никогда. В анализе временных рядов это означает: если в данных сидят две несоизмеримые сезонности, ряд принципиально не будет точно повторяться, и модели придётся моделировать компоненты по отдельности, а не искать один «главный цикл».

Почему это важно

Соизмеримость периодов — это то, что определяет, поймает ли твоя модель структуру. Классический пример из ретейла: суточный цикл (24 часа) и недельный цикл (168 часов) соизмеримы — $168 = 7 \cdot 24$, и общий период равен 168 часам. Поэтому одна модель с недельным окном ловит обе сезонности сразу. А вот недельный цикл (7 дней) и годовой (365,25 дня) практически несоизмеримы: $365{,}25 / 7 \approx 52{,}18$ — не целое, и «то же самое число прошлого года» приходится на другой день недели. Поэтому в проде почти никогда не пишут один сезонный лаг, а раскладывают ряд на компоненты — недельную, годовую, праздничную — и суммируют. Пакеты вроде Prophet устроены ровно так: каждая сезонность моделируется своим набором синусов и косинусов (усечённым рядом Фурье), а потом всё складывается.


Периодичность в машинном обучении: три главных применения

Интуиция

Периодичность попадает в ML тремя разными дорогами, и их полезно различать.

Первая — циклические признаки. Час суток, день недели, месяц, угол, направление ветра, фаза цикла. Всё это числа, у которых «конец» примыкает к «началу». Наивная числовая кодировка врёт про расстояния, one-hot теряет порядок и близость, а пара $(\sin, \cos)$ решает обе проблемы разом.

Вторая — позиционное кодирование. Трансформеру нужно как-то сообщить, где стоит токен. Просто число pos не годится: значения не ограничены, для длинных текстов вылезают за диапазон, на котором модель обучалась. Решение из «Attention Is All You Need» — набор синусов с разными периодами: короткопериодические измерения различают соседние позиции, длиннопериодические — задают крупный масштаб. Как показания часов: секундная стрелка, минутная, часовая.

Третья — спектральный анализ. Разложить сигнал или ряд на периодические компоненты, посмотреть, какие частоты присутствуют, и работать уже с ними. Отсюда мел-спектрограммы в распознавании речи, Фурье-фичи в моделях временных рядов, фильтрация шума.

Определение (циклическое кодирование): Категориальный признак $v$, принимающий значения $0, 1, \dots, n-1$ и циклический по своей природе (период $n$), кодируется парой признаков

$$x_{\sin} = \sin\frac{2\pi v}{n}, \qquad x_{\cos} = \cos\frac{2\pi v}{n}.$$

Точка $(x_{\sin}, x_{\cos})$ лежит на единичной окружности, и евклидово расстояние между значениями $v_1$ и $v_2$ равно $2\left|\sin\dfrac{\pi(v_1 - v_2)}{n}\right|$.

Почему обязательно пара, а не один синус? Потому что синус на периоде не инъективен — одно и то же значение он принимает дважды. Для месяцев ($n = 12$): $\sin\frac{2\pi \cdot 2}{12} = \sin 60° \approx 0{,}866$ и $\sin\frac{2\pi \cdot 4}{12} = \sin 120° \approx 0{,}866$ — февраль и апрель получили бы одинаковый признак. Косинус разводит их: $\cos 60° = 0{,}5$, а $\cos 120° = -0{,}5$. Вместе пара задаёт точку на окружности однозначно.

Примеры с разбором

Пример 1 (простой): закодируй месяцы 12 (декабрь), 1 (январь) и 6 (июнь) и сравни расстояния

Решение:

Шаг 1. Формула: $\theta = \dfrac{2\pi m}{12} = \dfrac{\pi m}{6}$.

Шаг 2. Декабрь, $m = 12$: $\theta = 2\pi$, значит $(\sin 2\pi;\ \cos 2\pi) = (0;\ 1)$.

Шаг 3. Январь, $m = 1$: $\theta = \dfrac{\pi}{6} = 30°$, значит $\left(\sin 30°;\ \cos 30°\right) = (0{,}5;\ 0{,}866)$.

Шаг 4. Июнь, $m = 6$: $\theta = \pi$, значит $(\sin \pi;\ \cos \pi) = (0;\ -1)$.

Шаг 5. Расстояние декабрь–январь:

$$d = \sqrt{(0 - 0{,}5)^2 + (1 - 0{,}866)^2} = \sqrt{0{,}25 + 0{,}0180} = \sqrt{0{,}268} \approx 0{,}518$$

Шаг 6. Расстояние декабрь–июнь:

$$d = \sqrt{(0-0)^2 + (1 - (-1))^2} = \sqrt{4} = 2$$

Ответ: декабрь и январь оказались близки ($\approx 0{,}52$), декабрь и июнь — максимально далеки ($2$, диаметр окружности). Наивная кодировка дала бы наоборот: $|12 - 1| = 11$ против $|12 - 6| = 6$.

📌 Формула для быстрой проверки: $d = 2\left|\sin\frac{\pi \Delta m}{n}\right|$. Здесь $2\left|\sin\frac{\pi \cdot 1}{12}\right| = 2\sin 15° = 2 \cdot 0{,}2588 = 0{,}518$ ✅


Пример 2 (средний): позиционное кодирование трансформера строится из компонент вида $\sin\left(\dfrac{pos}{\lambda}\right)$. Найди период по позиции для компоненты с $\lambda = 10$

Решение:

Шаг 1. Перепишем аргумент в стандартном виде: $\sin\left(\dfrac{pos}{10}\right) = \sin\left(0{,}1 \cdot pos\right)$, то есть $k = 0{,}1$.

Шаг 2. По правилу пересчёта периода:

$$T = \frac{2\pi}{|0{,}1|} = 20\pi \approx 62{,}8$$

Шаг 3. Интерпретация: эта компонента эмбеддинга возвращается к тому же значению примерно каждые 63 токена.

Ответ: $T = 20\pi \approx 62{,}8$ позиции.

Контекст: в оригинальной архитектуре знаменатель равен $10000^{2i/d}$, где $i$ — номер пары измерений, $d$ — размерность модели. При $i = 0$ знаменатель равен $1$, и период $2\pi \approx 6{,}3$ — эта компонента различает соседние токены. При $2i/d = 1$ знаменатель $10000$, период $20000\pi \approx 62\,832$ — эта компонента почти не меняется на всей длине контекста и задаёт «грубую» координату. Между ними — геометрическая прогрессия периодов, то есть линейка с делениями всех масштабов сразу.


Пример 3 (сложный): почасовые продажи описываются моделью $S(t) = 500 + 120\sin\dfrac{2\pi t}{24} + 80\cos\dfrac{2\pi t}{168}$, где $t$ — часы. Найди период всего ряда и вычисли $S(0)$ и $S(168)$

Решение:

Шаг 1. Период первого периодического слагаемого: $k_1 = \dfrac{2\pi}{24}$, значит

$$T_1 = \frac{2\pi}{2\pi/24} = 24 \text{ часа (суточный цикл)}$$

Шаг 2. Период второго: $k_2 = \dfrac{2\pi}{168}$, значит

$$T_2 = 168 \text{ часов (недельный цикл)}$$

Шаг 3. Проверим соизмеримость: $\dfrac{T_2}{T_1} = \dfrac{168}{24} = 7$ — целое число, отношение рационально. Значит, сумма периодична.

Шаг 4. НОК: раз 168 само делится на 24 нацело, наименьшее общее кратное — это и есть 168.

$$T = 168 \text{ часов} = 7 \text{ суток}$$

Шаг 5. Вычислим $S(0) = 500 + 120\sin 0 + 80\cos 0 = 500 + 0 + 80 = 580$.

Шаг 6. Вычислим $S(168) = 500 + 120\sin\dfrac{2\pi \cdot 168}{24} + 80\cos\dfrac{2\pi \cdot 168}{168}$.

Разберём аргументы: $\dfrac{2\pi \cdot 168}{24} = 2\pi \cdot 7 = 14\pi$, а $\sin 14\pi = 0$. И $\dfrac{2\pi \cdot 168}{168} = 2\pi$, а $\cos 2\pi = 1$.

$$S(168) = 500 + 0 + 80 = 580$$

Ответ: период ряда $T = 168$ часов; $S(0) = S(168) = 580$ ✅ — совпадение подтверждает найденный период.

Вывод: когда суточный и недельный циклы соизмеримы (а они всегда соизмеримы, ведь в неделе ровно 7 суток), достаточно одного признака «час недели» со значениями 0–167, чтобы захватить обе сезонности. Это популярный приём: вместо двух пар циклических признаков часто кодируют один составной признак $t \bmod 168$.

Почему это важно

Все три дороги ведут к одному: периодичность — это способ дать модели правильную геометрию признакового пространства. Модель не понимает, что «полночь рядом с 23:00» — она понимает только числа и расстояния между ними. Циклическое кодирование буквально навязывает ей верную топологию (окружность вместо отрезка). Позиционное кодирование даёт трансформеру ощущение расстояния между токенами, которое обобщается на длины, не встречавшиеся при обучении. Спектральное разложение позволяет отделить сигнал от шума и сжать ряд до нескольких значимых частот. Во всех трёх случаях выигрыш появляется не из-за хитрости алгоритма, а из-за того, что математическая структура данных наконец совпала с математической структурой признаков.


Практика: 30 заданий

Базовые (задания 1-10)

Задание 1: Найди основной период функции $y = \sin 4x$.


Задание 2: Найди основной период функции $y = \cos\dfrac{x}{3}$.


Задание 3: Найди основной период функции $y = \operatorname{tg} 2x$.


Задание 4: Найди основной период функции $y = 3\sin x - 7$.


Задание 5: Найди основной период функции $y = \sin\left(x - \dfrac{\pi}{4}\right)$.


Задание 6: Найди основной период функции $y = \sin(\pi x)$.


Задание 7: Для функции «дробная часть» $f(x) = \{x\}$ вычисли $f(2{,}3)$, $f(7{,}3)$ и $f(-1{,}7)$. Назови период.


Задание 8: Сегодня среда. Какой день недели будет через 100 дней?


Задание 9: Датчик выдаёт температуру по модели $\text{temp}(t) = 20 + 5\sin\dfrac{2\pi t}{24}$, где $t$ — время в часах. Найди период модели и вычисли температуру при $t = 6$.


Задание 10: Найди основной период и множество значений функции $y = 2\cos 3x - 1$.


Средние (задания 11-20)

Задание 11: Найди основной период функции $y = \sin 2x \cdot \cos 2x$.


Задание 12: Найди основной период функции $y = \sin^2 x$.


Задание 13: Докажи, что основной период функции $y = |\cos x|$ равен $\pi$.


Задание 14: Найди основной период функции $y = \sin\dfrac{x}{3} + \cos\dfrac{x}{4}$.


Задание 15: Найди основной период функции $y = \operatorname{tg}\dfrac{x}{3}$.


Задание 16: Является ли периодической функция $y = \sin x + \sin(\pi x)$?


Задание 17: В датасете есть признак «час суток» со значениями $0..23$. Закодируй час $h = 15$ циклически парой $(\sin, \cos)$ и проверь результат.


Задание 18: Для того же кодирования часа ($n = 24$) вычисли евклидово расстояние между представлениями часов $h_1 = 23$ и $h_2 = 0$. Сравни с «наивной» кодировкой числом.


Задание 19: Докажи, что функция $y = x\sin x$ не является периодической.


Задание 20: Дневные продажи моделируют как $S(t) = 100 + 20\sin\dfrac{2\pi t}{7} + 10\sin\dfrac{2\pi t}{365}$, где $t$ — номер дня. Найди период модели.


Продвинутые (задания 21-30)

Задание 21: Найди основной период функции $y = \sin 2x + \cos 3x$.


Задание 22: Докажи, что функция $y = x + \sin x$ не является периодической.


Задание 23: Функция Дирихле задана так: $D(x) = 1$, если $x$ рационально, и $D(x) = 0$, если $x$ иррационально. Докажи, что она периодична, но основного периода не имеет.


Задание 24: Найди основной период функции $y = \sin^4 x + \cos^4 x$.


Задание 25: В позиционном кодировании трансформера компонента имеет вид $PE(pos) = \sin\dfrac{pos}{10000^{2i/d}}$. При $d = 512$ и $i = 128$ найди период этой компоненты по позиции.


Задание 26: Аудиосигнал — сумма двух чистых тонов: $50$ Гц и $75$ Гц. Найди основной период суммарного сигнала и соответствующую ему основную частоту.


Задание 27: Сигнал частотой $30$ Гц дискретизируют с частотой $50$ Гц (50 отсчётов в секунду). Какую частоту «увидит» модель в данных?


Задание 28: Функция $f$ периодична с периодом $T = 4$, и на промежутке $[0;\ 4)$ задана формулой $f(x) = x^2$. Вычисли $f(2026{,}5)$ и $f(-1{,}5)$.


Задание 29: Найди основной период функции $y = \cos^4 x - \sin^4 x$.


Задание 30: Отладка кода. Найди ошибку в циклическом кодировании часа и исправь её.

import numpy as np
import pandas as pd

df = pd.DataFrame({'hour': [0, 1, 22, 23]})

df['hour_sin'] = np.sin(2 * np.pi * df['hour'] / 23)
df['hour_cos'] = np.cos(2 * np.pi * df['hour'] / 23)

print(df)
# hour=0  -> sin= 0.000, cos= 1.000
# hour=23 -> sin=-0.000, cos= 1.000   <-- ровно та же точка, что и hour=0!

Частые ошибки

Ошибка 1: считают периодом расстояние между соседними нулями или между соседними пиками разного знака

Неправильно: «У синуса нули идут через $\pi$, значит период равен $\pi$».

Правильно: период — это сдвиг, после которого функция совпадает сама с собой целиком, со всеми знаками и всей формой. Нули у $\sin x$ действительно через $\pi$, но $\sin(x + \pi) = -\sin x$ — это не та же функция, а перевёрнутая. Полное совпадение наступает только через $2\pi$.

💡 Почему важно: ошибка вдвое в периоде — это ошибка вдвое в частоте. В спектральном анализе это означает, что ты ищешь гармонику вместо основной частоты, а в моделировании сезонности — что ты ставишь лаг 12 часов вместо 24 и получаешь модель, которая путает утро с вечером.


Ошибка 2: умножают на $k$ вместо деления

Неправильно: для $y = \sin 3x$ писать $T = 2\pi \cdot 3 = 6\pi$.

Правильно: $T = \dfrac{2\pi}{|k|} = \dfrac{2\pi}{3}$. Коэффициент $k > 1$ сжимает график по горизонтали, а сжатие означает более короткий период, а не более длинный.

💡 Почему важно: проверка занимает пять секунд — подставь ответ обратно. Если $T = \frac{2\pi}{3}$, то $\sin\left(3\left(x + \frac{2\pi}{3}\right)\right) = \sin(3x + 2\pi) = \sin 3x$ ✅ Если бы период был $6\pi$, внутри получилось бы $\sin(3x + 18\pi)$ — тоже верно, но это уже далеко не наименьший период.


Ошибка 3: считают, что сумма периодических функций всегда периодична

Неправильно: «$\sin x$ периодична, $\sin(\sqrt{2}x)$ периодична, значит их сумма периодична — надо только найти период».

Правильно: сумма периодична только если отношение периодов рационально. При иррациональном отношении сумма не имеет ни одного периода вообще (задания 16 и пример 3 в соответствующем разделе). Такие функции называют квазипериодическими: они бесконечно близко подходят к повторению, но никогда не повторяются точно.

💡 Почему важно: в анализе временных рядов это отличает случай, когда данные реально циклические, от случая, когда в них наложились несоизмеримые циклы. Во втором случае поиск «одного главного периода» обречён, и ряд надо раскладывать на компоненты.


Ошибка 4: думают, что амплитуда и вертикальный сдвиг меняют период

Неправильно: считать, что у $y = 100\sin x + 50$ период какой-то другой, «растянутый».

Правильно: период зависит только от коэффициента при $x$ внутри функции. Множитель снаружи растягивает график по вертикали, прибавление константы двигает его вверх-вниз — горизонтальная «длина волны» при этом не меняется ни на йоту. Период остаётся $2\pi$.

💡 Почему важно: в задачах на моделирование (температура, продажи, сигнал) амплитуда и уровень — это отдельные параметры, которые подбирают независимо от периода. Смешивать их — верный способ получить модель, где подкрутка одного параметра ломает другой.


Ошибка 5: находят период, но забывают проверить минимальность

Неправильно: «$|\sin x|$ — это модуль синуса, у синуса период $2\pi$, значит и здесь $2\pi$».

Правильно: $2\pi$ действительно период, но не основной. Модуль отражает нижние полуволны вверх, и функция начинает повторяться уже через $\pi$. То же самое с $\sin^2 x$ (период $\pi$), с $\sin^4 x + \cos^4 x$ (период $\frac{\pi}{2}$) и вообще со всеми выражениями, где есть чётные степени или модуль.

💡 Почему важно: для чётных степеней и модулей всегда сначала своди выражение к сумме простых гармоник (формулы понижения степени, двойного угла), а потом уже считай период. И проверяй минимальность подстановкой точки экстремума.


Ошибка 6 (ML): делят на максимальное значение вместо длины цикла

Неправильно: np.sin(2 * np.pi * df['hour'] / df['hour'].max()) — то есть деление на 23.

Правильно: делить надо на количество различных значений: часы — на 24, дни недели — на 7, месяцы — на 12, градусы — на 360. Иначе последнее значение сядет ровно на первое, и две разные категории станут неразличимы (подробный разбор — в задании 30).

💡 Почему важно: ошибка тихая. Кода не падает, признаки выглядят правдоподобно, единичная окружность даже сходится. Ловится только явной проверкой: число уникальных пар $(\sin, \cos)$ должно совпадать с числом уникальных значений исходного признака.


Ошибка 7 (ML): кодируют циклический признак одним синусом

Неправильно: добавить в датасет только hour_sin, решив, что косинус избыточен.

Правильно: синус на периоде принимает каждое значение дважды. Например, для месяцев $\sin\frac{2\pi \cdot 2}{12} = \sin\frac{2\pi\cdot 4}{12} \approx 0{,}866$ — февраль и апрель получат одинаковый признак. Нужна именно пара $(\sin, \cos)$: вместе они задают точку на окружности однозначно.

💡 Почему важно: одиночный синус склеивает пары значений, симметричные относительно пика цикла. Модель начнёт систематически путать «до полудня» и «после полудня» — и такую ошибку почти невозможно отследить по метрике, она просто держит качество ниже потолка.


Главное запомнить

✅ Функция $f$ периодична с периодом $T \neq 0$, если для любого $x \in D(f)$ точки $x \pm T$ тоже лежат в $D(f)$ и выполняется $f(x + T) = f(x)$. Условие про область определения — обязательная часть определения, а не формальность.

✅ Периодов всегда бесконечно много: если $T$ — период, то $-T$, $2T$, $3T$ и вообще $nT$ ($n$ целое, $n \neq 0$) — тоже периоды. Поэтому содержательный вопрос — про основной (наименьший положительный) период.

Основного периода может не быть. Классические примеры: константа (любое $T \neq 0$ — период) и функция Дирихле (любое ненулевое рациональное — период).

✅ Наизусть: $\sin x$ и $\cos x$ — период $2\pi$; $\operatorname{tg} x$ и $\operatorname{ctg} x$ — период $\pi$; $|\sin x|$, $|\cos x|$, $\sin^2 x$, $\cos^2 x$ — период $\pi$; дробная часть $\{x\}$ — период $1$.

Главная рабочая формула: у $y = A f(kx + b) + c$ период равен $\dfrac{T_f}{|k|}$. Амплитуда $A$, сдвиг $b$ и уровень $c$ на период не влияют.

✅ Прежде чем считать период выражения с произведениями, степенями и модулями — сверни его формулами понижения степени и двойного угла. Период читается только со стандартного вида $A\sin(kx+b)+c$.

✅ Период суммы равен НОК периодов слагаемых — но только если их отношение рационально. При иррациональном отношении сумма непериодична (квазипериодична).

✅ Найдя период, проверь минимальность: подставь в равенство $f(x+T)=f(x)$ точку экстремума — там значение достигается редко, и это резко ограничивает допустимые $T$.

✅ Периодичность превращает большие аргументы в маленькие: $f(x) = f(x \bmod T)$. Это тот же приём, что «через 100 дней» $\to$ 100 % 7.

✅ В ML периодичность работает тремя путями: циклические признаки $(\sin, \cos)$ с делением на длину цикла, позиционное кодирование из гармоник с геометрически растущими периодами, и спектральное разложение ряда на частоты.


Связь с другими темами курса

Что было раньше: прошлый урок про чётность и нечётность функций (урок 85) — это тоже разговор о симметрии, только другой: там симметрия была «зеркальной» (относительно оси или начала координат), здесь — «трансляционной» (сдвиг вдоль оси $Ox$). Обе симметрии проверяются одинаково: подставляем преобразованный аргумент и смотрим, что вышло. И обе позволяют изучать функцию на куске вместо всей прямой: чётность даёт полуось, периодичность — один период. Знание формул приведения и основного тригонометрического тождества здесь было рабочим инструментом на каждом шаге.

Что дальше: следующий урок — монотонность функций. Связь прямая и полезная: периодическая непостоянная функция никогда не монотонна на всей области определения (она обязана возвращаться к прежним значениям), но на промежутках внутри одного периода монотонность есть, и именно эти промежутки описывают в свойствах $\sin$ и $\cos$. Дальше по курсу периодичность встретится в решении тригонометрических уравнений — там ответ всегда записывают серией $x = x_0 + Tn$, и это буквально прямое следствие определения периода. А когда курс дойдёт до производной (урок 133), всплывёт приятный бонус: производная периодической функции периодична с тем же периодом — это даст ещё один, более короткий способ разделять гармоники в тех самых задачах, которые здесь мы решали формулами суммы синусов.

Где это применяется в жизни и в ML/данных:

📊 В машинном обучении: циклическое кодирование признаков времени и углов, позиционное кодирование в трансформерах (гармоники с периодами от $2\pi$ до $\approx 10000\cdot 2\pi$), Fourier features в моделях временных рядов (Prophet, NeuralProphet), периодические ядра в гауссовских процессах.

📈 В data science: декомпозиция ряда на тренд, сезонность и остаток; автокорреляционная функция для поиска периода; периодограмма и тест Фишера на скрытую периодичность; выравнивание календарных эффектов.

🔊 В обработке сигналов и звука: преобразование Фурье и FFT, мел-спектрограммы для распознавания речи, теорема Найквиста-Котельникова и борьба с алиасингом, фильтрация шума в частотной области.

🔬 В физике и технике: переменный ток (50 Гц в розетке), маятники и пружины, орбиты спутников GPS, кристаллические решётки (пространственная периодичность), электрокардиограмма.


Интересные факты

💡 Фурье не приняли с первого раза. Когда в 1807 году Жозеф Фурье представил Парижской академии работу о разложении функций в тригонометрические ряды, комиссия из Лагранжа, Лапласа и Лежандра её завернула. Лагранж утверждал, что сумма гладких синусов не может дать функцию с разрывом или изломом — это казалось абсурдом. Фурье оказался прав по сути, но строгую теорию сходимости построил лишь Дирихле в 1829 году. Сегодня же «разложить на частоты» — рутинная операция, которую твой телефон выполняет тысячи раз в секунду, декодируя звук.

💡 FFT изобрели дважды, с разницей в 160 лет. Алгоритм быстрого преобразования Фурье приписывают Кули и Тьюки (1965), и именно их публикация сделала спектральный анализ массовым. Но в 1977 году историки обнаружили, что по сути тот же алгоритм Карл Фридрих Гаусс записал в неопубликованной работе около 1805 года — раньше, чем Фурье опубликовал сами ряды. Гаусс писал на латыни и в стол, и открытие пролежало без дела полтора столетия.

💡 У периодической функции может не быть графика в привычном смысле. Функция Дирихле периодична с любым рациональным периодом, но не имеет ни одной точки непрерывности: в любой сколь угодно маленькой окрестности любой точки есть и рациональные, и иррациональные числа, а значит и значения 1, и значения 0. Нарисовать её невозможно — а математически она полностью корректна и служит стандартным контрпримером во всём анализе.

💡 Сумма периодических может «почти повторяться» вечно. Функция $\sin x + \sin(\sqrt{2}x)$ не имеет ни одного периода, но подходит к своему начальному состоянию сколь угодно близко бесконечно много раз. Такое поведение называется квазипериодическим, и оно управляет реальными орбитами планет: солнечная система не повторяет своё состояние точно никогда, что и стало отправной точкой для теории КАМ (Колмогорова-Арнольда-Мозера) и теории динамического хаоса.

💡 Твоё ухо достраивает основную частоту, которой нет. Если проиграть чистые тоны 200, 300 и 400 Гц, человек услышит низкий звук высотой 100 Гц — НОД этих частот, то есть основную частоту суммарного периодического сигнала. Физически колебания 100 Гц в воздухе нет, но период суммы равен $\frac{1}{100}$ секунды, и мозг реагирует именно на период. Этим приёмом («виртуальный бас») пользуются производители маленьких колонок: динамик физически не воспроизводит низкие частоты, но правильно подобранные гармоники создают иллюзию баса.


Лайфхаки и полезные трюки

1. Универсальная формула за пять секунд

Смотри только на коэффициент при $x$ внутри функции. Всё остальное игнорируй.

$$y = \underbrace{A}_{\text{не важно}} \cdot f\big(\underbrace{k}_{\text{ВАЖНО}}\,x + \underbrace{b}_{\text{не важно}}\big) + \underbrace{c}_{\text{не важно}}, \qquad T = \frac{T_f}{|k|}$$

Для синуса и косинуса $T_f = 2\pi$, для тангенса и котангенса $T_f = \pi$. Дальше одно деление.


2. Чётная степень или модуль — период делится пополам

Всё, что «стирает знак» ($|\cdot|$, квадрат, любая чётная степень), склеивает верхнюю и нижнюю полуволны. Быстрая прикидка:

  • $\sin x \to 2\pi$, а $|\sin x|$ и $\sin^2 x \to \pi$
  • $\sin 3x \to \frac{2\pi}{3}$, а $\sin^2 3x \to \frac{\pi}{3}$
  • $\sin^4 x + \cos^4 x \to \frac{\pi}{2}$ (тут делится ещё раз пополам — четвёртая степень)

Но прикидку всегда подтверждай сворачиванием через формулы понижения степени: бывают сюрпризы вроде $\cos^4 x - \sin^4 x = \cos 2x$ с периодом $\pi$, а не $\frac{\pi}{2}$.


3. Для суммы — сначала проверь рациональность отношения, потом считай НОК

Алгоритм на три шага:

  1. Найди $T_1$ и $T_2$ по формуле из лайфхака 1

  2. Раздели одно на другое. Иррационально — сразу пиши «непериодична», считать нечего

  3. Рационально — сократи отношение до несократимой дроби $\frac{p}{q}$, тогда $T = q\,T_1 = p\,T_2$

Пример: $T_1 = 6\pi$, $T_2 = 8\pi$, отношение $\frac{3}{4}$, значит $T = 4 \cdot 6\pi = 24\pi$ ✅


4. Минимальность проверяй подстановкой точки экстремума

Если надо доказать, что найденный $T$ — именно основной период, подставь в равенство $f(x + T) = f(x)$ точку максимума или минимума. В такой точке значение достигается «редко», и уравнение сразу даёт жёсткое ограничение на $T$. Для $|\cos x|$ подстановка $x = 0$ мгновенно даёт $|\cos T| = 1$, откуда $T = \pi k$.


5. Работа с большими аргументами — через остаток

Если известен период $T$ и формула на базовом промежутке, любое значение считается так: $f(x) = f(x \bmod T)$. Прибавляй или вычитай целые периоды, пока не попадёшь в базовый промежуток. Так $f(2026{,}5)$ при $T = 4$ превращается в $f(2{,}5)$ за одно деление с остатком.


6. Приём «полусумма соседей» для разделения гармоник

Когда надо доказать, что найденный $T$ — именно основной период суммы гармоник (или что периода нет вообще), пользуйся тем, что вместе с $T$ периодом является и $-T$. Отсюда сразу:

$$f(x - T) + f(x + T) = 2f(x)$$

Левая часть сворачивается формулами суммы, и каждая гармоника приносит свой множитель-косинус:

$$\sin\big(a(x-T)\big) + \sin\big(a(x+T)\big) = 2\sin(ax)\cos(aT)$$$$\cos\big(a(x-T)\big) + \cos\big(a(x+T)\big) = 2\cos(ax)\cos(aT)$$

После сокращения получается равенство вида $(\cos aT - 1)\cdot(\dots) + (\cos bT - 1)\cdot(\dots) = 0$, причём обе скобки заведомо неположительны. Подставляя одну-две удобные точки, получаешь точные условия $\cos aT = 1$ и $\cos bT = 1$ — а из них уже прямо считываются допустимые $T$. Ничего сложнее формул суммы синусов и косинусов тут не нужно.


7. Чек-лист для циклических признаков в ML

Перед тем как отправить признаки в модель, прогони четыре проверки:

  • делитель равен длине цикла (24, 7, 12, 360), а не максимальному значению
  • признаков два — синус и косинус, а не один
  • $x_{\sin}^2 + x_{\cos}^2 = 1$ для всех строк
  • число уникальных пар $(\sin, \cos)$ равно числу уникальных значений исходного признака

Первые две ловят самые частые ошибки, третья — опечатки в формуле, четвёртая — коллизии категорий.


Периодичность — редкий случай, когда одна короткая формула $f(x + T) = f(x)$ окупается сразу в нескольких мирах. В школьной алгебре она позволяет записать бесконечную серию корней тригонометрического уравнения одной строкой. В физике она описывает вообще всё, что колеблется — от струны до переменного тока. В обработке сигналов на ней стоит преобразование Фурье и весь современный аудио- и видеокодек. А в машинном обучении она превращается в тот самый практический навык, с которого начался урок: не подавать время как голое число, а намотать его на окружность, и модель наконец перестанет считать полночь и одиннадцать вечера разными эпохами.

Дальше в курсе — монотонность: разговор о том, как функция растёт и падает внутри периода. Вместе с периодичностью это даёт полную картину поведения любого колебания: где оно повторяется и что происходит на одном витке. А оттуда уже прямая дорога к производной, которая на языке тех же синусов расскажет, как быстро всё это меняется. Ты только что разобрался с одной из самых прикладных тем всей школьной математики — и в следующий раз, когда встретишь в чужом ноутбуке np.sin(2*np.pi*hour/24), ты будешь точно знать, откуда там взялась двойка, откуда пи и почему знаменатель именно 24. 🔄

Понял тему? Закрепи в боте! 🚀

Попрактикуйся на задачах и получи персональные рекомендации от AI

💪 Начать тренировку
💬 Есть вопрос? Спроси бота!