Математический анализ
Вычисление пределов
Цели урока
- Освоить метод алгебраических преобразований
- Применять домножение на сопряжённое
- Использовать замечательные пределы
- Применять правило Лопиталя
- Работать с эквивалентными бесконечно малыми
Предварительные знания
- Понятие предела и ε-δ определение
- Замечательные пределы
- Основы дифференцирования (для правила Лопиталя)
Числовая дифференциация в PyTorch: `torch.autograd.gradcheck` проверяет аналитический градиент через конечную разность $(f(x+h) - f(x-h)) / (2h)$ при $h = 10^{-6}$. Это предел - вычисленный при конкретном $h$. Вся идея в том, что $\frac{0}{0}$ при $h = 0$ можно раскрыть до конечного числа. Именно этим занимается этот урок: пять техник, превращающих $\frac{0}{0}$ в ответ.
- **`torch.autograd.gradcheck`**: сравнивает аналитический градиент с численным $(f(x+h) - f(x-h)) / (2h)$. Погрешность численного - $O(h^2)$, и понимание этого требует знания пределов и эквивалентных б.м.
- **Taylor approximation в ML**: $\log(1 + \sigma(x)) \approx \sigma(x)$ при малых $\sigma(x)$ - это эквивалентная б.м. $\ln(1+t) \sim t$ при $t \to 0$. Используется для численной стабильности в loss-функциях
- **Batch Normalization**: при анализе поведения BN при $\sigma^2 \to 0$ нужно вычислить предел - типичная задача $0/0$
- **Asymptotic complexity**: $O(n \log n)$ vs $O(n^2)$ - это утверждение о пределе отношения $n \log n / n^2 \to 0$. Правило Лопиталя доказывает такие соотношения за секунды
- **Softmax stability**: $\text{softmax}(x_i) = e^{x_i} / \sum e^{x_j}$ при экстремальных $x$ - предел $e^x / e^x = 1$. Числовые трюки log-sum-exp следуют из этого предела
Маркиз, который купил теорему
Правило, носящее имя **маркиза де Лопиталя**, было на самом деле открыто его учителем - швейцарским математиком **Иоганном Бернулли**. Лопиталь заплатил Бернулли за уроки и получил право публиковать его результаты. Так первый учебник анализа "Analyse des infiniment petits" (1696) вышел под именем Лопиталя. Бернулли молчал много лет, пока не опубликовали его переписку после смерти обоих.
Метод 1: Алгебраические преобразования
Метод 1: Алгебраические преобразования
Самый чистый метод: **разложить, сократить, подставить**. Неопределённость $\frac{0}{0}$ возникает из-за общего множителя, который обращается в ноль. Сократить - и проблемы нет.
Разность квадратов
Классический случай 0/0
$\lim_{x \to 2} \frac{x^2 - 4}{x - 2}$ При $x = 2$: $\frac{0}{0}$ - неопределённость! **Разложим** числитель по формуле $a^2 - b^2 = (a-b)(a+b)$: $$\frac{x^2 - 4}{x - 2} = \frac{(x-2)(x+2)}{x-2} = x + 2 \quad (x \neq 2)$$ **Теперь** подставляем: $\lim_{x \to 2} (x + 2) = \boxed{4}$
Кубическая разность
Разложение кубов
$\lim_{x \to 1} \frac{x^3 - 1}{x - 1}$ Формула: $a^3 - b^3 = (a-b)(a^2 + ab + b^2)$ $$\frac{x^3 - 1}{x - 1} = \frac{(x-1)(x^2 + x + 1)}{x-1} = x^2 + x + 1$$ $\lim_{x \to 1} (x^2 + x + 1) = 1 + 1 + 1 = \boxed{3}$
Вычислите $\lim_{x \to 3} \frac{x^2 - 9}{x - 3}$
$x^2 - 9 = (x-3)(x+3)$. После сокращения: $\lim_{x \to 3}(x+3) = 6$.
Метод 2: Домножение на сопряжённое
Метод 2: Домножение на сопряжённое
Когда в выражении есть **корни**, умножение на сопряжённое превращает разность корней в разность квадратов:
Корень в числителе
Классическая техника
$\lim_{x \to 0} \frac{\sqrt{1+x} - 1}{x}$ При $x = 0$: $\frac{0}{0}$ **Умножаем** на сопряжённое $\frac{\sqrt{1+x} + 1}{\sqrt{1+x} + 1}$: $$\frac{\sqrt{1+x} - 1}{x} \cdot \frac{\sqrt{1+x} + 1}{\sqrt{1+x} + 1} = \frac{(1+x) - 1}{x(\sqrt{1+x} + 1)} = \frac{x}{x(\sqrt{1+x} + 1)}$$ $$= \frac{1}{\sqrt{1+x} + 1} \xrightarrow{x \to 0} \frac{1}{1 + 1} = \boxed{\frac{1}{2}}$$ **Это не просто упражнение**: этот предел - производная $\sqrt{x}$ в точке $x = 1$. Числовая дифференциация $(\sqrt{1+h} - 1)/h$ при $h \to 0$ даёт ровно $1/2$.
Умножить только числитель на сопряжённое
Нужно умножать И числитель, И знаменатель (т.е. на 1)
Это преобразование, а не изменение выражения. Умножение на $\frac{\text{сопр.}}{\text{сопр.}} = 1$ не меняет значение функции - только форму записи.
Какое сопряжённое для выражения $\sqrt{x+4} - 2$?
Сопряжённое к $\sqrt{a} - b$ - это $\sqrt{a} + b$. Их произведение даст $a - b^2$ без корней.
Метод 3: Замечательные пределы
Метод 3: Замечательные пределы
Два фундаментальных предела позволяют вычислять целые семейства выражений. Первый объясняет, почему $\sin x \approx x$ в линеаризации. Второй - почему $e$ основание натурального логарифма:
Первый замечательный предел
Приведение к стандартному виду
$\lim_{x \to 0} \frac{\sin 5x}{3x}$ **Трюк**: нужно, чтобы аргумент синуса совпадал со знаменателем. $$\frac{\sin 5x}{3x} = \frac{5}{3} \cdot \frac{\sin 5x}{5x}$$ При $x \to 0$ имеем $5x \to 0$, поэтому $\frac{\sin 5x}{5x} \to 1$ $$\lim = \frac{5}{3} \cdot 1 = \boxed{\frac{5}{3}}$$ Применение в ML: при линеаризации loss-функций вблизи минимума используют $\sin \theta \approx \theta$, $\cos \theta \approx 1 - \theta^2/2$ - это прямые следствия этого предела.
Второй замечательный предел
Степенная неопределённость 1^∞
$\lim_{x \to \infty} \left(1 + \frac{3}{x}\right)^x$ Это неопределённость $1^\infty$! **Приём**: делаем замену $t = x/3$, тогда $x = 3t$ и при $x \to \infty$ имеем $t \to \infty$: $$\left(1 + \frac{3}{x}\right)^x = \left(1 + \frac{1}{t}\right)^{3t} = \left[\left(1 + \frac{1}{t}\right)^{t}\right]^3$$ Внутренняя скобка $\to e$ при $t \to \infty$ $$\lim = e^3 \approx \boxed{20.09}$$
Чему равен $\lim_{x \to 0} \frac{\tan x}{x}$?
$\tan x = \frac{\sin x}{\cos x}$. Поэтому $\frac{\tan x}{x} = \frac{\sin x}{x} \cdot \frac{1}{\cos x} \to 1 \cdot 1 = 1$.
Метод 4: Правило Лопиталя
Метод 4: Правило Лопиталя
Мощный инструмент для неопределённостей $\frac{0}{0}$ и $\frac{\infty}{\infty}$. Бернулли открыл его, Лопиталь купил и опубликовал:
Правило Лопиталя применимо **только** при неопределённостях $0/0$ или $\infty/\infty$. Перед применением **всегда проверяйте** тип неопределённости!
Простое применение
Экспонента - и связь с autograd
$\lim_{x \to 0} \frac{e^x - 1}{x}$ Проверка: при $x = 0$ получаем $\frac{e^0 - 1}{0} = \frac{0}{0}$ ✓ **Применяем** правило Лопиталя: $$\lim_{x \to 0} \frac{(e^x - 1)'}{(x)'} = \lim_{x \to 0} \frac{e^x}{1} = e^0 = \boxed{1}$$ Это - определение производной $e^x$ в точке 0. В PyTorch: `torch.exp(torch.tensor(0.0)).backward()` вернёт gradient=1, и вот почему.
Повторное применение
Когда одного раза мало
$\lim_{x \to 0} \frac{1 - \cos x}{x^2}$ При $x = 0$: $\frac{0}{0}$ - применяем Лопиталя: $$\lim_{x \to 0} \frac{\sin x}{2x} = \frac{0}{0}$$ - снова неопределённость! Применяем **ещё раз**: $$\lim_{x \to 0} \frac{\cos x}{2} = \frac{1}{2} = \boxed{0.5}$$ Этот результат появляется в разложении $\cos x \approx 1 - x^2/2$ - эквивалентная б.м., которую используют при аппроксимации cosine similarity в малых углах.
Правило Лопиталя - это дифференцирование дроби по правилу частного
Это отдельное дифференцирование числителя и знаменателя
Правило частного: $(f/g)' = \frac{f'g - fg'}{g^2}$. Правило Лопиталя: $\lim \frac{f}{g} = \lim \frac{f'}{g'}$. Разные вещи! Лопиталь - не про дифференцирование дроби, а про замену предела.
В чём ключевая идея раздела «Метод 4: Правило Лопиталя»?
Перескажите главное определение или результат раздела одним предложением.
Метод 5: Эквивалентные бесконечно малые
Метод 5: Эквивалентные бесконечно малые
При $x \to 0$ многие функции ведут себя «как $x$» или «как $x^2$». Это позволяет делать быстрые замены в пределах - именно их используют для численной стабильности в ML-кодах:
| Функция | Эквивалент при $x \to 0$ |
|---|---|
| $\sin x$ | $x$ |
| $\tan x$ | $x$ |
| $\arcsin x$ | $x$ |
| $\arctan x$ | $x$ |
| $\ln(1+x)$ | $x$ |
| $e^x - 1$ | $x$ |
| $1 - \cos x$ | $\frac{x^2}{2}$ |
| $(1+x)^\alpha - 1$ | $\alpha x$ |
Эквивалентность $f \sim g$ при $x \to 0$ означает $\lim_{x \to 0} \frac{f(x)}{g(x)} = 1$. Можно заменять в **произведениях**, но НЕ в суммах! PyTorch использует $\log(1 + e^x) \approx x$ при больших $x$ для числовой стабильности - это та же таблица эквивалентов.
Быстрое вычисление
Замена эквивалентами
$\lim_{x \to 0} \frac{\sin 3x \cdot \ln(1+2x)}{x^2}$ **Замены**: $\sin 3x \sim 3x$, $\ln(1+2x) \sim 2x$ при $x \to 0$ $$\lim_{x \to 0} \frac{3x \cdot 2x}{x^2} = \lim_{x \to 0} \frac{6x^2}{x^2} = \boxed{6}$$ Числовая проверка: при $x = 0.001$: числитель $= \sin(0.003) \cdot \ln(1.002) \approx 0.003 \cdot 0.002 = 6 \cdot 10^{-6}$, знаменатель $= 10^{-6}$. Отношение $\approx 6$ ✓
Чему эквивалентно $e^{2x} - 1$ при $x \to 0$?
По таблице: $e^t - 1 \sim t$ при $t \to 0$. Здесь $t = 2x$, поэтому $e^{2x} - 1 \sim 2x$.
Пределы на бесконечности
Пределы на бесконечности
Для рациональных функций при $x \to \infty$ делим на **старшую степень** - это даёт быстрый ответ без лишних вычислений:
Степени равны
Отношение старших коэффициентов
$\lim_{x \to \infty} \frac{3x^2 + 2x - 1}{5x^2 - x + 4}$ Делим числитель и знаменатель на $x^2$: $$\lim_{x \to \infty} \frac{3 + 2/x - 1/x^2}{5 - 1/x + 4/x^2}$$ При $x \to \infty$ все дроби с $x$ → 0: $$= \frac{3 + 0 - 0}{5 - 0 + 0} = \boxed{\frac{3}{5}}$$ **Быстрый способ**: при равных степенях предел = отношение старших коэффициентов. Именно так анализируют big-O: $T(n) = 3n^2 + 2n \sim 3n^2$, алгоритм $O(n^2)$.
**Быстрое правило** для рациональных функций при $x \to \infty$: если степени равны - отношение старших коэффициентов; если степень числителя больше - $\infty$; если меньше - 0. Это ровно то, что делает анализ сложности при сравнении алгоритмов.
В чём ключевая идея раздела «Пределы на бесконечности»?
Перескажите главное определение или результат раздела одним предложением.
Практика
Практика
Вычислите $\lim_{x \to 0} \frac{\sin 2x}{\sin 5x}$
$$\frac{\sin 2x}{\sin 5x} = \frac{\sin 2x}{x} \cdot \frac{x}{\sin 5x} = \frac{2 \cdot \frac{\sin 2x}{2x}}{5 \cdot \frac{\sin 5x}{5x}} \cdot \frac{2}{5}$$ Или проще с эквивалентами: $\sin 2x \sim 2x$, $\sin 5x \sim 5x$ $$\lim = \frac{2x}{5x} = \frac{2}{5}$$
Вычислите $\lim_{x \to 4} \frac{\sqrt{x} - 2}{x - 4}$
Способ 1 (сопряжённое): $$\frac{\sqrt{x} - 2}{x - 4} \cdot \frac{\sqrt{x} + 2}{\sqrt{x} + 2} = \frac{x - 4}{(x-4)(\sqrt{x}+2)} = \frac{1}{\sqrt{x}+2}$$ $$\lim_{x \to 4} \frac{1}{\sqrt{x}+2} = \frac{1}{2+2} = \frac{1}{4}$$ Способ 2 (разложение): $x - 4 = (\sqrt{x})^2 - 4 = (\sqrt{x}-2)(\sqrt{x}+2)$ Ответ: $\boxed{\frac{1}{4}}$
Вычислите $\lim_{x \to 0} \frac{e^{3x} - 1 - 3x}{x^2}$ используя правило Лопиталя
При $x = 0$: $\frac{e^0 - 1 - 0}{0} = \frac{0}{0}$ ✓ Лопиталь (1-й раз): $$\lim_{x \to 0} \frac{3e^{3x} - 3}{2x} = \frac{3 - 3}{0} = \frac{0}{0}$$ - снова! Лопиталь (2-й раз): $$\lim_{x \to 0} \frac{9e^{3x}}{2} = \frac{9e^0}{2} = \frac{9}{2} = \boxed{4.5}$$ Проверка через б.м.: $e^{3x} - 1 \sim 3x$ при $x \to 0$, поэтому $e^{3x} - 1 - 3x \sim (3x)^2/2 = 9x^2/2$. Отношение $9x^2/2x^2 = 9/2$ ✓
В чём ключевая идея раздела «Практика»?
Перескажите главное определение или результат раздела одним предложением.
Связь с другими темами
Техники вычисления пределов нужны везде в анализе
- Производная — Определение производной требует вычисления предела разностного отношения
- Ряды Тейлора — Разложения функций дают эквивалентные бесконечно малые
- Интегралы — Несобственные интегралы - это пределы
- Дифференциальные уравнения — Асимптотическое поведение решений
Итоги
- **Алгебраические преобразования**: разложить и сократить общий множитель - самый чистый метод
- **Сопряжённое**: умножение на $(\sqrt{a} + \sqrt{b})$ убирает корни - основа числовой дифференциации
- **Замечательные пределы**: $\frac{\sin x}{x} \to 1$, $(1+x)^{1/x} \to e$ - объясняют линеаризацию и основание $e$
- **Правило Лопиталя**: дифференцируем числитель и знаменатель отдельно. Только для 0/0 и ∞/∞. Это не правило частного
- **Эквивалентные б.м.**: $\sin x \sim x$, $\ln(1+x) \sim x$, $e^x - 1 \sim x$ при $x \to 0$ - таблица, которую ML-инженеры используют при анализе численной стабильности
Вопросы для размышления
- Какой метод выбрать первым при виде неопределённости 0/0? Когда алгебра лучше Лопиталя?
- Почему нельзя использовать эквивалентные замены в суммах?
- В чём разница между правилом Лопиталя и правилом дифференцирования частного?
- Как tanh(x)/x → 1 при x → 0 связано с первым замечательным пределом?