Непрерывность функции: когда график можно нарисовать не отрывая карандаша 🖊️
В 1958 году Фрэнк Розенблатт собрал перцептрон — машину, которая училась различать картинки. Внутри был линейный сумматор и решающий элемент: если сумма больше порога — выдай $1$, иначе $0$. Всё логично, всё работает, машина даже чему-то училась. Но обучалась она по специальному правилу «ошибся — подвинь веса», а не тем способом, которым учатся сегодня все нейросети. Прошло почти тридцать лет, прежде чем в 1986 году ступеньку заменили на сигмоиду — и вот тогда заработал метод обратного распространения ошибки, а вместе с ним и вся современная нейросетевая математика.
Что изменила эта замена? Ровно одно свойство функции. Ступенька $H(x)$ разрывна в нуле: слева от нуля она равна $0$, справа — $1$, и никакого плавного перехода между ними нет. Сигмоида $\sigma(x) = \frac{1}{1+e^{-x}}$ делает ту же работу — переводит любое число в интервал от нуля до единицы, — но делает это непрерывно. И оказалось, что вся разница между «машина, которая почти не учится» и «машина, которая выучивает язык» упирается в это самое свойство.
Непрерывность — понятие, которое кажется до смешного простым: «график можно нарисовать не отрывая карандаша от бумаги». Но за этой картинкой стоит одна из самых важных конструкций математического анализа. Из непрерывности следует, что уравнение имеет корень, — и на этом стоит бинарный поиск. Из непрерывности следует, что у функции на отрезке есть максимум, — и на этом стоит вся теория оптимизации. Отсутствие непрерывности объясняет, почему метрику accuracy нельзя оптимизировать напрямую, а logloss — можно. И понимание того, где именно функция теряет непрерывность, объясняет половину странного поведения численных алгоритмов.
В прошлом уроке мы разобрались с пределом функции: научились отвечать на вопрос «к чему стремится $f(x)$, когда $x$ подбирается к точке $a$». Сегодня мы зададим следующий вопрос, и он окажется решающим: а совпадает ли то, к чему функция стремится, с тем, что в этой точке реально написано? Если совпадает — функция непрерывна. Если нет — у нас разрыв, и вся задача в том, чтобы понять, какой именно.
🎯 Ты узнаешь:
- Строгое определение непрерывности в точке через предел и три условия, которые обязаны выполниться одновременно
- Что такое односторонняя непрерывность и что означает «непрерывна на промежутке»
- Полную классификацию точек разрыва: устранимый, первого рода со скачком, второго рода — и как за минуту определить тип
- Почему все элементарные функции непрерывны на своей области определения и как из этого мгновенно получать ответы
- Теорему Больцано-Коши о промежуточном значении и вырастающий из неё метод половинного деления — рабочий алгоритм поиска корня
- Теорему Вейерштрасса о наибольшем и наименьшем значении и почему в ней принципиально важно слово «отрезок»
- Почему ReLU непрерывна, но с изломом; почему перцептрон не обучался градиентом; почему accuracy не оптимизируется, а logloss оптимизируется
История: откуда это взялось?
Весь XVIII век математики жили с интуитивным понятием непрерывности и особо не переживали. Леонард Эйлер в 1748 году определял непрерывную функцию как ту, что «задана одним аналитическим выражением на всём протяжении», — то есть непрерывность была свойством формулы, а не поведения. По Эйлеру функция $y = |x|$ была разрывной (она же задаётся двумя формулами!), хотя её график рисуется одной линией без отрыва карандаша. Спор о том, что считать функцией и что считать непрерывностью, тянулся десятилетиями и особенно обострился в задаче о колеблющейся струне, где физика упрямо требовала кусочно-заданных решений.
Разрубил узел чешский священник и математик Бернард Больцано. В 1817 году он выпустил работу с длинным названием, суть которого сводилась к одному: доказать чисто аналитически, без ссылок на геометрию, что между двумя значениями разного знака непрерывная функция обязана иметь корень. Больцано первым сформулировал непрерывность через приращения: функция непрерывна, если малое изменение аргумента вызывает сколь угодно малое изменение значения. Работа вышла в Праге, почти никем не была прочитана, и на полвека выпала из оборота. Через четыре года, в 1821-м, Огюстен Луи Коши в «Курсе анализа» дал по существу то же определение — и вот его-то версия и разошлась по всей Европе, потому что Коши читал лекции в Политехнической школе и его учебник стал стандартом. Окончательную шлифовку на языке $\varepsilon$-$\delta$ сделал Карл Вейерштрасс в 1860-х: именно в его формулировке непрерывность живёт в учебниках до сих пор.
А потом случилось то, ради чего вся эта строгость и затевалась. В 1872 году Вейерштрасс предъявил функцию, непрерывную в каждой точке прямой и при этом не имеющую касательной ни в одной точке — бесконечно изломанную. Интуиция «непрерывное значит гладкое» рухнула публично и окончательно. Чарльз Эрмит писал, что «с ужасом отворачивается от этой прискорбной язвы функций без производных». Сегодня эта «язва» — рабочий инструмент: фрактальные ландшафты в графике, модели броуновского движения в финансах, и та самая ReLU, у которой в нуле честный излом, — прямые наследники вейерштрассовского открытия. Мостик в сегодня получается коротким: как только мы научились аккуратно отделять непрерывность от гладкости, стало можно строить функции, которые непрерывны там, где нужно алгоритму, и изломаны там, где это выгодно для вычислений.
Непрерывность в точке: три условия
Интуиция: предсказание и факт
Представь, что ты смотришь на график функции и приближаешься к точке $x_0$ слева и справа. Ты видишь, куда всё идёт, и мысленно достраиваешь: «значение должно быть примерно $L$». Это и есть предел — предсказание по окрестности точки. А потом ты смотришь, что реально написано в самой точке: $f(x_0)$. Это факт.
Непрерывность — это ровно совпадение предсказания и факта. Функция непрерывна в точке, если по её поведению вокруг точки можно правильно угадать значение в самой точке. И наоборот: разрыв — это место, где окрестность обманывает, где значение в точке нельзя восстановить по соседям.
Такая формулировка сразу объясняет, почему непрерывность так дорога вычислителям. Компьютер никогда не считает в самой точке — он считает в близких точках: округляет, аппроксимирует, идёт маленькими шагами. Если функция непрерывна, ошибка входа даёт малую ошибку выхода. Если нет — сколь угодно малая погрешность в аргументе может отправить результат на другой этаж.
Тут же становится видно, что метафора из заголовка урока — «нарисовать не отрывая карандаша» — хороша, но не идеальна. Она отлично работает как первое приближение, и с ней стоит подходить к любому графику. Но есть функции, которые непрерывны и при этом нарисовать их карандашом физически невозможно: тот же пример Вейерштрасса изломан на каждом масштабе. Так что карандаш — для интуиции, а определение — для работы.
Определение: Функция $f$ называется непрерывной в точке $x_0$, если выполнены три условия одновременно:
- функция определена в точке $x_0$ и в некоторой её окрестности;
- существует конечный предел $\lim\limits_{x \to x_0} f(x)$;
- этот предел равен значению функции в точке: $\lim\limits_{x \to x_0} f(x) = f(x_0)$.
Три условия — это не педантизм, а три разных способа сломаться, и каждый встречается в жизни. Первое нарушается, когда в формуле деление на ноль или корень из отрицательного. Второе — когда функция слева и справа ведёт себя по-разному или вообще бешено колеблется. Третье — самое коварное: функция определена, предел есть, но кто-то «вручную» приписал в точке не то значение.
Есть эквивалентная запись, которая пригодится дальше. Обозначим приращение аргумента $\Delta x = x - x_0$, а приращение функции $\Delta y = f(x_0 + \Delta x) - f(x_0)$. Тогда непрерывность в точке означает
$$\lim_{\Delta x \to 0} \Delta y = 0,$$то есть бесконечно малому изменению аргумента отвечает бесконечно малое изменение функции. Это формулировка Больцано, и именно она — прямой мостик к следующему уроку: там мы будем смотреть не просто «стремится ли $\Delta y$ к нулю», а «как быстро, в сравнении с $\Delta x$».
И третья форма записи, самая компактная и самая полезная на практике:
$$\lim_{x \to x_0} f(x) = f\left(\lim_{x \to x_0} x\right).$$Читается так: у непрерывной функции знак предела и знак функции можно менять местами. Предел можно «занести внутрь». Это свойство мы будем эксплуатировать постоянно.
Односторонняя непрерывность
Иногда точка стоит на краю области определения, и подойти к ней можно только с одной стороны. Для таких случаев определение расщепляется.
Определение: Функция $f$ непрерывна в точке $x_0$ слева, если $\lim\limits_{x \to x_0-0} f(x) = f(x_0)$, и непрерывна справа, если $\lim\limits_{x \to x_0+0} f(x) = f(x_0)$.
Функция непрерывна в точке тогда и только тогда, когда она непрерывна в ней и слева, и справа:
$$f(x_0-0) = f(x_0+0) = f(x_0).$$
Именно эта тройная запись — рабочий инструмент для всех кусочно-заданных функций. Схема всегда одна: посчитать левый предел, посчитать правый предел, посчитать значение, сравнить три числа.
Примеры с разбором
Пример 1 (простой). Проверим непрерывность $f(x) = 3x^2 - x + 5$ в точке $x_0 = 2$.
Шаг 1. Функция определена везде — это многочлен, никаких делений и корней. Первое условие выполнено, $f(2) = 3 \cdot 4 - 2 + 5 = 15$.
Шаг 2. Считаем предел. По теоремам о пределах из прошлого урока предел суммы равен сумме пределов, предел произведения — произведению:
$$\lim_{x \to 2}(3x^2 - x + 5) = 3 \cdot 2^2 - 2 + 5 = 15.$$Шаг 3. Сравниваем: $15 = 15$. Все три условия выполнены.
Ответ: функция непрерывна в точке $x_0 = 2$. И тем же рассуждением — в любой другой точке.
Пример 2 (средний). Исследуем непрерывность в точке $x_0 = 1$ функции
$$f(x) = \begin{cases} x^2 + 1, & x < 1, \\ 4, & x = 1, \\ 3x - 1, & x > 1.\end{cases}$$Шаг 1. Значение в точке задано явно: $f(1) = 4$. Первое условие выполнено.
Шаг 2. Левый предел. При $x < 1$ работает первая ветка:
$$f(1-0) = \lim_{x \to 1-0}(x^2+1) = 1 + 1 = 2.$$Шаг 3. Правый предел. При $x > 1$ работает третья ветка:
$$f(1+0) = \lim_{x \to 1+0}(3x-1) = 3 - 1 = 2.$$Шаг 4. Односторонние пределы совпали, значит двусторонний предел существует и равен $2$. Второе условие выполнено.
Шаг 5. Сравниваем с значением: $\lim\limits_{x \to 1} f(x) = 2$, а $f(1) = 4$. Не совпадает — третье условие нарушено.
Ответ: функция разрывна в точке $x_0=1$. Разрыв «рукотворный»: достаточно переопределить $f(1) = 2$, и непрерывность восстановится. Это устранимый разрыв, к классификации мы сейчас перейдём.
Пример 3 (сложный). При каких $a$ и $b$ функция непрерывна на всей числовой прямой?
$$f(x) = \begin{cases} \dfrac{\sin x}{x}, & x < 0, \\ a, & x = 0, \\ b x + \cos x, & x > 0.\end{cases}$$Шаг 1. Вне точки $x_0 = 0$ всё в порядке: при $x<0$ это частное непрерывных функций с ненулевым знаменателем, при $x>0$ — сумма непрерывных. Единственное подозрительное место — ноль.
Шаг 2. Левый предел. Первый замечательный предел из прошлого урока:
$$f(0-0) = \lim_{x \to 0-0}\frac{\sin x}{x} = 1.$$Шаг 3. Правый предел:
$$f(0+0) = \lim_{x \to 0+0}(bx + \cos x) = b \cdot 0 + \cos 0 = 1.$$Он равен $1$ при любом $b$ — слагаемое $bx$ обнуляется независимо от коэффициента.
Шаг 4. Условие непрерывности: $f(0-0) = f(0+0) = f(0)$, то есть $1 = 1 = a$.
Ответ: $a = 1$, $b$ — любое число. Здесь важна ловушка: параметр в условии стоит, но на непрерывность не влияет. Не всякая буква в кусочной функции обязана определяться из склейки.
Почему это важно
Определение через три условия — это готовый алгоритм проверки, и он окупается сразу. В любой прикладной задаче, где функция задана кусочно (тариф с порогами, штраф с разными режимами, функция потерь с переключением, расписание learning rate с рестартами), вопрос «непрерывна ли склейка» решается за три строчки: левый предел, правый предел, значение.
И этот же вопрос — не академический. Разрыв в тарифной сетке означает, что кто-то заработает больше, если заработает меньше. Разрыв в функции потерь означает, что оптимизатор может застрять или прыгать. Разрыв в модели физического процесса обычно означает, что модель неверна. Умение за минуту проверить склейку — это умение находить такие дыры до того, как они найдут тебя.
Точки разрыва и их классификация
Интуиция: три способа сломаться
Если функция не непрерывна в точке $x_0$, а рядом с этой точкой определена, то $x_0$ называют точкой разрыва. Разрывы бывают разного качества, и качество определяется одним вопросом: что происходит с односторонними пределами?
Представь три ситуации в метро. Первая: поезд идёт нормально, но в расписании опечатка — одна станция подписана неправильно. Всё поправимо одним исправлением, движение непрерывное. Вторая: между станциями путь физически разорван, и на другую сторону нужно перепрыгнуть на другой уровень — прыжок конечный, но реальный. Третья: рельсы уходят в бесконечность или начинают вибрировать с бесконечной частотой — никакого «другого края» просто нет.
Это ровно три типа разрыва.
Определение: Пусть $x_0$ — точка разрыва функции $f$.
- Если оба односторонних предела $f(x_0-0)$ и $f(x_0+0)$ существуют и конечны, то $x_0$ — точка разрыва первого рода. Внутри этого случая:
- если $f(x_0-0) = f(x_0+0)$ (то есть двусторонний предел есть, но не равен $f(x_0)$ или функция в точке не определена), разрыв называется устранимым;
- если $f(x_0-0) \neq f(x_0+0)$, разрыв называется скачком, а число $\delta = f(x_0+0) - f(x_0-0)$ — скачком функции в точке.
- Если хотя бы один из односторонних пределов не существует или бесконечен, то $x_0$ — точка разрыва второго рода.
Терминологическая деталь, из-за которой часто спорят: в части учебников устранимый разрыв выделяют в отдельный, третий тип, а «первым родом» называют только скачок. Содержательно разницы нет — важно, что ты умеешь посчитать оба односторонних предела и сказать, конечны они и равны ли. Формулируй ответ развёрнуто: «оба односторонних предела конечны и равны $2$, значение в точке $4$ — устранимый разрыв», и никакая терминологическая школа тебя не поймает.
Слово «устранимый» — не фигура речи, а инструкция. Если разрыв устранимый, функцию можно доопределить или переопределить в одной точке значением предела, и она станет непрерывной. Ни со скачком, ни с разрывом второго рода этот фокус не проходит: там менять пришлось бы не одну точку, а поведение вокруг неё.
Примеры с разбором
Пример 1 (простой): устранимый разрыв. Исследуем $f(x) = \dfrac{x^2-9}{x-3}$ в точке $x_0 = 3$.
Шаг 1. В точке $x_0=3$ знаменатель обращается в ноль, числитель тоже: $f(3) = \frac{0}{0}$ — не определено. Первое условие нарушено, значит разрыв точно есть.
Шаг 2. Ищем предел. Раскладываем числитель: $x^2 - 9 = (x-3)(x+3)$. При $x \neq 3$ множитель $x-3$ сокращается:
$$\lim_{x \to 3}\frac{(x-3)(x+3)}{x-3} = \lim_{x \to 3}(x+3) = 6.$$Шаг 3. Односторонние пределы оба равны $6$ (мы даже не разделяли их — сокращение работает с обеих сторон). Конечны и равны.
Вывод: $x_0=3$ — точка устранимого разрыва. Доопределим $f(3) = 6$ — и получим функцию $g(x) = x+3$, непрерывную всюду.
Ответ: устранимый разрыв, устраняется значением $f(3)=6$.
Пример 2 (средний): скачок. Исследуем $f(x) = \dfrac{|x-2|}{x-2}$ в точке $x_0 = 2$.
Шаг 1. В точке $x_0=2$ знаменатель ноль — функция не определена.
Шаг 2. Раскрываем модуль. При $x > 2$ имеем $|x-2| = x-2$, значит $f(x) = 1$. При $x < 2$ имеем $|x-2| = -(x-2)$, значит $f(x) = -1$.
Шаг 3. Односторонние пределы:
$$f(2-0) = \lim_{x \to 2-0}(-1) = -1, \qquad f(2+0) = \lim_{x \to 2+0} 1 = 1.$$Шаг 4. Оба конечны, но различны. Это скачок. Величина скачка:
$$\delta = f(2+0) - f(2-0) = 1 - (-1) = 2.$$Ответ: разрыв первого рода (скачок) величиной $2$. Никаким доопределением в точке его не убрать: какое бы число мы ни поставили в $f(2)$, оно не совпадёт одновременно с $-1$ и с $1$.
Пример 3 (сложный): разрыв второго рода двух видов. Исследуем все точки разрыва функции
$$f(x) = \frac{x^2-4}{x^2 - x - 2}.$$Шаг 1. Ищем нули знаменателя: $x^2 - x - 2 = 0$. По теореме Виета корни $x=2$ и $x=-1$, значит $x^2-x-2 = (x-2)(x+1)$. Подозрительные точки: $x=2$ и $x=-1$.
Шаг 2. Раскладываем числитель: $x^2-4 = (x-2)(x+2)$. Итого при $x \neq 2$ и $x \neq -1$:
$$f(x) = \frac{(x-2)(x+2)}{(x-2)(x+1)} = \frac{x+2}{x+1}.$$Шаг 3. Точка $x=2$. После сокращения предел считается подстановкой:
$$\lim_{x \to 2} f(x) = \frac{2+2}{2+1} = \frac{4}{3}.$$Оба односторонних предела конечны и равны — устранимый разрыв, лечится значением $f(2) = \frac43$.
Шаг 4. Точка $x=-1$. Здесь сокращение не помогло, знаменатель $x+1$ обнуляется, а числитель $x+2 \to 1 \neq 0$. Считаем односторонние пределы. При $x \to -1-0$ (например, $x = -1{,}01$) знаменатель $x+1$ отрицателен и мал, числитель положителен:
$$f(-1-0) = -\infty.$$При $x \to -1+0$ (например, $x=-0{,}99$) знаменатель положителен и мал:
$$f(-1+0) = +\infty.$$Вывод: оба односторонних предела бесконечны — это разрыв второго рода, и прямая $x=-1$ является вертикальной асимптотой.
Ответ: $x=2$ — устранимый разрыв; $x=-1$ — разрыв второго рода (бесконечный), вертикальная асимптота.
Пример 4 (сложный): разрыв второго рода без бесконечности. Исследуем $f(x) = \sin\dfrac{1}{x}$ в точке $x_0=0$ (доопределив $f(0)=0$).
Шаг 1. Функция определена везде, кроме нуля, и мы приписали ей $f(0)=0$.
Шаг 2. Есть ли предел при $x \to 0$? Возьмём две последовательности, сходящиеся к нулю. Первая: $x_n = \frac{1}{\pi n}$. Тогда $\frac{1}{x_n} = \pi n$ и $\sin(\pi n) = 0$ для всех $n$, то есть $f(x_n) = 0 \to 0$.
Шаг 3. Вторая: $t_n = \dfrac{1}{\frac{\pi}{2} + 2\pi n}$. Тогда $\sin\frac{1}{t_n} = \sin\left(\frac{\pi}{2} + 2\pi n\right) = 1$, то есть $f(t_n) = 1 \to 1$.
Шаг 4. Обе последовательности стремятся к нулю, а значения функции по ним стремятся к разным числам. Значит предела при $x \to 0$ не существует — ни двустороннего, ни одностороннего (то же рассуждение работает отдельно справа и слева).
Вывод: это разрыв второго рода, хотя функция ограничена: $|f(x)| \le 1$ всюду. Бесконечность для второго рода не обязательна, достаточно отсутствия предела.
Ответ: $x_0 = 0$ — точка разрыва второго рода; функция бесконечно осциллирует между $-1$ и $1$.
Почему это важно
Классификация — это не бюрократия, а диагноз, из которого следует лечение.
- Устранимый разрыв — это, как правило, артефакт формы записи, а не свойство процесса. В коде он выглядит как деление на ноль в единственной точке:
sin(x)/xприx=0дастnan, хотя правильный ответ — единица. Лечится явной проверкой на границе или переходом к эквивалентной формуле. Так же лечится знаменитая численная беда:log(1+x)при крошечномxтеряет точность, поэтому в библиотеках есть отдельная функцияlog1p. - Скачок — это обычно настоящее свойство модели, и с ним надо считаться. Пороги, тарифы, решающие правила классификатора — все они дают скачки, и именно скачки делают функцию неоптимизируемой градиентными методами.
- Разрыв второго рода — сигнал тревоги. Бесконечный разрыв означает вертикальную асимптоту и переполнение в вычислениях:
exp(1000)дастinf, и дальше всё сломается. Осциллирующий разрыв означает, что численный метод будет вести себя непредсказуемо: сколько ни уменьшай шаг, ответ не стабилизируется.
Непрерывность на промежутке
Интуиция: от точки к линии
Непрерывность в одной точке — свойство локальное. Но говорить обычно хочется про весь график сразу: «эта функция непрерывна», без уточнений. Переход от точки к промежутку делается очевидным образом, с одной аккуратностью на краях.
Определение: Функция $f$ непрерывна на интервале $(a;b)$, если она непрерывна в каждой точке этого интервала.
Функция $f$ непрерывна на отрезке $[a;b]$, если она непрерывна в каждой внутренней точке интервала $(a;b)$, непрерывна справа в точке $a$ и непрерывна слева в точке $b$.
Оговорка про края не формальность: в точке $a$ функция просто не определена слева, требовать там двустороннего предела бессмысленно. Поэтому на концах отрезка достаточно односторонней непрерывности.
И тут же важнейшее различие, которое дальше будет решать всё: отрезок $[a;b]$ и интервал $(a;b)$ — это принципиально разные вещи. Отрезок замкнут (содержит свои концы) и ограничен. Все сильные теоремы этого урока — Вейерштрасса и Больцано-Коши — формулируются именно для отрезка, и стоит убрать хотя бы один конец, как они разваливаются. Мы это увидим на контрпримерах.
Пример из практики. Функция $f(x) = \frac1x$ непрерывна на $(0;+\infty)$ и на $(-\infty;0)$ — в каждой точке своей области определения. Но фраза «$f$ непрерывна на $\mathbb{R}$» неверна, и не потому, что в нуле разрыв, а потому, что в нуле функция вообще не определена: точку $x=0$ обычно называют точкой разрыва второго рода, имея в виду поведение около неё. Формулируй так: «$\frac1x$ непрерывна на всей своей области определения, а $x=0$ — точка разрыва второго рода».
Какие функции непрерывны: три теоремы, закрывающие 95% задач
Проверять три условия для каждой функции руками — путь долгий. На практике работают три утверждения, которые вместе покрывают почти всё, что встретится.
Теорема 1: арифметика непрерывных
Теорема (арифметические операции). Если функции $f$ и $g$ непрерывны в точке $x_0$, то в этой точке непрерывны и функции
$$f(x) \pm g(x), \qquad f(x)\cdot g(x), \qquad \frac{f(x)}{g(x)} \ \ \text{(при } g(x_0) \neq 0).$$
Доказательство целиком лежит в теоремах о пределах из прошлого урока. Например, для суммы: предел суммы равен сумме пределов, значит
$$\lim_{x \to x_0}\big(f(x)+g(x)\big) = \lim_{x \to x_0}f(x) + \lim_{x \to x_0}g(x) = f(x_0)+g(x_0),$$а это и есть определение непрерывности суммы в точке $x_0$. Ограничение $g(x_0)\neq 0$ у частного — не каприз: при $g(x_0)=0$ функция $\frac fg$ в точке просто не определена.
Теорема 2: композиция непрерывных
Теорема (о композиции). Если функция $g$ непрерывна в точке $x_0$, а функция $f$ непрерывна в точке $u_0 = g(x_0)$, то сложная функция $f(g(x))$ непрерывна в точке $x_0$, и
$$\lim_{x \to x_0} f\big(g(x)\big) = f\left(\lim_{x \to x_0} g(x)\right).$$
Читай эту формулу как разрешение заносить предел под знак непрерывной функции. Хочешь посчитать $\lim\limits_{x\to 3}\sqrt{x^2+7}$? Корень непрерывен в точке $16$, значит предел заносится внутрь: $\sqrt{\lim(x^2+7)} = \sqrt{16} = 4$. Никаких $\varepsilon$-$\delta$.
Внимание к порядку: непрерывность внешней функции проверяется не в точке $x_0$, а в точке $g(x_0)$. Это самое частое место, где путаются. Например, $f(u)=\frac1u$ и $g(x)=x^2-4$: композиция $\frac{1}{x^2-4}$ разрывна там, где $g(x)=0$, то есть при $x=\pm 2$, — хотя обе исходные функции в этих точках прекрасно себя чувствуют по отдельности.
Теорема 3: элементарные функции
Теорема. Всякая элементарная функция непрерывна в каждой точке своей области определения.
Под элементарными понимаются функции, собранные из констант, степенных, показательных, логарифмических, тригонометрических и обратных тригонометрических с помощью конечного числа арифметических операций и композиций. То есть — практически всё, что ты когда-либо писал формулой.
Практический вывод такой мощности, что его стоит выделить: чтобы найти точки разрыва элементарной функции, достаточно найти точки, где она не определена. Больше нигде разрывов быть не может. Алгоритм сводится к трём проверкам:
- знаменатель равен нулю;
- под корнем чётной степени отрицательное число (граница области определения);
- под логарифмом ноль или отрицательное число, либо аргумент тангенса вида $\frac{\pi}{2}+\pi k$.
Всё. Дальше остаётся только классифицировать найденные точки по односторонним пределам.
Примеры с разбором
Пример 1 (простой). Найдём точки разрыва $f(x) = \dfrac{2x+1}{x^2-5x+6}$.
Шаг 1. Функция элементарная, значит разрывы только там, где она не определена, то есть где знаменатель ноль.
Шаг 2. $x^2-5x+6=0$, по теореме Виета $x_1=2$, $x_2=3$.
Шаг 3. Числитель в этих точках: $2\cdot2+1=5 \neq 0$ и $2\cdot3+1=7\neq0$. Сокращения не будет, значит пределы бесконечны.
Ответ: две точки разрыва второго рода: $x=2$ и $x=3$; обе — вертикальные асимптоты.
Пример 2 (средний). Где непрерывна функция $f(x) = \ln(x^2-9) + \sqrt{5-x}$?
Шаг 1. Логарифм требует $x^2-9>0$, то есть $x<-3$ или $x>3$.
Шаг 2. Корень требует $5-x \ge 0$, то есть $x \le 5$.
Шаг 3. Пересекаем: $(-\infty;-3) \cup (3;5]$.
Шаг 4. На этом множестве функция элементарная и определена, значит непрерывна. В точке $x=5$ — непрерывность слева (справа функции нет).
Ответ: $f$ непрерывна на $(-\infty;-3) \cup (3;5]$, в точке $x=5$ — односторонне (слева).
Пример 3 (сложный). Проверим непрерывность сигмоиды $\sigma(x) = \dfrac{1}{1+e^{-x}}$ и softmax-подобной конструкции.
Шаг 1. Сигмоида — частное непрерывных: константа $1$ сверху, $1+e^{-x}$ снизу.
Шаг 2. Знаменатель: показательная функция $e^{-x}$ строго положительна при любом $x$, значит $1+e^{-x} > 1 > 0$ всегда. Условие $g(x_0)\neq0$ выполнено во всех точках.
Шаг 3. По теореме об арифметике сигмоида непрерывна на всей числовой прямой $\mathbb{R}$ — без единой точки разрыва.
Шаг 4. Теперь softmax для двух классов: $p_1(z) = \dfrac{e^{z_1}}{e^{z_1}+e^{z_2}}$. Знаменатель — сумма двух строго положительных чисел, ноль недостижим. Значит softmax тоже непрерывен всюду.
Ответ: и сигмоида, и softmax непрерывны на всей области определения — и именно поэтому они годятся в качестве «мягких» замен ступеньки. Заметь, что численная проблема с softmax (exp(1000) даёт inf) — это не разрыв функции, а ограничение формата чисел; лечится вычитанием максимума из всех $z_i$, которое значение softmax не меняет.
Почему это важно
Эти три теоремы превращают вопрос «где функция непрерывна» из исследования в поиск области определения — задачу, которую ты решаешь автоматически с восьмого класса. И они же объясняют, почему в глубоком обучении вообще можно говорить о непрерывности целой нейросети: сеть — это композиция линейных слоёв (непрерывны) и функций активации (непрерывны), повторённая сто раз. Композиция непрерывных непрерывна, значит и вся сеть как функция от входа и от весов непрерывна. Стоит вставить в середину хоть один разрывный блок — и это свойство теряется на всей глубине.
ReLU, ступенька и почему перцептрон не учился градиентом
Теперь применим весь аппарат к тому, с чего начинался урок.
ReLU: непрерывна, но с изломом
Самая популярная функция активации в нейросетях выглядит так:
$$\mathrm{ReLU}(x) = \max(0,\,x) = \begin{cases} 0, & x \le 0,\\ x, & x>0.\end{cases}$$Проверим непрерывность в единственной подозрительной точке $x_0=0$:
- значение: $f(0)=0$;
- левый предел: $\lim\limits_{x\to0-0} 0 = 0$;
- правый предел: $\lim\limits_{x\to0+0} x = 0$.
Все три числа равны нулю — ReLU непрерывна в нуле, а значит и на всей прямой. При этом график имеет очевидный излом: слева он идёт горизонтально, справа — под углом $45°$. Никакой единой касательной в нуле подобрать нельзя.
Вот здесь и лежит ключевая мысль урока: непрерывность и гладкость — разные свойства. Непрерывность запрещает разрывы, но ничего не говорит про изломы. Функция $y=|x|$, ReLU, Huber loss, функция потерь L1, кусочно-линейная интерполяция — все они непрерывны и все изломаны. То, что отделяет «просто непрерывное» от «гладкого», называется дифференцируемостью, и это ровно тема следующего урока.
Практически излом ReLU почти безвреден: он в одной точке, и вероятность попасть в неё ровно при вычислениях с плавающей точкой исчезающе мала. Библиотеки просто договариваются считать «наклон» в нуле равным нулю (или единице — это соглашение, а не математика). А вот разрыв был бы вреден по-настоящему.
Ступенька: почему её пришлось выбросить
Решающий элемент перцептрона — функция Хевисайда:
$$H(x) = \begin{cases} 0, & x<0,\\ 1, & x \ge 0.\end{cases}$$В нуле: $H(0-0)=0$, $H(0+0)=1$, $H(0)=1$. Односторонние пределы конечны, но различны — разрыв первого рода со скачком величиной $1$. Функция непрерывна справа и разрывна слева.
Теперь посмотри на всю картину. Вне нуля ступенька постоянна: она равна либо нулю, либо единице, и малое изменение весов её значение не меняет вообще. А в нуле она делает мгновенный прыжок. Получается функция, у которой нет ни одного места, где «чуть-чуть подвинуть параметры» давало бы «чуть-чуть изменить выход»: либо ничего не происходит, либо происходит всё сразу.
Метод обучения, который смотрит, куда двинуть веса, чтобы ошибка чуть уменьшилась, в такой ситуации не получает никакой информации. Сигнал «в какую сторону идти» тождественно нулевой почти везде и неопределённый в точке скачка. Именно поэтому Розенблатту пришлось придумывать отдельное правило обучения, работающее не с наклоном, а с фактом ошибки, — и именно поэтому многослойный перцептрон со ступеньками обучить было нечем. Замена $H(x)$ на непрерывную сигмоиду $\sigma(x)$ убрала разрыв: теперь малое изменение весов даёт малое, но ненулевое и информативное изменение выхода, и его можно протащить через все слои назад. Это и есть обратное распространение ошибки, 1986 год.
Проверим, что сигмоида действительно «сглаженная ступенька». При больших положительных $x$ величина $e^{-x}$ стремится к нулю, и $\sigma(x)\to1$. При больших отрицательных $e^{-x}$ огромно, и $\sigma(x)\to0$. В нуле $\sigma(0)=\frac{1}{1+1}=0{,}5$ — ровно посередине скачка. То есть сигмоида проходит через те же уровни, но переход занимает не нулевую ширину, а несколько единиц по $x$. За это и заплатили: точность порога обменяли на непрерывность.
Почему accuracy не оптимизируют, а logloss оптимизируют
Тот же сюжет, но на уровне метрик, и он объясняет вещь, которая новичков в ML честно ставит в тупик: почему модель обучают на одну функцию, а качество меряют другой.
Accuracy — доля правильных ответов. Пусть у модели есть скоринг $s(x)$ и порог $t$: объект относим к классу $1$, если $s(x)\ge t$. Тогда accuracy как функция порога $t$ — это кусочно-постоянная функция. Пока порог движется между двумя соседними значениями скоров, ни одно предсказание не меняется, и accuracy стоит на месте. Как только порог переходит через скор какого-то объекта, предсказание этого объекта переключается — и accuracy скачком меняется на $\frac1n$ (или $-\frac1n$).
Итог: функция $\mathrm{acc}(t)$ имеет ровно столько точек разрыва первого рода, сколько различных значений скоров в выборке, а между ними — идеально плоская. Оптимизировать её движением маленькими шагами невозможно в принципе: в любой точке локальная информация говорит «сдвиг ничего не меняет», а вся полезная информация сосредоточена в точках, где функция вообще разрывна. Ровно та же беда, что со ступенькой в перцептроне, — потому что accuracy и есть сумма ступенек.
Logloss (логистическая функция потерь) для одного объекта с меткой $y \in \{0,1\}$ и предсказанной вероятностью $p$:
$$L(p,y) = -\big(y\ln p + (1-y)\ln(1-p)\big).$$Это композиция логарифма (непрерывен на $(0;+\infty)$) с сигмоидой (непрерывна и принимает значения строго в $(0;1)$). По теореме о композиции logloss непрерывен по параметрам модели всюду, где сигмоида не выродилась в ровно $0$ или ровно $1$. А значит малое изменение весов даёт малое и предсказуемое изменение потерь — есть за что зацепиться и куда двигаться.
Отсюда и стандартная схема работы: обучаем на непрерывном суррогате, отчитываемся по разрывной метрике. Logloss, hinge loss, MSE — это суррогаты, специально подобранные так, чтобы быть непрерывными сверху-оценками того, что нам реально нужно. А accuracy, F1, precision считаются потом, на готовых предсказаниях, и подбираются перебором порога, а не градиентом.
Практическое следствие, которое стоит запомнить: если модель обучилась, а accuracy не растёт, бессмысленно «оптимизировать accuracy напрямую» — этой ручки не существует. Крутить надо либо суррогат (веса классов, форму лосса), либо порог отдельным перебором после обучения.
Теорема Больцано-Коши и метод половинного деления
Интуиция: нельзя перейти реку, не намокнув
Представь, что ты идёшь по непрерывной траектории с левого берега на правый. Утверждение «в какой-то момент ты был в воде» кажется настолько очевидным, что доказывать его странно. Именно этой очевидности Больцано и не доверял: он хотел вывести её из определения непрерывности, а не из картинки. И правильно делал — потому что для разрывной траектории утверждение просто ложно (телепортировался и не намок).
Теорема Больцано-Коши (о промежуточном значении). Пусть функция $f$ непрерывна на отрезке $[a;b]$ и на концах принимает значения разных знаков: $f(a)\cdot f(b) < 0$. Тогда существует точка $c \in (a;b)$, в которой $f(c)=0$.
Обобщённая формулировка. Если $f$ непрерывна на $[a;b]$, то она принимает все промежуточные значения между $f(a)$ и $f(b)$: для любого $C$, лежащего между $f(a)$ и $f(b)$, найдётся $c\in[a;b]$ с $f(c)=C$.
Обобщённая версия сводится к первой одним движением: рассмотри вспомогательную функцию $g(x)=f(x)-C$. Она непрерывна как разность непрерывных, и на концах у неё разные знаки. Значит у $g$ есть корень, а это и есть точка, где $f$ равна $C$.
Обрати внимание на два ограничения, каждое из которых существенно:
- Непрерывность обязательна. Функция $f(x)=\frac1x$ на «отрезке» $[-1;1]$ принимает значения $-1$ и $1$, но нуля не принимает никогда. Не противоречие: в нуле она разрывна (и не определена).
- Теорема утверждает существование, но не единственность. Корней может быть один, три, бесконечно много. Чтобы гарантировать единственность, нужна дополнительно монотонность.
Метод половинного деления: теорема как алгоритм
Доказательство теоремы Больцано-Коши конструктивно, и из него прямо выпадает рабочий алгоритм — метод половинного деления (он же метод бисекции, он же дихотомия).
Пусть $f$ непрерывна на $[a;b]$ и $f(a)\cdot f(b)<0$. Алгоритм:
- Возьми середину $m = \dfrac{a+b}{2}$ и посчитай $f(m)$.
- Если $f(m)=0$ — корень найден, конец.
- Если $f(a)\cdot f(m)<0$ — корень лежит в левой половине, положи $b := m$.
- Иначе корень в правой половине, положи $a := m$.
- Повторяй, пока длина отрезка не станет меньше требуемой точности $\varepsilon$.
После $n$ шагов длина отрезка равна $\dfrac{b-a}{2^n}$ — это геометрическая прогрессия со знаменателем $\frac12$ из урока 128. Отсюда мгновенно получается число итераций для заданной точности:
$$\frac{b-a}{2^n} \le \varepsilon \quad\Longleftrightarrow\quad n \ge \log_2\frac{b-a}{\varepsilon}.$$Для отрезка длины $1$ и точности $10^{-3}$ нужно $n \ge \log_2 1000 \approx 9{,}97$, то есть $10$ итераций. Для точности $10^{-6}$ — уже $20$. Метод медленный, зато абсолютно надёжный: он не может разойтись, ему не нужны производные, ему достаточно одного — чтобы функция была непрерывна и меняла знак.
Примеры с разбором
Пример 1 (простой). Докажем, что уравнение $x^3+x-1=0$ имеет корень на отрезке $[0;1]$.
Шаг 1. Функция $f(x)=x^3+x-1$ — многочлен, значит непрерывна на всей прямой, в частности на $[0;1]$.
Шаг 2. Значения на концах: $f(0)=0+0-1=-1$, $f(1)=1+1-1=1$.
Шаг 3. $f(0)\cdot f(1) = -1 < 0$, знаки разные. По теореме Больцано-Коши корень существует.
Ответ: корень есть, он лежит в интервале $(0;1)$.
Пример 2 (средний). Сделаем три шага бисекции для того же уравнения.
Шаг 1. Отрезок $[0;1]$, середина $m_1=0{,}5$. Считаем: $f(0{,}5)=0{,}125+0{,}5-1=-0{,}375 < 0$. Знак совпал с $f(0)$, значит корень справа: новый отрезок $[0{,}5;\,1]$.
Шаг 2. Середина $m_2=0{,}75$. Считаем: $0{,}75^3 = 0{,}421875$, тогда $f(0{,}75)=0{,}421875+0{,}75-1=0{,}171875>0$. Знак совпал с правым концом, корень слева: отрезок $[0{,}5;\,0{,}75]$.
Шаг 3. Середина $m_3=0{,}625$. Считаем: $0{,}625^3=0{,}244140625$, тогда $f(0{,}625)=0{,}244140625+0{,}625-1=-0{,}130859375<0$. Корень справа: отрезок $[0{,}625;\,0{,}75]$.
Ответ: после трёх шагов корень локализован в $[0{,}625;\,0{,}75]$, длина $0{,}125$; в качестве приближения берут середину $0{,}6875$ с гарантированной погрешностью не более $0{,}0625$. (Точное значение $\approx 0{,}6823$ — попали.)
Пример 3 (сложный, прикладной). Классификатор выдаёт скор $s\in(0;1)$. Доля объектов, попадающих в положительный класс при пороге $t$, равна $R(t)$. Нужно подобрать порог так, чтобы модель помечала ровно $20\%$ трафика.
Шаг 1. Если распределение скоров непрерывно (нет двух объектов с одинаковым скором и нет «сгустков»), то $R(t)$ — непрерывная убывающая функция.
Шаг 2. На концах: $R(0)=1$ (при нулевом пороге положительными помечаются все) и $R(1)=0$ (при пороге единица — никто).
Шаг 3. Число $0{,}2$ лежит между $0$ и $1$. По обобщённой теореме Больцано-Коши существует $t^*\in(0;1)$ с $R(t^*)=0{,}2$.
Шаг 4. Ищем его бисекцией: берём $t=0{,}5$, считаем долю; если она больше $0{,}2$ — порог надо повышать, идём в $[0{,}5;1]$; если меньше — в $[0;0{,}5]$. За $20$ итераций получаем точность $10^{-6}$ по порогу.
Ответ: такой порог существует и находится бисекцией. Важная оговорка: на конечной выборке функция $R(t)$ кусочно-постоянна и разрывна (она меняется скачками по $\frac1n$), поэтому точного значения $0{,}2$ может не существовать вовсе — придётся брать ближайшее достижимое. Это ровно та же история, что с accuracy: непрерывная теория, ступенчатая практика.
Почему это важно
Теорема Больцано-Коши — это математическое обоснование целого класса алгоритмов. Бинарный поиск по ответу в программировании, подбор порога классификатора, поиск значения параметра, при котором ограничение выполняется с равенством, калибровка вероятностей, вычисление квантилей, поиск точки безубыточности в экономике — всё это одна и та же схема: «функция непрерывна, на концах разные знаки — значит внутри есть решение, ищем делением пополам».
И обратная сторона: если в твоей функции есть разрыв, бинарный поиск может честно сойтись к границе скачка и не найти решения вообще — потому что решения может не быть. Понимание, непрерывна ли функция, по которой ты ищешь, — это понимание, гарантирован ли тебе результат.
Теорема Вейерштрасса: почему у оптимизации вообще есть ответ
Интуиция: у ограждённого участка есть высшая точка
Ты идёшь по холмистой местности вдоль отрезка дороги от километрового столба $a$ до столба $b$. Есть ли на этом участке самая высокая точка? Кажется, да — конечный участок, высота меняется плавно, где-то она максимальна. Но интуиция снова обманывает: если дорога не включает конечный столб, максимума может не быть — высота растёт до самого края, а край в участок не входит.
Первая теорема Вейерштрасса. Функция, непрерывная на отрезке $[a;b]$, ограничена на нём: существует такое $M$, что $|f(x)|\le M$ для всех $x\in[a;b]$.
Вторая теорема Вейерштрасса (об экстремумах). Функция, непрерывная на отрезке $[a;b]$, достигает на нём своего наибольшего и наименьшего значений: существуют точки $x_{\max}, x_{\min} \in [a;b]$ такие, что
$$f(x_{\min}) \le f(x) \le f(x_{\max}) \qquad \text{для всех } x \in [a;b].$$
Ключевое слово — достигает. Ограниченность означает, что есть точная верхняя грань; достижимость означает, что эта грань не просто существует как число, а реально принимается функцией в конкретной точке отрезка. Разница между «супремум равен $1$» и «максимум равен $1$» — это разница между «сколько угодно близко» и «ровно здесь».
Оба условия теоремы обязательны, и вот три контрпримера, которые стоит помнить наизусть:
- Убрали замкнутость. $f(x)=\frac1x$ на полуинтервале $(0;1]$. Функция непрерывна в каждой точке, промежуток ограничен — но $f$ не ограничена: при $x\to0+0$ она уходит в $+\infty$. Причина: точка $0$ не входит в промежуток, и «загнать» функцию некуда.
- Убрали ограниченность. $f(x)=x$ на $[0;+\infty)$. Непрерывна, промежуток замкнут — но наибольшего значения нет.
- Убрали непрерывность. $f(x)=x$ при $x\in[0;1)$ и $f(1)=0$. Отрезок замкнут и ограничен, функция ограничена сверху числом $1$ — но значения $1$ не принимает никогда: супремум есть, максимума нет. Виноват разрыв в точке $x=1$.
Примеры с разбором
Пример 1 (простой). Функция $f(x)=x^2-4x+7$ на отрезке $[0;3]$ — гарантирован ли максимум?
Шаг 1. Многочлен непрерывен всюду, отрезок замкнут и ограничен. Условия второй теоремы Вейерштрасса выполнены — наибольшее и наименьшее значения существуют.
Шаг 2. Найдём их без всякого анализа, выделив полный квадрат: $x^2-4x+7=(x-2)^2+3$.
Шаг 3. Величина $(x-2)^2$ на отрезке $[0;3]$ минимальна при $x=2$ (равна $0$) и максимальна на том конце, что дальше от двойки: $|0-2|=2$ против $|3-2|=1$, значит при $x=0$, где $(x-2)^2=4$.
Ответ: наименьшее значение $3$ в точке $x=2$, наибольшее $7$ в точке $x=0$. Оба достигаются — как теорема и обещала.
Пример 2 (средний). Достигает ли функция $f(x)=\dfrac{1}{x-2}$ наибольшего значения на отрезке $[0;3]$?
Шаг 1. Проверяем условия теоремы. Отрезок замкнут и ограничен — да. Функция непрерывна на нём — нет: в точке $x=2$ она не определена, там разрыв второго рода.
Шаг 2. Теорема неприменима, и вывода «максимума нет» из этого ещё не следует — надо смотреть саму функцию.
Шаг 3. При $x\to2+0$ знаменатель положителен и мал, $f(x)\to+\infty$. Функция не ограничена сверху.
Ответ: наибольшего значения нет. Причина строго в разрыве: убери его — и теорема Вейерштрасса дала бы гарантию.
Пример 3 (сложный, прикладной). Ты подбираешь коэффициент регуляризации $\lambda$ на сетке из отрезка $[0;10]$, а качество модели описывается непрерывной функцией $Q(\lambda)$. Существует ли оптимальное $\lambda$?
Шаг 1. Отрезок $[0;10]$ замкнут и ограничен. Если $Q$ непрерывна на нём — по теореме Вейерштрасса наибольшее значение достигается в некоторой точке $\lambda^*\in[0;10]$. Оптимум существует, и он внутри рассматриваемого диапазона (возможно, на его краю).
Шаг 2. А если бы диапазон был $\lambda\in(0;+\infty)$? Тогда обе гарантии пропадают: промежуток не замкнут слева и не ограничен справа. Качество могло бы монотонно улучшаться при $\lambda\to0+0$, не достигая наилучшего значения ни в одной допустимой точке.
Шаг 3. Практический вывод из этого прямой: сетку поиска гиперпараметров задают замкнутым и ограниченным диапазоном именно для того, чтобы оптимум гарантированно существовал и находился. Строка lambda in [1e-4, 1e2] — это не только про здравый смысл, это про условия теоремы Вейерштрасса.
Ответ: на отрезке оптимум существует всегда (при непрерывном $Q$); на открытом или неограниченном множестве — не обязан.
Почему это важно
Вейерштрасс отвечает на вопрос, который в оптимизации обычно проскакивают молча: а есть ли вообще что искать? Прежде чем запускать алгоритм минимизации, полезно понимать, гарантировано ли существование минимума. Если функция потерь непрерывна, а область поиска — замкнутое ограниченное множество, ответ «да, минимум существует и достигается». Если область открыта или бесконечна, гарантии нет, и алгоритм может честно убегать в бесконечность — именно так выглядит расходящееся обучение, когда веса растут без предела.
Вторая практическая сторона — про ограниченность. Первая теорема Вейерштрасса говорит, что непрерывная функция на отрезке не может «взорваться». Значит, если у тебя в вычислениях появился inf или nan, дело либо в том, что функция где-то разрывна (деление на ноль, логарифм нуля), либо в том, что область не ограничена. Третьего не дано, и это сужает поиск бага до двух гипотез.
Практика: 30 заданий
Базовые (задания 1-10)
Задание 1: Проверь по определению непрерывность функции $f(x)=3x+1$ в точке $x_0=2$.
Задание 2: Исследуй непрерывность $f(x)=x^2-5x+6$ в точке $x_0=3$.
Задание 3: Найди тип разрыва функции $f(x)=\dfrac{x^2-16}{x-4}$ в точке $x_0=4$ и, если возможно, устрани его.
Задание 4: Найди точки разрыва функции $f(x)=\dfrac{1}{x-5}$ и определи их тип.
Задание 5: Исследуй непрерывность $f(x)=\dfrac{|x|}{x}$ в точке $x_0=0$ и найди величину скачка.
Задание 6: Исследуй на непрерывность в точке $x_0=2$ функцию
$$f(x)=\begin{cases} x+1, & x<2,\\ 5, & x=2,\\ 2x-1, & x>2.\end{cases}$$Задание 7: При каком значении $a$ функция непрерывна на всей числовой прямой?
$$f(x)=\begin{cases} x^2+1, & x\le1,\\ ax+2, & x>1.\end{cases}$$Задание 8: Исследуй непрерывность функции целой части $f(x)=[x]$ в точке $x_0=3$.
Задание 9: Найди область непрерывности функции $f(x)=\sqrt{x-1}$ и опиши поведение на границе.
Задание 10: Ступенчатая функция активации (функция Хевисайда) $H(x)=0$ при $x<0$ и $H(x)=1$ при $x\ge0$. Найди тип разрыва в нуле и объясни, почему такая активация плоха для обучения градиентными методами.
Средние (задания 11-20)
Задание 11: Найди все точки разрыва функции $f(x)=\dfrac{x^2-9}{x^2+x-6}$ и определи их тип.
Задание 12: При каких $a$ и $b$ функция непрерывна на всей числовой прямой?
$$f(x)=\begin{cases} x^2, & x\le1,\\ ax+b, & 1