Всем привет. Сегодня хочу затронуть тему матана, чтобы показать как его можно применять на реальных задачах. Думаю каждый, кто учил матан часто задавался вопросами: «Где это вообще пригодится?», «Зачем это нужно?», «Как это может помочь?» и т. д. Так вот, чтобы эти вопросы отпали раз и навсегда предлагаю свой топ-5 алгоритмов из курса матана с конкретными примерами их применения в работе.
❯ 1. Метод Ньютона (касательных)
Представьте, что вам нужно найти корень уравнения Точный ответ неизвестен, а перебирать числа наугад — слишком медленно. Здесь на помощь приходит метод Ньютона — алгоритм, который используют в машинном обучении, рендеринге 3D-игр и даже при расчёте кредитных ставок.
Суть метода?
Геометрическая аналогия: «Метод Ньютона — как навигатор для слепого: он „ощупывает“ кривую касательной и шаг за шагом двигается к корню».
Формула:

Всё, что нужно — знать функцию и её производную. Алгоритм напоминает градиентный спуск, но работает точнее.
Наглядный пример можно увидеть по ссылке: Пример работы метода Ньютона (касательных)
Пример с кодом:
# Поиск квадратного корня из 2 (≈1.4142)
f = lambda x: x**2 - 2
df = lambda x: 2*x
x = 1.0
for _ in range(5):
x = x - f(x)/df(x)
print(x) # Результат: 1.41421356237
Как можно заметить мы сделали всего 5 итераций — и ошибка меньше 0.00001!
В чём преимущество этого метода?
Перебор требует 1000 шагов, метод Ньютона — 5, отсюда следует экономия вычислительных ресурсов.
В отличие от градиентного спуска, не нужно подбирать learning rate, что делает его более удобным.
Где может пригодиться?
ML: В логистической регрессии метод Ньютона-Рафсона находит оптимальные веса в 3 раза быстрее, чем SGD.
Графика: Используется в Unreal Engine для расчёта столкновений частиц.
Финтех: Банки вычисляют IRR (внутреннюю норму доходности) за миллисекунды.
С какими «подводными камнями» можно столкнуться?
Метод не идеален: если начать с нуля, он сломается (деление на ноль). А для функции может зациклиться. Но эти проблемы решаются выбором „умного“ стартового приближения.
Вывод:
Метод Ньютона — это как швейцарский нож для расчётов: простой, мощный и незаменимый в арсенале разработчика. Попробуйте реализовать его для своей задачи — и убедитесь сами.
❯ 2. Ряды Фурье
Когда вы слушаете музыку в Spotify, делаете МРТ в больнице или загружаете мем в JPEG, в фоне работает математический инструмент, придуманный ещё в 1807 году. Ряды Фурье — это «математический микроскоп», который раскладывает любые сигналы на частоты. Сегодня эта абстракция из курса матана стала основой цифрового мира.
Суть метода:
Главный принцип: Любую периодическую функцию можно представить как сумму простых синусов и косинусов с разными частотами и амплитудами».
Формула:

Представьте, что вы разобрали аккорд на пианино на отдельные ноты — это и есть преобразование Фурье.
Пример с кодом:
# Генерация сигнала = сумма 2-х синусов (частоты 5 Гц и 20 Гц)
import numpy as np
t = np.linspace(0, 1, 1000)
signal = np.sin(2*np.pi*5*t) + 0.5*np.sin(2*np.pi*20*t)
# Визуализация
import matplotlib.pyplot as plt
plt.plot(t, signal)
plt.title("Сигнал = 5 Гц + 20 Гц")
Ряд Фурье „увидит“ обе частоты (5 и 20 Гц) и их амплитуды (1.0 и 0.5)

В чём преимущество?
Ряды Фурье (и их цифровые версии — БПФ/DFT) — это не просто абстрактная математика. Их ключевая сила в том, что они переводят сложные данные в форму, которую легко анализировать, обрабатывать и сжимать.
Универсальность: Можно разложить что угодно: звук, изображение, биение сердца, курс акций.
Пример: Запись голоса → спектр частот → можно удалить шум (например, фоновый гул).-
Эффективное сжатие данных: Отбрасываем «неважное».
Человеческое ухо/глаз не воспринимают все частоты.
MP3: Удаляются звуки за пределами 20 Гц – 20 кГц.
JPEG: Высокие частоты (мелкие детали) сжимаются сильнее.
Результат: Файлы в 10–100 раз меньше без заметной потери качества.
-
Быстрота вычислений (БПФ): O(n log n) вместо O(n²)
Прямое вычисление ряда Фурье для N точек требует ~N² операций.
-
Быстрое преобразование Фурье (FFT) сокращает это до N log N.
Пример:Анализ аудио в реальном времени (например, Shazam).
Мгновенная обработка МРТ-снимков.
Где может пригодиться?
-
Обработка сигналов
Шумоподавление в микрофонах (например, в Zoom).
Работа радаров и МРТ (анализ радиочастотных сигналов).
-
Сжатие данных
JPEG: Дискретное косинусное преобразование (DCT) — «родственник» Фурье.
MP3: Удаление частот, которые не слышит человеческое ухо.
-
Финансы и наука
Предсказание циклов на фондовом рынке (анализ временных рядов).
Расшифровка ДНК (периодические паттерны в геноме).
С какими «подводными камнями» можно столкнуться?
Ряды Фурье работают идеально только для периодических сигналов. Для реальных данных (например, аудиозаписи) используют:
Дискретное преобразование Фурье (DFT) для цифровых сигналов.
Оконные функции (Ханна, Хэмминга), чтобы избежать „утечек“ частот.
Вывод:
Ряды Фурье — это не просто абстракция из учебника. Каждый раз, когда вы отправляете голосовое сообщение или смотрите стрим, они работают на вас. Попробуйте разложить свой сигнал через numpy.fft — и увидите мир частот!
❯ 3. Градиентный спуск
Каждый раз, когда нейросеть распознаёт ваше лицо в телефоне или сервис доставки прокладывает оптимальный маршрут — в фоне работает алгоритм, придуманный ещё в 1847 году. Градиентный спуск — это „компас“, который помогает компьютерам находить лучшие решения в море данных.
Суть метода:
Главный принцип: Представьте, что вы спускаетесь с горы в тумане. Самый быстрый путь вниз — идти в направлении наибольшей крутизны. Градиентный спуск делает то же самое с функцией потерь.
Формула:

Пример с кодом:
# Пример: поиск минимума f(x) = x^2 + 5*sin(x)
def gradient_descent(df, x0, eta=0.1, epochs=100):
x = x0
for _ in range(epochs):
x = x - eta * df(x)
return x
df = lambda x: 2*x + 5*np.cos(x) # Производная
x_min = gradient_descent(df, x0=10)
print(f"Найден минимум: x = {x_min:.3f}")
В чём преимущество метода?
работает с функциями от миллионов переменных (например, в GPT-4).
Вычислительная сложность линейна от числа параметров.
-
Применим почти к любой оптимизационной задаче:
Обучение нейросетей (backpropagation — это градиентный спуск),
Оптимизация бизнес-процессов (минимизация издержек),
Настройка гиперпараметров в науке.
Где применяется?
Машинное обучение: Обучение нейросетей (от линейной регрессии до трансформеров).
Логистика: Оптимизация маршрутов доставки (например, в Amazon).
Финансы: Алгоритмический трейдинг (минимизация риска).
Медицина: Подбор дозировки лекарств (минимизация побочных эффектов).
С какими «подводными камнями» можно столкнуться?
Градиентный спуск — не волшебная таблетка. Вот что может пойти не так:
Слишком большой шаг (η): алгоритм «перепрыгнет» минимум.
Локальные минимумы: остановка в субоптимальной точке.
„Плато“: медленное обучение на пологих участках.
Вывод:
Градиентный спуск — это „кирпичик“ современного ИИ.
❯ 4. Метод наименьших квадратов (МНК)
Когда врач прогнозирует действие лекарства, Netflix советует вам фильм, а биржа пытается угадать курс акций — все они используют метод, придуманный... для расчёта орбит комет. Метод наименьших квадратов (МНК) — это математический „детектор трендов“, который находит закономерности даже в хаотичных данных.
Суть метода:
Главный принцип: Найти линию (или кривую), которая минимизирует сумму квадратов отклонений всех точек данных.
Формула:

Представьте, что вы натягиваете резинку между гвоздиками (точками данных) так, чтобы она была ближе всего ко всем сразу.
Пример с кодом:
# Подгонка прямой к данным (y = ax + b)
import numpy as np
from sklearn.linear_model import LinearRegression
X = np.array([1, 2, 3, 4, 5]).reshape(-1, 1) # Данные
y = np.array([2, 3, 5, 7, 8]) # Цели
model = LinearRegression().fit(X, y) # МНК под капотом!
print(f"Уравнение: y = {model.coef_[0]:.2f}x + {model.intercept_:.2f}")
Вывод: «Уравнение: y = 1.60x + 0.20
В чём преимущество метода?
Даёт точные результаты даже при 20-30% ошибках в данных (например, в экономике).
Решается аналитически — быстрее многих альтернатив.
Коэффициенты a и b имеют понятный смысл (например: «цена растёт на $1.6 за каждый новый признак»)
Где применяется?
Машинное обучение: Линейная регрессия (предсказание цен, спроса).
Геодезия: Калибровка GPS/ГЛОНАСС по контрольным точкам.
Медицина: Анализ «доза-эффект» (подбор безопасной дозы).
Финансы: Прогноз биржевых трендов (скользящие средние).
С какими «подводными камнями» можно столкнуться?
МНК как и все методы не идеален. Вот где он даёт сбой:
Выбросы: Один аномальный пункт может исказить всю модель (решение: использовать М-оценки).
Не линейность: Если данные похожи на синусоиду — нужна полиномиальная регрессия.
Мультиколлинеарность: Когда предикторы коррелируют (например, «вес» и «калорийность»).
Вывод:
МНК — это „швейцарский нож“ аналитика. Отлично может найти закономерности даже в хаотичных данных. Можете убедиться сами на своих данных.
❯ 5. Цепи Маркова
Когда вы читаете предложение, дополненное смартфоном, или получаете персональную рекламу — возможно, в этот момент работает модель, созданная русским математиком ещё в 1906 году. Цепи Маркова — это «машина вероятностных переходов», которая легла в основу PageRank, ChatGPT и даже ИИ для игр. Сегодня эта абстракция из теории вероятностей управляет цифровым миром.
Суть метода:
Главный принцип: Следующее состояние системы зависит только от текущего — никакой памяти о прошлом»(свойство марковости).
Представьте пьяного человека, который шагает в случайном направлении, но его следующий шаг зависит только от того, где он стоит сейчас. Так и работают цепи Маркова.
Пример с кодом (генератор текста):
import random
# Правильная структура цепи Маркова:
# Каждое состояние ведёт к словарю {следующее_состояние: вероятность}
transitions = {
'start': {'I': 0.6, 'You': 0.4},
'I': {'love': 0.7, 'hate': 0.3},
'You': {'win': 0.5, 'lose': 0.5},
'love': {'Python.': 1.0}, # Конечные состояния должны быть словарями
'hate': {'homework.': 1.0},
'win': {'!': 1.0},
'lose': {'.': 1.0}
}
def generate():
# Выбираем первое слово на основе 'start'
current_word = random.choices(
list(transitions['start'].keys()),
weights=transitions['start'].values()
)[0]
sentence = [current_word]
# Продолжаем, пока не достигнем конечного состояния (точка, воскл. знак)
while current_word not in ['.', '!', '...']:
next_words = transitions[current_word]
current_word = random.choices(
list(next_words.keys()),
weights=next_words.values()
)[0]
sentence.append(current_word)
return ' '.join(sentence)
print(generate()) # Пример: "You win !" или "I love Python."
Вывод: You win !

В чём преимущество метода?
Нужны только текущее состояние и матрица переходов (обычная таблица вероятностей).
Сравните с нейросетями, где требуются тысячи параметров.
Перемножение матриц — операция, которую GPU выполняет молниеносно.
Цепь из 1000 состояний хранится как матрица 1000×1000 чисел (вместо гигабайтов весов нейросети).
Где применяется?
Поиск: Ранжирование в Google/Yandex.
NLP: Автодополнение в Gmail/iPhone.
Геймдев: Поведение NPC в Civilization.
Биология: Моделирование мутаций ДНК.
С какими «подводными камнями» можно столкнуться?
Цепи Маркова — не волшебство. Главные ограничения:
Нет долгой памяти: Не помнит состояния 2 шага назад
Стационарность: Вероятности должны быть постоянными
Проклятие размерности: Для сложных систем нужны огромные матрицы
Вывод:
Цепи Маркова окружают нас — от ленты соцсетей до умных колонок. Они очень практичны и легки в понимании.
В заключение этой статьи хочу напомнить вам, что хороший программист = хороший математик. Можно было рассмотреть ещё тысячи, десятки тысяч очень полезных алгоритмов, но уже на этом этапе можно понять важность матана и в целом всей высшей математики в нашей современной жизни.
Новости, обзоры продуктов и конкурсы от команды Timeweb.Cloud — в нашем Telegram-канале ↩
? Читайте также:
➤ JavaScript: примеры реализации некоторых математических выражений
➤ IT и ЗОЖ: Как не сгореть за компом? Простые ритуалы для сейва здоровья
Перед оплатой в разделе «Бонусы и промокоды» в панели управления активируйте промокод и получите кэшбэк на баланс.
Комментарии (49)
plachacwa
11.08.2025 14:25Заметил, что нейросети очень любят швейцарские ножи.
Andy_U
11.08.2025 14:25Причем напрочь тупые. Типа не работающего в подавляющем количестве случаев градиентного спуска.
leshabirukov
11.08.2025 14:25??? И как же "в подавляющем количестве случаев" формируют тензоры весов?
Andy_U
11.08.2025 14:25Я, увы, не знаю, что это такое. Но то, что метод минимизации функций от многих переменных методом градиентного спуска крайне неэффективен, это общеизвестный факт. Ну, давайте, вы предоставляете код, а я функцию, и вы пробуете найти ее минимум.
leshabirukov
11.08.2025 14:25Эти самые, навязшие в зубах нейросети, как их тренировать без градиентного спуска?
Andy_U
11.08.2025 14:25Там используется не "классический" градиентный спуск: https://ru.wikipedia.org/wiki/Градиентный_спуск
Delshi
11.08.2025 14:25Смотря о каком спуске идёт речь. В классическом -- да, подобная проблема имеет место быть (хотя и тут нюансы). Но есть куча его модификаций, которые железно находят минимумы даже в многомерных пространствах со сложнейшей структурой и высокой степенью симметрии. Один из таких примеров видел сам -- мой друг из аспирантуры алгоритм разработал для подобных задач. У него алгоритм -- смесь эволюционного, вероятностного и классического подходов. По итогу CNN, детектящая кожные заболевания, стала обучаться на порядок быстрее, сохранив и даже увеличив относительную точность и метрики типа PR
Andy_U
11.08.2025 14:25Смотря о каком спуске идёт речь
Исключительно о том, который упоминается в статье, как применимый к ML.
yatanai
11.08.2025 14:25Ну потому его классическую реализацию и не использовали для +3 скрытых слоёв, из-за неоднозначных результатов, а потом придумали "градиент бустинг" которые там как-то деревья хитрые строил и резко появился термин "Глубокие обучение". И дальше народ начал развлекаться, вплоть до сеток где по сотни слоёв вообще не проблема
1fid
11.08.2025 14:25Это правда. Кроме градиентного спуска есть множество методов оптимизации. Я бы не сказал что градиентный спуск не работает, но то, что он не самый оптимальный - это факт.
https://docs.pytorch.org/docs/stable/optim.html#algorithmsleshabirukov
11.08.2025 14:25Так там есть хотя-бы один, который бы не был модификацией градиентного спуска? Могу ошибаться, - но всё что пробовал, - SGD, Adamar, AdaDelta - на нём основаны. В контексте обзорной статьи обозвать всё это просто "градиентный спуск" вполне допустимо имхо.
Refridgerator
11.08.2025 14:25Формула про FFT не совпадает с её реализацией в коде. Совпадение? Не думаю (с)
key08rus
11.08.2025 14:25Да и про mp3 прямо ерунда какая-то - утверждения сами по себе не ложные, но "вторичные" по значимости, и сути не раскрывают.
dyadyaSerezha
11.08.2025 14:25Да, там неслышимые частоты отсекаются уже на этапе АЦП - обычно это частота дискретизации 20 КГц. А mp3 просто сжимаю всё, что можно в пределах разоешенного потока.
К автору:
Пример с кодом
Надо указывать язык.
это и есть преобразование Фурье.
Это ряд Фурье. В тексте вообще путается ряд и преобразование, что есть разные вещи.
UFO_01
11.08.2025 14:25И это не говоря о том, что преобразование Фурье не используется ни для mp3, ни в jpeg. Я бы понял будь тут пример с расчётом, скажем mfcc коэффициентов для распознавания речи, или хотя бы слова о том что через fft можно найти свёртку, ну а так как-то никак. Да и ни реализации fft, ни графика спектра не показали по итогу.
MixonK
11.08.2025 14:25На самом деле, там только формула для генерации сигнала (в итоге картинки). Самой реализации FFT не представлено, но сказано что 5Гц и 20Гц будут легко найдены.
Anarchist
11.08.2025 14:25"Вывод" в конце текста - палево. :)
А кубическое уравнение решается с помощью формулы Кардано.
phlykov
11.08.2025 14:25Вы её пробовали на практике применять? Да, формула есть, но ради её применения (не вывода, а именно применения) пришлось изобрести комплексные числа.
Neznauy
11.08.2025 14:25Пробовал, в 11 классе школы, когда попадалось кубическое уравнение которое непонятно как упрощать. Очень бесил этим преподавателя :D Иногда даже фраза "далее по формуле Кардано" помогала, так что из личного опыта вещь полезная.
Chupaka
11.08.2025 14:25Код про цепи Маркова на ветке "I" вылетит же с ошибкой индекса? Там нет ни слова-точки, ни восклицательного знака для остановки.
А в рядах Фурье тема
сисекпреобразования Фурье не раскрыта. Где результат-то?Andy_U
11.08.2025 14:25Ага, например для количества точек 104729. Или хотя бы для 10007. Я про утверждение об N*log(N).
Refridgerator
11.08.2025 14:25Алгоритм Блюстейна для любого количества точек работает, и тоже с N*log(N). Просто для степени двойки FFT наиболее прост в реализации. FFTW могёт.
Andy_U
11.08.2025 14:25"Мои" числа - простые ;)
Refridgerator
11.08.2025 14:25Я заметил;) Поэтому и написал. Алгоритм Блюстейна выражает FFT через циклическую свёртку с комплексным ЛЧМ (chirp), которую можно посчитать через линейную размером в 2*n, а её уже можно посчитать быстро, добив нулями до ближайшего доступного FFT. В случае степеней двойки для ваших чисел это будут 262144 и 32768. Если спектр ЛЧМ уже посчитан, то на каждое FFT в 104729 точек потребуется 471602 комплексных умножений и два раза FFT в 262144 точек.
Andy_U
11.08.2025 14:25добив нулями до ближайшего доступного FFT
Это же поменяет спектр? Ну пусть изначально было ровно 2*pi на исходное число точек. Тогда и изначальный ряд Фурье имел одну ненулевую компоненту. А потом?
Нет, если вы про то, как быстро свертки считать, то да, все равно нулями добивать до минимум 2*N.
P.S. Я таки решил прочитать про этот алгоритм. Там именно что свертка используется. Надо будет быстродействие протестировать.
Refridgerator
11.08.2025 14:25Это же поменяет спектр?
Конечно, но нас-то интересует свёртка (через умножение спектров), которая тоже просто получится дополненной нулями. Я даже писал этот алгоритм на FPU), потому что погрешность в нём накапливается быстрее из-за всех этих дополнительных перемножений.
VAF34
11.08.2025 14:25Использование термина "матан" вместо "матанализ" убивает наповал.
shlmzl
11.08.2025 14:25Использование термина "матан" вместо "матанализ" убивает наповал.
Он что-то другое имел ввиду, не "матанализ". Матанализ это абстрактный анализ. А у него в статье методы. Может имел ввиду Методы Оптимизации. Тема обширная и многомерная, порой философская в какой-то степени, в смысле методологии научного поиска. "Топ-5" здесь ни о чем.
gres_84
11.08.2025 14:25Вопрос привычки. У нас в институте именно так и назывался. Еще у нас был аналит, а у моего друга этот же предмет назывался линал.
Akina
11.08.2025 14:25А почему нельзя было сразу дать финальные формулы для вычисления коэффициентов в МНК? тем более что они совершенно несложные.
хороший программист = хороший математик
Не верю. Смею полагать, что я хороший программист. SQL программист, если точнее. И мне все ваши топ-5 ну совершенно не нужны... а по большому счёту и вообще математика не сказать что нужна.
dukei
11.08.2025 14:25Вероятно, вас можно уже заменить нейросетью. Она и математику лучше знает, и языков больше. И не стесняется признавать, что не всё знает.
Nemoumbra
11.08.2025 14:25Тэкс, что тут у нас... Алгоритмы из матана? Ну-ка...
Вычматы
Матан, но алгоритмов тут нет
Опты/вычматы
Вычматы
Слупы, но алгоритмов тут нет
Опять LLM... Напомните, когда дедлайн у тех, кто обещал добавить опцию минусить за нейронки? Ладно, я сам не против их использования, но тут какая-то слишком сырая статья получилась, уже другие комментаторы привели примеры.
ropblha
11.08.2025 14:25Это даже не статья, а выхлоп какого нить deep seek, с минимальными правками. Видно же по стилю оформления - нейросеть любит бить на большое количество подпунктов
edo1h
11.08.2025 14:25метод ньютона — такое себе во многих случая, чувствителен к округлениям.
тот же метод брента зачастую намного практичнее, при этом его можно объяснить без матанализа.
Schicout
11.08.2025 14:25Упоминая МНК было бы неплохо также упомянуть их более "прогрессивные" версии - регрессию Деминга и регрессию Йорка, так как МНК нельзя применять для получения уравнения регрессии по данным, у которых значения аргумента функции (x) измерены с погрешностью. В этом случае используют регрессию Деминга, которая умеет в любые данные (и x с погрешностями, и y с погрешностями, реализую прямую, обратную, диагональную и ортогональные регрессии) или регрессию Йорка, которая, по сути, является итерационным методом, в котором первый шаг получают с помощью МНК или Деминга, а потом, варьируя индивидуальные веса погрешностей каждой из точек, добиваются максимально приближенного результата. Не бейте за терминологию, лет 15 не открывал тех книжек, мог напутать детали. Про регрессию Йорка есть тут.
BlinOFF
11.08.2025 14:25Самое главное применение матана в жизни забыли- можно согнуть проволоку в виде интеграла и достать шляпу из лужи :)
karambola_stiv
11.08.2025 14:25-- Папа, а вот этот гаечный ключ на 12 для чего нужен?
-- Гаечный ключ на 12 может заменить гаечный ключ на 13, если немного подпилить его болгаркой.
Такая же статья - дают конкретную математическую формулу и описывают как с помочью этой формулы решить задачу, требующую эту формулу. Давайте напишем что тригонометрия необходима для программистов, но не потому что она позволяет создать периодические колебания и часто используется в геймдеве и в графике, а потому что помогает решить уравнения с синусами и косинусами.
ABATAPA
Сильное утверждение. В работе врача-терапевта тоже?
shlmzl
Врач-терапевт обязан повышать свою квалификацию. Какая-нибудь группа британских ученых пишет в статье, что по выборке из такого-то количества обследуемых среднеквадратичное отклонение такого-то параметра столько-то. Должен понимать это, к примеру. По оптимизации тоже, - оптимизировать среднеквадратичное отклонение такого-то параметра организма варируя дозу вещества как можно быстрее, чтобы не мучался долго.
NeoNN
А я как дилетант считаю, что для врача самое важное из матана - это теорема Байеса, для правильной интерпретации ложноположительных результатов анализов) Но статья неплоха, жаль, что нагенеренная ЛЛМкой.
RepppINTim
Ну, если терапевт увлекается анализом данных пациентов или занимается исследовательской работой, то почему бы и нет