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

Точки разрыва

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

Точки разрыва 🕳️

В прошлом уроке ты получил строгое определение непрерывности: функция непрерывна в точке $x_0$, если $\lim_{x\to x_0} f(x) = f(x_0)$. Три условия сразу: предел существует, функция определена в точке, и эти два числа совпадают. Формула короткая, но она — как замок с тремя защёлками, и сломаться может любая из них по отдельности. Сегодняшний урок — про то, что происходит, когда замок ломается, и, что важнее, как именно он ломается.

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

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

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

🎯 Ты узнаешь:

  • Как отличить «дырку», которую можно залатать одной точкой (устранимый разрыв), от настоящего разрыва, залатать который в принципе нельзя

  • Почему у скачкообразного разрыва оба односторонних предела прекрасно существуют — просто не совпадают друг с другом

  • Что объединяет вертикальную асимптоту $1/x$ и дикие колебания $\sin(1/x)$ в один и тот же класс «разрыв второго рода», хотя ведут они себя внешне совершенно по-разному

  • Почему ступенчатая функция активации первых нейросетей была обречена на провал с градиентным спуском именно из-за типа своего разрыва — и как гладкая сигмоида, а позже ReLU, решили эту проблему

  • Как функция распределения дискретной случайной величины связана со скачками, а величина каждого скачка — с вероятностью

  • Практический алгоритм: как за три шага определить тип разрыва любой функции в конкретной точке

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

До начала XIX века математики интуитивно считали, что «нормальные» функции — это функции, заданные формулой, и что такие функции просто не могут вести себя дико: раз есть формула, значит, есть и плавность. Огюстен Луи Коши в своём «Cours d'Analyse» 1821 года дал первое строгое определение непрерывности через язык бесконечно малых приращений — и тут же сформулировал утверждение, которое казалось очевидным: если каждая функция в бесконечной сумме (ряде) непрерывна, то и сумма ряда непрерывна. Утверждение выглядело как безобидная арифметика пределов. Оно оказалось неверным.

Опровержение пришло всего через пять лет. Нильс Хенрик Абель в 1826 году, разбирая ряды Фурье, явно построил пример: сумма бесконечного ряда из идеально гладких, бесконечно дифференцируемых синусов и косинусов может сходиться к функции с разрывом — к классической «пиле», скачущей вверх-вниз. Математическое сообщество было неприятно удивлено: оказалось, что предельный переход способен породить разрыв буквально из ничего, из суммы сколь угодно «хороших» слагаемых. Три года спустя, в 1829 году, Петер Густав Лежён Дирихле, изучая, при каких условиях ряд Фурье функции вообще сходится к самой этой функции, предложил контрпример совершенно другого масштаба: функцию $D(x)$, равную $1$ для рациональных $x$ и $0$ для иррациональных. Эта функция не просто разрывна в одной точке — она разрывна в каждой точке числовой прямой без единого исключения. Именно на примере функции Дирихле впервые всерьёз обсудили вопрос: а что вообще такое «функция», если это не обязательно формула? Дирихле фактически дал первое современное определение функции как произвольного соответствия «вход → выход», без всяких требований к формуле или плавности.

Дальше эстафету принял Бернхард Риман, который в 1850-х годах спросил: а можно ли вообще интегрировать разрывную функцию? Оказалось — можно, если точек разрыва «не слишком много» (в терминах современной теории — если множество точек разрыва имеет меру нуль). Функция Дирихле, разрывная всюду, интегралу Римана не поддаётся, а вот функция с бесконечным, но «редким» множеством разрывов — вполне. Этот вопрос — «сколько разрывов допустимо для интегрируемости» — полвека спустя привёл Анри Лебега к построению совершенно новой теории меры и интеграла (1902), одной из опор всей современной математики, включая теорию вероятностей, на которой стоит статистическое обучение. Так одна невинная на вид классификация — какие бывают разрывы функции — протянула нить через весь математический анализ XIX века прямо к инструментам, которыми сегодня доказывают сходимость алгоритмов машинного обучения.

Как классифицировать разрыв

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

Всё дальнейшее деление опирается на один и тот же первый вопрос: существуют ли оба односторонних предела $\lim_{x\to x_0^-} f(x)$ и $\lim_{x\to x_0^+} f(x)$, и являются ли они конечными числами?

Если да — и вдобавок эти два предела совпадают между собой — перед нами либо непрерывность (если ещё и $f(x_0)$ совпадает с этим общим пределом), либо устранимый разрыв (если не совпадает или функция вовсе не определена в точке). Если оба предела конечны, но не равны друг другу — это разрыв первого рода со скачком. А если хотя бы один из односторонних пределов бесконечен или вовсе не существует — это разрыв второго рода, самая тяжёлая категория. Дальше — детально про каждый случай.

Устранимый разрыв

Интуиция: дырка, которую можно залатать

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

Определение. Функция $f$ имеет устранимый разрыв в точке $x_0$, если предел $\lim_{x\to x_0} f(x)$ существует и конечен (то есть оба односторонних предела существуют, конечны и равны между собой), но при этом либо $f(x_0)$ не определена, либо $f(x_0) \ne \lim_{x\to x_0} f(x)$.

Название говорящее: разрыв устраним — достаточно переопределить (или доопределить) значение функции в одной-единственной точке, положив $f(x_0) := \lim_{x\to x_0} f(x)$, и функция станет непрерывной. Никакой другой тип разрыва такой лёгкой починки не допускает.

Как устранить устранимый разрыв: алгоритм доопределения

Схема всегда одна и та же, и она уже отрабатывалась тобой при вычислении пределов вида $\frac00$:

  1. Убедись, что при подстановке $x=x_0$ в исходное выражение получается неопределённость ($\frac00$ или похожая), а не какое-то другое препятствие.

  2. Упрости выражение так, чтобы «проблемный» множитель, обращающийся в ноль и в числителе, и в знаменателе, явно сократился — через разложение на множители, домножение на сопряжённое выражение или замену эквивалентными бесконечно малыми (техника из урока 180).

  3. Вычисли предел упрощённого выражения при $x\to x_0$ — это и есть то число, которым нужно доопределить функцию.

  4. Формально запиши: новая функция $\tilde f(x) = f(x)$ при $x \ne x_0$ и $\tilde f(x_0) = \lim_{x\to x_0} f(x)$ — непрерывна в $x_0$.

Разбор примеров

Пример 1 (лёгкий). Определить тип разрыва $f(x) = \dfrac{x^2-4}{x-2}$ в точке $x=2$.

При подстановке $x=2$ получаем $\frac{0}{0}$ — функция не определена. Раскладываем числитель на множители: $x^2-4 = (x-2)(x+2)$, значит при $x \ne 2$

$$f(x) = \frac{(x-2)(x+2)}{x-2} = x+2$$

Отсюда $\lim_{x\to2} f(x) = 2+2 = 4$ — предел конечен и существует. А сама функция в точке $x=2$ не определена. Значит, перед нами устранимый разрыв, и доопределение $f(2) := 4$ делает функцию непрерывной всюду.

Пример 2 (средний). Дана функция $f(x) = \dfrac{x^2-5x+6}{x-3}$ при $x\ne3$, причём известно, что $f(3) = 10$. Определить тип разрыва в точке $x=3$.

Раскладываем числитель: $x^2-5x+6 = (x-2)(x-3)$, значит при $x\ne3$: $f(x) = \dfrac{(x-2)(x-3)}{x-3} = x-2$, и $\lim_{x\to3} f(x) = 3-2 = 1$. Предел существует и конечен — но функция определена в точке $x=3$, и там стоит значение $10$, которое с пределом не совпадает: $1 \ne 10$. Это тоже устранимый разрыв — просто на этот раз проблема не в отсутствии значения, а в неправильно заданном значении. «Лечение» то же самое: заменить $f(3)=10$ на $f(3):=1$.

Пример 3 (сложный). Определить тип разрыва $f(x) = \dfrac{\sqrt{x+1}-2}{x-3}$ в точке $x=3$.

Подстановка $x=3$ даёт $\dfrac{\sqrt4-2}{0} = \dfrac00$ — снова неопределённость, но множители на этот раз спрятаны под корнем, и разложить на множители в привычном смысле не получится. Домножим числитель и знаменатель на сопряжённое к числителю выражение $\sqrt{x+1}+2$:

$$f(x) = \frac{(\sqrt{x+1}-2)(\sqrt{x+1}+2)}{(x-3)(\sqrt{x+1}+2)} = \frac{(x+1)-4}{(x-3)(\sqrt{x+1}+2)} = \frac{x-3}{(x-3)(\sqrt{x+1}+2)}$$

При $x\ne3$ множитель $(x-3)$ сокращается, и $f(x) = \dfrac{1}{\sqrt{x+1}+2}$. Значит,

$$\lim_{x\to3} f(x) = \frac{1}{\sqrt4+2} = \frac{1}{4}$$

Функция не определена в $x=3$ (в исходной записи там $\frac00$), предел существует и равен $\frac14$ — устранимый разрыв, доопределение $f(3) := \frac14$.

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

Устранимые разрывы — это не просто учебная гимнастика с алгеброй, это способ мышления, который постоянно нужен в прикладных вычислениях. Классический пример — функция $\operatorname{sinc}(x) = \dfrac{\sin x}{x}$: она не определена в нуле (в точности как в задаче доопределения из урока про замечательные пределы), но предел там равен $1$, и именно значением $\operatorname{sinc}(0):=1$ пользуются во всех библиотеках цифровой обработки сигналов — без него теорема Котельникова — Шеннона о дискретизации была бы разрывна в самой важной своей точке.

В теории информации и машинном обучении устранимые разрывы прячутся в определении энтропии: слагаемое $t\ln t$ формально не определено при $t=0$ (получаем $0\cdot(-\infty)$), но по правилу Лопиталя или через замену $t=e^{-u}$ легко проверить, что $\lim_{t\to0^+} t\ln t = 0$. Именно поэтому в формуле энтропии $H(p) = -\sum_i p_i \ln p_i$ слагаемые с $p_i=0$ по общепринятому соглашению доопределяют нулём — это классический устранимый разрыв, и без него формула энтропии просто не имела бы смысла для распределений с нулевыми вероятностями. Такая же логика стоит за log-sum-exp трюком в softmax: числитель и знаменатель дроби в softmax при определённых входах могут стремиться к $\frac{0}{0}$ или $\frac{\infty}{\infty}$-подобным конструкциям в численном представлении, и устойчивая реализация softmax — это по сути инженерный способ «доопределить» вычисление там, где наивная формула ломается.

Разрыв первого рода со скачком

Интуиция: ступенька лестницы

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

Определение. Функция $f$ имеет разрыв первого рода в точке $x_0$, если оба односторонних предела $\lim_{x\to x_0^-} f(x)$ и $\lim_{x\to x_0^+} f(x)$ существуют и конечны, но не равны друг другу. Величина $\left|\lim_{x\to x_0^+} f(x) - \lim_{x\to x_0^-} f(x)\right|$ называется скачком функции в точке $x_0$.

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

Разбор примеров

Пример 1 (лёгкий). Определить тип разрыва функции $f(x) = \operatorname{sign}(x) = \dfrac{|x|}{x}$ в точке $x=0$ (функция не определена в самом нуле).

При $x>0$: $|x|=x$, значит $f(x) = \dfrac{x}{x}=1$, и $\lim_{x\to0^+} f(x) = 1$. При $x<0$: $|x|=-x$, значит $f(x)=\dfrac{-x}{x}=-1$, и $\lim_{x\to0^-} f(x) = -1$. Оба предела конечны, но $1 \ne -1$ — разрыв первого рода, скачок равен $|1-(-1)| = 2$.

Пример 2 (средний). Определить тип разрыва кусочной функции

$$f(x) = \begin{cases} x^2+1, & x \le 1 \\ 3x, & x>1\end{cases}$$

в точке $x=1$.

Левый предел (и заодно значение функции, раз ветка $x\le1$ включает саму точку): $f(1) = 1^2+1 = 2$, и $\lim_{x\to1^-} f(x) = 2$. Правый предел: $\lim_{x\to1^+} f(x) = 3\cdot1 = 3$. Пределы конечны, но $2 \ne 3$ — разрыв первого рода, скачок $|3-2|=1$.

Пример 3 (сложный). Определить тип разрыва $f(x) = \arctan\left(\dfrac1x\right)$ в точке $x=0$ (функция не определена в нуле).

Здесь нужно проследить, куда стремится аргумент арктангенса при одностороннем приближении к нулю. При $x\to0^+$: $\dfrac1x \to +\infty$, а $\arctan$ при аргументе, уходящем в $+\infty$, стремится к своей горизонтальной асимптоте $\dfrac{\pi}{2}$. При $x\to0^-$: $\dfrac1x \to -\infty$, и $\arctan \to -\dfrac{\pi}{2}$. Оба предела конечны (это ключевой момент — сам аргумент арктангенса улетает в бесконечность, но значение самого арктангенса остаётся ограниченным величиной $\dfrac{\pi}{2}$ по модулю), и они не равны: $\dfrac{\pi}{2} \ne -\dfrac{\pi}{2}$. Разрыв первого рода, скачок $\left|\dfrac{\pi}{2}-\left(-\dfrac{\pi}{2}\right)\right| = \pi$.

Почему это важно: ступенька, которую уволили из машинного обучения

Вот здесь мы подходим к самому содержательному сюжету этого урока. В 1943 году Уоррен Маккаллок и Уолтер Питтс предложили первую математическую модель нейрона, а в 1958 году Фрэнк Розенблатт построил на этой идее работающий персептрон. Активационной функцией в обеих моделях служила функция Хевисайда — идеальная ступенька:

$$H(x) = \begin{cases} 0, & x<0 \\ 1, & x\ge0\end{cases}$$

Это классический разрыв первого рода в точке $x=0$: $\lim_{x\to0^-}H(x)=0$, $\lim_{x\to0^+}H(x)=1$, скачок равен $1$. Идея понятна и по-своему красива: нейрон либо «стреляет» (выход $1$), либо молчит (выход $0$), в точности как биологический нейрон, который либо превышает порог возбуждения, либо нет.

Проблема выяснилась, когда исследователи попытались обучать многослойные сети с такой активацией методом градиентного спуска — то есть подстраивать веса, отталкиваясь от того, как небольшое изменение веса влияет на выход сети. А для этого нужна производная. У функции Хевисайда производная равна нулю везде, кроме единственной точки $x=0$, где функция просто не дифференцируема (там она терпит скачок, а не «сгибается» плавно). Формально: $H'(x)=0$ при всех $x\ne0$. Это означает, что для подавляющего большинства входов нейрона сигнал о том, «в какую сторону и насколько подкрутить веса», попросту равен нулю — обратное распространение ошибки видит на этом слое полную тишину. Обучать сеть через градиент, когда почти весь градиент тождественно равен нулю, невозможно в принципе, не важно, сколько слоёв ты добавишь.

Это была не единственная причина скептицизма по отношению к персептронам (в 1969 году Марвин Минский и Сеймур Пейперт показали и более фундаментальные ограничения однослойных сетей, например неспособность выучить функцию XOR), но именно проблема нулевого градиента у ступенчатой активации сделала саму идею глубокого, многослойного обучения через backpropagation невозможной до тех пор, пока активационную функцию не заменили. Когда в середине 1980-х Дэвид Румельхарт, Джеффри Хинтон и Рональд Уильямс популяризировали алгоритм обратного распространения ошибки, ключевым условием его работы стала замена ступеньки на сигмоиду

$$\sigma(x) = \frac{1}{1+e^{-x}}$$

— гладкую, непрерывно дифференцируемую всюду функцию, которая внешне очень похожа на ступеньку (тот же плавный переход от $0$ к $1$), но нигде не терпит разрыва, и её производная $\sigma'(x) = \sigma(x)(1-\sigma(x))$ ненулевая почти на всей области определения. Градиент снова «течёт» через сеть, и обучение становится возможным.

Полвека спустя история повторилась в чуть иной форме: сигмоида страдает от проблемы затухающего градиента на своих «хвостах» (там, где $|x|$ велико, $\sigma'(x)$ экспоненциально близко к нулю), и на смену ей во многих архитектурах пришла функция $\operatorname{ReLU}(x) = \max(0,x)$. Важно понимать: сама ReLU непрерывна всюду, включая точку $x=0$ — разрыва первого рода у неё нет вообще. Разрыв первого рода есть только у её производной: $\operatorname{ReLU}'(x)=0$ при $x<0$ и $\operatorname{ReLU}'(x)=1$ при $x>0$ — это снова функция Хевисайда, только теперь она разрывна не в самой активации, а в градиенте активации, и притом лишь в единственной изолированной точке. Такая проблема уже вполне терпима на практике (в точке $x=0$ условно берут одно из двух значений производной — это называется субградиентом), и именно эта, куда более мягкая версия разрыва позволила ReLU обгонять сигмоиду по эффективности обучения глубоких сетей.

Разрыв второго рода

Интуиция: сигнал разваливается совсем

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

Определение. Функция $f$ имеет разрыв второго рода в точке $x_0$, если хотя бы один из односторонних пределов $\lim_{x\to x_0^-} f(x)$ или $\lim_{x\to x_0^+} f(x)$ либо равен бесконечности, либо вовсе не существует.

Обрати внимание: «хотя бы один» — этого достаточно. Даже если один из двух односторонних пределов ведёт себя идеально, а второй взрывается или колеблется, весь разрыв целиком классифицируется как разрыв второго рода. Внутри этой категории обычно различают два подслучая: полюс (бесконечный предел, как вертикальная асимптота) и колебательный разрыв (предел не существует из-за бесконечных осцилляций, как у $\sin(1/x)$).

Разбор примеров

Пример 1 (лёгкий). Определить тип разрыва $f(x) = \dfrac{1}{x-3}$ в точке $x=3$.

При $x\to3^-$: знаменатель $x-3$ стремится к $0$ через отрицательные значения, значит $\dfrac{1}{x-3} \to -\infty$. При $x\to3^+$: знаменатель стремится к $0$ через положительные значения, значит $\dfrac{1}{x-3} \to +\infty$. Оба односторонних предела бесконечны — разрыв второго рода, конкретно полюс (вертикальная асимптота $x=3$).

Пример 2 (средний). Определить тип разрыва $f(x) = 2^{1/x}$ в точке $x=0$.

При $x\to0^+$: $\dfrac1x \to +\infty$, значит $2^{1/x} \to +\infty$. При $x\to0^-$: $\dfrac1x \to -\infty$, значит $2^{1/x} \to 2^{-\infty} = 0$. Заметь любопытную асимметрию: слева предел прекрасно существует и равен $0$, а справа — бесконечность. Но правило простое: раз хотя бы один из двух пределов бесконечен, весь разрыв — второго рода, независимо от того, насколько «прилично» ведёт себя вторая сторона.

Пример 3 (сложный). Определить тип разрыва $f(x) = \sin\left(\dfrac1x\right)$ в точке $x=0$.

Здесь ни один предел не бесконечен — функция синуса всегда ограничена значениями от $-1$ до $1$. Но предела всё равно не существует, и вот почему. Возьмём последовательность $x_n = \dfrac{1}{\pi n} \to 0$: тогда $\sin\left(\dfrac{1}{x_n}\right) = \sin(\pi n) = 0$ для любого $n$. А возьмём другую последовательность, $x_n' = \dfrac{1}{\frac{\pi}{2}+2\pi n} \to 0$: тогда $\sin\left(\dfrac{1}{x_n'}\right) = \sin\left(\dfrac{\pi}{2}+2\pi n\right) = 1$ для любого $n$. Две последовательности аргументов стремятся к одной и той же точке $x_0=0$, но значения функции вдоль них стремятся к разным числам ($0$ и $1$) — значит, по определению предела через последовательности, предел $\lim_{x\to0} \sin(1/x)$ не существует вовсе. Функция $\sin(1/x)$ совершает бесконечно много полных колебаний между $-1$ и $1$ на любом сколь угодно малом интервале вокруг нуля. Это разрыв второго рода колебательного типа — здесь ни один односторонний предел не бесконечен, но он и не существует, что по определению уже достаточно для второго рода.

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

Разрывы второго рода — это первый сигнал тревоги для любого, кто пишет численный код. Функция потерь в задачах классификации, логарифмическая функция потерь (log-loss, бинарная кросс-энтропия), содержит слагаемое $-\ln(p)$, где $p$ — предсказанная моделью вероятность. При $p \to 0^+$ это слагаемое улетает в $+\infty$ — классический разрыв второго рода, и никаким конечным доопределением его не устранить, в отличие от устранимого разрыва. Именно поэтому в промышленных реализациях кросс-энтропии вероятности перед логарифмированием всегда «поджимают» к безопасному диапазону вроде $[\varepsilon, 1-\varepsilon]$ — это инженерный ответ на существование разрыва второго рода, который в принципе невозможно «долечить» одним значением.

Похожая история — в батч-нормализации, где происходит деление на стандартное отклонение по батчу: если дисперсия близка к нулю, знаменатель $\dfrac{1}{\sigma}$ близок к полюсу — и снова спасение состоит в том, чтобы добавить малую константу $\varepsilon$ в знаменатель, чтобы функция вовсе никогда не приближалась к настоящей точке разрыва. Колебательный разрыв второго рода тоже не редкость: любые системы с обратной связью или резонансом (в теории управления, в цифровой обработке сигналов) на грани неустойчивости могут демонстрировать поведение, качественно похожее на $\sin(1/x)$ — с бесконечными, неубывающими по частоте колебаниями вблизи критической точки.

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

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

Задание 1: Определить тип разрыва $f(x) = \dfrac{x^2-9}{x-3}$ в точке $x=3$.


Задание 2: Определить тип разрыва $f(x) = \dfrac{x^2-16}{x+4}$ в точке $x=-4$.


Задание 3: Определить тип разрыва кусочной функции $f(x) = \begin{cases} x+3, & x<2 \\ 2x-1, & x\ge2\end{cases}$ в точке $x=2$.


Задание 4: Определить тип разрыва $f(x) = \dfrac{1}{x-5}$ в точке $x=5$.


Задание 5: Определить тип разрыва $f(x) = \dfrac{\sin x}{x}$ в точке $x=0$ (функция не определена в нуле).


Задание 6: Определить тип разрыва $f(x) = \dfrac{|x|}{x}$ в точке $x=0$ (функция не определена в нуле).


Задание 7: Определить тип разрыва $f(x)=\dfrac{x^2-x-6}{x-3}$ в точке $x=3$.


Задание 8: Определить тип разрыва кусочной функции $f(x)=\begin{cases}3x-2, & x\le1\\ x^2+1, & x>1\end{cases}$ в точке $x=1$.


Задание 9: Определить тип разрыва $f(x)=\dfrac{1}{(x+1)^2}$ в точке $x=-1$.


Задание 10: Определить тип разрыва $f(x)=\dfrac{x^3-1}{x-1}$ в точке $x=1$.


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

Задание 11: При каком значении $k$ функция $f(x)=\dfrac{x^2-1}{x-1}$ при $x\ne1$, $f(1)=k$, будет непрерывна в точке $x=1$?


Задание 12: Определить тип разрыва $f(x)=\tan x$ в точке $x=\dfrac{\pi}{2}$.


Задание 13: Определить тип разрыва $f(x)=e^{1/x}$ в точке $x=0$.


Задание 14: Дана кусочная функция $f(x)=\begin{cases}x+a, & x<0\\ x^2-2, & x\ge0\end{cases}$. При каком значении $a$ скачок функции в точке $x=0$ равен $5$?


Задание 15: Ступенчатая функция активации (функция Хевисайда) $H(x)=\begin{cases}0, & x<0\\1, & x\ge0\end{cases}$ использовалась в первых моделях искусственного нейрона. Определить тип разрыва в $x=0$ и объяснить, почему такая активация несовместима с обучением градиентным спуском.


Задание 16: Можно ли доопределить функцию $f(x)=\sin\left(\dfrac1x\right)$ в точке $x=0$ так, чтобы она стала непрерывной?


Задание 17: Найти точки разрыва функции «пол» $f(x)=\lfloor x\rfloor$ и определить их тип в произвольной целой точке $x_0=n\in\mathbb{Z}$.


Задание 18: Определить тип разрыва $f(x)=\dfrac{\sqrt{x+1}-1}{x}$ в точке $x=0$.


Задание 19: Сама функция $\operatorname{ReLU}(x)=\max(0,x)$ непрерывна всюду, но у её производной $\operatorname{ReLU}'(x)=\begin{cases}0, & x<0\\1, & x>0\end{cases}$ есть разрыв в $x=0$. Классифицировать этот разрыв и сравнить со случаем ступеньки Хевисайда из задания 15.


Задание 20: В функции потерь $-\ln(p)$ (слагаемое бинарной кросс-энтропии), где $p\in(0,1]$ — предсказанная вероятность. Что происходит при $p\to0^+$, и к какому типу разрыва это относится, если формально доопределить функцию в точке $p=0$?


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

Задание 21: Функция Дирихле $D(x)=\begin{cases}1, & x\in\mathbb{Q}\\0, & x\notin\mathbb{Q}\end{cases}$. Определить тип разрыва в произвольной точке $x_0$.


Задание 22: Можно ли доопределить $f(x)=x\sin\left(\dfrac1x\right)$ в точке $x=0$ так, чтобы функция стала непрерывной?


Задание 23: Дана функция $f(x)=\begin{cases}ax+b, & x<1\\ 3, & x=1\\ x^2+1, & x>1\end{cases}$. Можно ли подбором $a,b$ сделать её непрерывной в точке $x=1$? Если нет — какой минимальный тип разрыва достижим?


Задание 24: Семейство сигмоид $\sigma_k(x)=\dfrac{1}{1+e^{-kx}}$ при $k\to+\infty$. Показать, что поточечный предел при $x\ne0$ совпадает со ступенчатой функцией, и объяснить, почему на практике используют не сам предел, а сигмоиду при конечном $k$.


Задание 25: Определить тип разрыва $f(x)=\operatorname{arctan}\left(\dfrac1x\right)$ в точке $x=0$.


Задание 26: Дискретная случайная величина $X$ принимает значения $0,1,2$ с вероятностями $0{,}2$, $0{,}5$, $0{,}3$. Её функция распределения $F(x)=P(X\le x)$. Определить тип разрыва $F$ в точке $x=1$ и величину скачка.


Задание 27: Определить тип разрыва $f(x)=2^{1/x}$ в точке $x=0$, обосновав отдельно поведение слева и справа.


Задание 28: Найти все точки разрыва функции $f(x)=\dfrac{x^2-1}{(x-1)(x^2-4)}$ и классифицировать каждую.


Задание 29: Функция $|x|$ имеет производную $f'(x)=\begin{cases}-1, & x<0\\1, & x>0\end{cases}$ (не определена в $x=0$). Классифицировать разрыв этой производной и сравнить со скачком производной ReLU из задания 19.


Задание 30 (итоговая): Дана функция

$$f(x) = \begin{cases} \dfrac{\sin(3x)}{x}, & x<0 \\ a, & x=0 \\ \dfrac{e^{bx}-1}{x}, & x>0\end{cases}$$

Найти все пары $(a,b)$, при которых $f$ непрерывна в $x=0$, и определить тип разрыва при произвольных $a,b$, не удовлетворяющих этому условию.


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

Ошибка 1. Считают, что если функция не определена в точке, то это автоматически разрыв второго рода.

Как выглядит: видят, что $f(x_0)$ не задана, и сразу пишут «разрыв второго рода, функция не существует в точке».

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

Как правильно: тип разрыва определяется поведением пределов, а не тем, определена ли функция в самой точке. Если предел существует и конечен, а функция просто не задана — это устранимый разрыв, самый безобидный из трёх, как в задачах 1, 5, 7, 10.

Ошибка 2. Думают, что в точке скачка односторонние пределы вообще не существуют.

Как выглядит: про разрыв первого рода говорят «там пределов нет, функция просто прыгает».

Почему возникает: слово «скачок» ассоциируется с чем-то неопределённым и хаотичным.

Как правильно: оба односторонних предела при разрыве первого рода прекрасно существуют и конечны — просто они не равны друг другу. Хаос и неопределённость — это как раз признак разрыва второго рода, а не первого.

Ошибка 3. Проверяют только один из двух односторонних пределов и на этом успокаиваются.

Как выглядит: для $f(x)=e^{1/x}$ в $x=0$ вычисляют левый предел (получают $0$), делают вывод «всё в порядке», забыв проверить правый.

Почему возникает: левая сторона часто считается «типичным представителем» поведения функции, и кажется, что этого достаточно.

Как правильно: для классификации разрыва обязательно нужны оба односторонних предела. Разрыв второго рода возникает, даже если только один из двух пределов «плохой» — как в задачах 13 и 27, где именно асимметрия между сторонами и создаёт содержательный ответ.

Ошибка 4. Путают «предел не существует» (колебательный разрыв) с «предел равен бесконечности» (полюс), считая их одним и тем же явлением.

Как выглядит: про $\sin(1/x)$ пишут «предел равен бесконечности», хотя сама функция ограничена значениями от $-1$ до $1$ и никуда не «улетает».

Почему возникает: оба случая относят к разрыву второго рода, и кажется, что раз категория одна, то и механизм один.

Как правильно: внутри разрыва второго рода стоит различать два разных сценария — полюс (предел бесконечен, функция неограниченно растёт, как $1/x$) и колебательный разрыв (предел просто не существует из-за бесконечных осцилляций, хотя функция может оставаться ограниченной, как $\sin(1/x)$). Формально оба попадают под одно определение, но природа у них разная.

Ошибка 5. Автоматически доопределяют функцию пределом, не проверив заранее, что этот предел вообще существует.

Как выглядит: для $f(x)=\sin(1/x)$ пытаются «доопределить» $f(0)$ каким-нибудь числом вроде $0$, считая разрыв устранимым.

Почему возникает: привычка из лёгких примеров $\frac00$-типа, где доопределение почти всегда срабатывает.

Как правильно: прежде чем доопределять, всегда сначала проверь, что оба односторонних предела существуют, конечны и равны между собой. Если предел не существует (как в задаче 16), никакое доопределение не спасёт — это разрыв второго рода.

Ошибка 6. Считают, что раз ReLU «негладкая» в нуле, значит она разрывна и должна страдать теми же проблемами, что и ступенчатая активация.

Как выглядит: делают вывод «ReLU нельзя использовать в градиентном спуске по той же причине, что и ступеньку».

Почему возникает: смешивают понятия «разрыв функции» и «недифференцируемость функции» — это разные вещи.

Как правильно: сама $\operatorname{ReLU}$ непрерывна всюду (проверено в задаче 19) — разрыва у неё нет вообще, есть лишь одна точка негладкости. Это принципиально мягче проблемы ступеньки Хевисайда, у которой разрывна сама активация.

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

  • Точка разрыва — это нарушение хотя бы одного из трёх условий непрерывности: существование предела, определённость функции в точке, равенство предела и значения функции.

  • Устранимый разрыв: оба односторонних предела существуют, конечны и равны между собой, но функция либо не определена в точке, либо задана неверным значением. Лечится доопределением $f(x_0):=\lim_{x\to x_0} f(x)$.

  • Разрыв первого рода (скачок): оба односторонних предела существуют и конечны, но не равны друг другу. Величина скачка $=|\lim_{x\to x_0^+}f(x)-\lim_{x\to x_0^-}f(x)|$. Такой разрыв в принципе не устранить переопределением одной точки.

  • Разрыв второго рода: хотя бы один из односторонних пределов бесконечен или вовсе не существует. Внутри категории различай полюс (бесконечный предел) и колебательный разрыв (предел не существует из-за осцилляций).

  • Алгоритм классификации разрыва — всегда три шага: найти оба односторонних предела → сравнить их между собой (равны/не равны/бесконечны/не существуют) → при необходимости сравнить с $f(x_0)$.

  • Функция Дирихле — исторически первый пример функции, разрывной в каждой точке числовой прямой (Дирихле, 1829); критерий Римана связывает интегрируемость функции с «размером» множества её точек разрыва.

  • Ступенчатая функция активации (Хевисайд) первых нейросетей имеет разрыв первого рода в нуле; вне точки разрыва её производная тождественно равна нулю, что блокирует градиентный спуск — одна из причин перехода к сигмоиде.

  • $\operatorname{ReLU}$ сама непрерывна всюду; разрыв первого рода есть только у её производной, и это гораздо более мягкая проблема, решаемая выбором субградиента в единственной точке.

  • Функция распределения дискретной случайной величины имеет разрыв первого рода в каждой точке носителя распределения, а величина скачка равна вероятности этого значения.

  • Выражения вида $-\ln(p)$ и деление на близкое к нулю стандартное отклонение (батч-нормализация) — источники разрывов второго рода в функциях потерь; на практике их избегают клиппингом и добавлением $\varepsilon$.

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

Что нужно было знать до этого урока

Этот урок целиком опирается на аппарат урока 183 «Непрерывность: строгое определение» — само определение непрерывности через равенство предела и значения функции, а также на понятие односторонних пределов из более ранних уроков про пределы функций. Без строгого понимания того, что такое $\lim_{x\to x_0^-} f(x)$ и $\lim_{x\to x_0^+} f(x)$ по отдельности, невозможно провести классификацию, которой посвящён весь сегодняшний урок. Также пригодилась техника вычисления пределов через разложение на множители, домножение на сопряжённое и таблицу эквивалентных бесконечно малых — весь этот инструментарий из урока про замечательные пределы использовался в разборе примеров устранимого разрыва.

Что изучить дальше

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

Где это нужно в жизни

🤖 ML/AI. Разрыв первого рода ступенчатой активации — один из исторических поворотных моментов в развитии нейросетей, разобранный подробно в этом уроке; разрыв второго рода логарифма при нулевой вероятности — источник инженерных практик клиппинга в функциях потерь; функция распределения дискретной случайной величины со скачками — фундамент теории вероятностей, на которой строится вся статистика в машинном обучении.

📊 Статистика и анализ данных. Функции распределения случайных величин, ступенчатые эмпирические функции распределения (empirical CDF) — везде разрывы первого рода со скачками, равными вероятностной массе.

⚙️ Теория управления и электроника. Переключатели, реле, пороговые устройства моделируются функцией Хевисайда — тем же разрывом первого рода, что и в примере со ступенчатой активацией; резонансные и неустойчивые режимы систем управления могут демонстрировать поведение, похожее на колебательный разрыв второго рода.

💰 Финансы. Барьерные и цифровые (бинарные) опционы имеют разрывную функцию выплаты — цена опциона может резко «перепрыгивать» при пересечении барьера, что математически моделируется как разрыв первого рода.

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

  • Функция Дирихле, разрывная абсолютно всюду, была предложена в 1829 году не как курьёз, а как рабочий инструмент — Дирихле изучал, при каких условиях сходится ряд Фурье, и ему нужен был пример «плохой» функции, чтобы понять границы применимости своей же теоремы.

  • Ещё до Дирихле, в 1826 году, Абель построил пример суммы бесконечного ряда из идеально гладких, бесконечно дифференцируемых функций (тригонометрических многочленов), которая сходится к разрывной функции — сумма «хороших» слагаемых внезапно порождает скачок буквально из ниоткуда.

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

  • Ограничения персептронов с пороговой (ступенчатой) активацией, показанные Минским и Пейпертом в 1969 году, вместе с проблемой нулевого градиента у такой активации, на десятилетие охладили интерес к исследованиям искусственных нейросетей — период, который в истории ИИ называют «первой зимой ИИ».

  • Величина скачка функции распределения дискретной случайной величины в точке $x_0$ в точности равна вероятности $P(X=x_0)$ — это не совпадение, а прямое следствие определения $F(x)=P(X\le x)$: чем «тяжелее» точка по вероятностной массе, тем больше визуальный скачок графика функции распределения.

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

  1. Всегда начинай с вопроса «существуют ли оба односторонних предела и конечны ли они?» — это единственный вопрос, который сразу отсекает разрыв второго рода от двух более лёгких категорий и экономит время на дальнейшем анализе.

  2. Для рациональных функций вида $\dfrac{P(x)}{Q(x)}$ в точке, где обнуляется знаменатель, сразу проверяй, обнуляется ли там и числитель. Если да — почти наверняка устранимый разрыв, раскладывай оба многочлена на множители и сокращай общий корень.

  3. При корнях в числителе или знаменателе, дающих $\frac00$, домножай на сопряжённое выражение — это надёжно превращает иррациональную неопределённость в рациональную, которую уже можно сократить.

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

  5. Увидел $\sin(1/x)$, $\cos(1/x)$ или похожую осциллирующую конструкцию без «гасящего» множителя перед иксом — сразу подозревай отсутствие предела. Проверь двумя разными последовательностями, стремящимися к точке (как в задачах 16 и 21) — если значения вдоль них стремятся к разным числам, предела нет.

  6. Запомни готовую формулу для скачка: скачок $=\left|\lim_{x\to x_0^+}f(x)-\lim_{x\to x_0^-}f(x)\right|$ — не нужно каждый раз «изобретать» эту идею заново, просто вычисляй оба предела и бери модуль разности.

  7. Для кусочных функций у точки стыка веток — сначала подставь $x_0$ в обе формулы отдельно (как если бы каждая ветка была определена на всей прямой), а потом сравнивай результаты. Это быстрее, чем формально расписывать пределы через $\varepsilon$-$\delta$ на каждом шаге.

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

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

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

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