Дифференциал функции 📐
В прошлом уроке ты строго определил производную через предел отношения приращений: $f'(x_0) = \lim_{\Delta x \to 0} \frac{\Delta y}{\Delta x}$. Число $f'(x_0)$ ты научился вычислять, но пока что это именно число — коэффициент наклона касательной, и не более того. Сегодня мы сделаем следующий шаг: превратим этот коэффициент в работающий инструмент приближённого вычисления, который отвечает на вопрос «а что будет, если $x$ чуть-чуть изменится?» без необходимости пересчитывать функцию заново.
Представь, что ты стоишь в какой-то точке сложного, изрезанного ландшафта функции потерь нейросети и хочешь понять, куда сделать маленький шаг, чтобы спуститься чуть ниже. Точный ответ потребовал бы знания всей функции целиком — а это невозможно. Но локально, в бесконечно малой окрестности точки, почти любая гладкая функция ведёт себя как прямая линия — как своя касательная. Дифференциал — это математически строгий способ сказать: «замени сложную функцию в окрестности точки на линейную и работай с линейной, пока не отойдёшь слишком далеко». Именно это и происходит в одном шаге градиентного спуска: обновление весов $\theta_{k+1} = \theta_k - \eta \nabla L(\theta_k)$ работает не потому, что мы знаем, как убывает $L$ везде, а потому что мы знаем её линейное приближение $L(\theta_k + \Delta\theta) \approx L(\theta_k) + \nabla L(\theta_k)^\top \Delta\theta$ рядом с текущей точкой — и это ровно дифференциал функции многих переменных, только записанный не как $dy$, а как вектор.
Дифференциал — это не синоним производной и не синоним приращения. Это третья, отдельная вещь: главная линейная часть приращения функции. У приращения $\Delta y$ есть линейная часть (которая растёт пропорционально $\Delta x$) и остаток — «мусор» более высокого порядка малости, которым при малых $\Delta x$ можно пренебречь. Дифференциал — это как раз линейная часть, аккуратно отделённая от остатка. Это разделение звучит абстрактно, но именно на нём держится вся практика приближённых вычислений, оценка погрешностей измерений, метод Ньютона для поиска корней и минимумов, и в конечном счёте — идея о том, что обучение нейросети можно свести к последовательности маленьких линейных шагов.
В этом уроке мы дадим строгое определение дифференциала, разберёмся с его геометрическим смыслом через касательную прямую, научимся использовать его для быстрых приближённых вычислений вручную, докажем важную теорему об инвариантности формы первого дифференциала (которая, как ты увидишь, — это теоретическая основа техники autodiff в PyTorch и TensorFlow) и коротко заглянем в дифференциалы высших порядков, которые готовят почву для рядов Тейлора и метода Ньютона.
🎯 Ты узнаешь:
-
Что такое дифференциал функции $dy = f'(x_0)\,dx$ и почему это именно главная линейная часть приращения $\Delta y$, а не само приращение
-
Как дифференциал связан с касательной прямой геометрически — и почему поиск корня уравнения методом Ньютона — это буквально пересечение касательной с осью абсцисс
-
Как использовать дифференциал для быстрых приближённых вычислений вида $f(x_0+\Delta x) \approx f(x_0) + f'(x_0)\Delta x$ — и в какой момент эта линейная модель перестаёт быть точной
-
Что такое инвариантность формы первого дифференциала и почему именно на ней держится алгебраическая манипуляция записью $dy/dx$ как дробью, а также цепное правило обратного распространения ошибки
-
Как устроены дифференциалы высших порядков и почему инвариантность формы работает только для первого дифференциала, но не для второго
-
Где именно эта линейная идея прячется в машинном обучении: в шаге градиентного спуска, в итерации метода Ньютона, в проверке градиентов (gradient checking) и в автоматическом дифференцировании
История: откуда это взялось?
Обозначения $dx$ и $dy$, которыми ты будешь пользоваться до конца курса анализа, придумал Готфрид Вильгельм Лейбниц в середине 1670-х годов, а опубликовал в статье «Nova Methodus pro Maximis et Minimis» 1684 года — первой печатной работе по дифференциальному исчислению вообще. Лейбниц задумывал $dx$ и $dy$ не как абстрактный символ, а буквально как бесконечно малое приращение — исчезающе малую, но ненулевую версию обычной конечной разности $\Delta x$. В его картине мира между любыми двумя «обычными» числами можно было втиснуть бесконечно малую величину, которая меньше любого положительного числа, но всё же не ноль. Отношение $\frac{dy}{dx}$ он и правда представлял как настоящую дробь — отношение двух бесконечно малых величин, — и именно поэтому его нотация так естественно ведёт себя при подстановках и сокращениях, будто $dy$ и $dx$ можно алгебраически переставлять и сокращать, как обычные числа.
Независимо от Лейбница похожую конструкцию открыл Исаак Ньютон, только в терминах «флюксий» — скоростей изменения величин, которые он обозначал точкой над буквой ($\dot x$). Между двумя учёными разгорелся один из самых ожесточённых научных споров в истории — приоритетный спор о том, кто изобрёл исчисление первым. Идеи возникли независимо примерно в одно десятилетие (Ньютон — раньше, около 1665–1666 годов, но опубликовал позже; Лейбниц — независимо, но напечатал первым). Спор длился десятилетиями и рассорил математические школы Англии и континентальной Европы почти на век — но в итоге победила именно нотация Лейбница: она оказалась удобнее для манипуляций с цепочками зависимых переменных, и весь современный анализ пользуется $dy/dx$, а не точками Ньютона.
Понятие «бесконечно малой величины» при этом целый век оставалось логически шатким. В 1734 году ирландский епископ Джордж Беркли выпустил едкий памфлет «The Analyst», где назвал бесконечно малые «призраками ушедших величин» (ghosts of departed quantities) — ведь в выкладках их сначала считали ненулевыми (чтобы делить на них), а потом отбрасывали как несущественные, что логически противоречиво. Строгое обоснование пришло только полтора века спустя: Огюстен Луи Коши, а затем Карл Вейерштрасс переопределили дифференциал не как таинственную бесконечно малую сущность, а как обычную конечную величину — линейную функцию от произвольного (не обязательно малого) приращения $dx$, коэффициентом которой служит производная. Именно это строгое определение мы и дадим ниже. Любопытный поворот: в 1960-х годах логик Абрахам Робинсон построил нестандартный анализ, в котором бесконечно малые числа Лейбница получили полностью строгое обоснование через гиперреальные числа — спустя почти три века интуиция Лейбница оказалась математически оправданной, просто иным путём, чем предполагали Коши и Вейерштрасс.
Дифференциал: главная линейная часть приращения
Интуиция: разделяем приращение на «важное» и «мусор»
Давай разберёмся, что вообще происходит с приращением функции $\Delta y = f(x_0 + \Delta x) - f(x_0)$, когда $\Delta x$ маленькое. Если функция $f$ дифференцируема в точке $x_0$, то по определению производной
$$\frac{\Delta y}{\Delta x} \to f'(x_0) \quad \text{при } \Delta x \to 0,$$а это в точности означает, что $\frac{\Delta y}{\Delta x} = f'(x_0) + \alpha(\Delta x)$, где $\alpha(\Delta x) \to 0$ при $\Delta x \to 0$. Домножив на $\Delta x$, получаем ключевое разложение приращения на два слагаемых:
$$\Delta y = f'(x_0)\,\Delta x + \alpha(\Delta x)\cdot \Delta x$$Первое слагаемое, $f'(x_0)\Delta x$, — линейно относительно $\Delta x$: увеличишь $\Delta x$ вдвое — и оно ровно вдвое увеличится. Второе слагаемое, $\alpha(\Delta x)\cdot \Delta x$, — это произведение двух исчезающе малых величин, и оно стремится к нулю быстрее, чем сам $\Delta x$ (в анализе это записывают как $o(\Delta x)$). Представь, что ты идёшь по извилистой тропе, а рядом проложена прямая линия — касательная. Пока ты делаешь маленькие шаги, расхождение между тропой и прямой практически незаметно и убывает быстрее, чем длина твоего шага. Именно первое, линейное слагаемое и называют дифференциалом.
Для независимой переменной $x$ по соглашению полагают $dx := \Delta x$ — дифференциал независимой переменной определяют равным её собственному приращению. Это не случайность, а удобное соглашение, которое делает формулу дифференциала одинаковой что для $x$, что для более сложных функций (к этому мы вернёмся в разделе про инвариантность формы).
Определение. Пусть функция $y = f(x)$ дифференцируема в точке $x_0$. Дифференциалом функции в точке $x_0$ называется главная, линейная относительно приращения $dx = \Delta x$ часть приращения функции:
$$dy = f'(x_0)\,dx$$При этом $\Delta y = dy + o(dx)$ при $dx \to 0$, то есть дифференциал отличается от истинного приращения на величину более высокого порядка малости, чем сам $dx$.
Обрати внимание на важную деталь: $dy$ — это функция двух аргументов, точки $x_0$ и приращения $dx$, причём по $dx$ она линейна. В точке $x_0$ производная $f'(x_0)$ фиксирована — это просто число, коэффициент пропорциональности; переменной остаётся только $dx$, которое ты можешь выбрать каким угодно, хоть большим, хоть маленьким (формула $dy = f'(x_0)dx$ имеет смысл при любом $dx$, но приближает истинное приращение $\Delta y$ хорошо только при малых $dx$).
Разбор примеров
Пример 1 (лёгкий). Найти дифференциал функции $y = x^4 - 3x^3 + 2x$ в точке $x_0 = 1$.
Находим производную: $y' = 4x^3 - 9x^2 + 2$. Подставляем точку: $y'(1) = 4 - 9 + 2 = -3$. По определению:
$$dy = -3\,dx$$То есть при малом изменении аргумента около единицы функция убывает примерно втрое быстрее, чем сам аргумент — с обратным знаком.
Пример 2 (средний). Найти дифференциал функции $y = \sin(3x)$ в точке $x_0 = \frac{\pi}{4}$ и сравнить $dy$ с истинным приращением $\Delta y$ при $dx = 0{,}01$.
Производная: $y' = 3\cos(3x)$. При $x_0 = \frac{\pi}{4}$ имеем $3x_0 = \frac{3\pi}{4}$, а $\cos\frac{3\pi}{4} = -\frac{\sqrt2}{2} \approx -0{,}70711$. Значит,
$$y'(x_0) = 3\cdot\left(-0{,}70711\right) \approx -2{,}1213, \qquad dy = -2{,}1213\,dx$$При $dx = 0{,}01$: $dy \approx -0{,}021213$.
Теперь посчитаем истинное приращение. $\sin\frac{3\pi}{4} = 0{,}707107$. Аргумент увеличивается на $3\cdot 0{,}01 = 0{,}03$, и $\sin\left(\frac{3\pi}{4}+0{,}03\right) \approx 0{,}685616$ (раскладывая по формуле синуса суммы). Тогда
$$\Delta y \approx 0{,}685616 - 0{,}707107 = -0{,}021491$$Разница между $\Delta y$ и $dy$ составляет всего около $0{,}0003$ — примерно в семьдесят раз меньше самого приращения. Это и есть та самая «величина более высокого порядка малости», о которой говорилось в определении.
Пример 3 (сложный). Найти дифференциал функции $y = \ln(1+x^2)$ в точке $x_0 = 1$ и оценить точность приближения при $dx = 0{,}1$.
Производная сложной функции: $y' = \dfrac{2x}{1+x^2}$. При $x_0 = 1$: $y'(1) = \dfrac{2}{2} = 1$. Значит,
$$dy = dx$$При $dx = 0{,}1$ получаем $dy = 0{,}1$. Истинное приращение: $\Delta y = \ln(1+1{,}21) - \ln 2 = \ln 2{,}21 - \ln 2 = \ln(1{,}105) \approx 0{,}09985$. Разница $\Delta y - dy \approx -0{,}00015$ — очень маленькая, значительно меньше, чем можно было бы ожидать для $dx = 0{,}1$.
Причина такой аномально высокой точности видна, если вычислить вторую производную: $y'' = \dfrac{2(1-x^2)}{(1+x^2)^2}$, и при $x_0=1$ она равна нулю. Погрешность приближения дифференциалом в первом порядке определяется как раз второй производной (её мы подробно свяжем с рядом Тейлора чуть позже), а здесь этот вклад обнуляется, и точность оказывается даже выше типичной.
Почему это важно
Разложение $\Delta y = dy + o(dx)$ — это не техническая деталь, а само содержание дифференцируемости. Именно оно доказывает, что дифференцируемая функция обязательно непрерывна: если $\Delta y \to 0$ при $dx \to 0$ (а это очевидно из формулы, поскольку и $dy$, и остаток стремятся к нулю), то $f(x_0+dx) \to f(x_0)$, а это и есть определение непрерывности. Обратное неверно — непрерывность не гарантирует дифференцируемости, и один из практикумов ниже это явно продемонстрирует.
В машинном обучении это разложение — фундамент всей теории оптимизации первого порядка. Функция потерь $L(\theta)$ около текущей точки $\theta_k$ раскладывается как $L(\theta_k+\Delta\theta) = L(\theta_k) + \nabla L(\theta_k)^\top\Delta\theta + o(\|\Delta\theta\|)$ — многомерный аналог того же самого разложения, только $f'(x_0)\Delta x$ превращается в скалярное произведение градиента на вектор шага. Градиентный спуск выбирает $\Delta\theta$ так, чтобы линейная часть $\nabla L(\theta_k)^\top\Delta\theta$ была максимально отрицательной (это направление антиградиента), полагаясь на то, что остаток $o(\|\Delta\theta\|)$ пренебрежимо мал — то есть полагаясь именно на то свойство дифференциала, которое мы только что доказали.
Геометрический смысл дифференциала
Интуиция: тропа и касательная прямая
Представь график функции $y = f(x)$ и прямую, касающуюся этого графика в точке $(x_0, f(x_0))$. Уравнение касательной ты уже знаешь из прошлого урока:
$$y_{\text{кас}}(x) = f(x_0) + f'(x_0)(x - x_0)$$Теперь сдвинемся вдоль оси $x$ на $\Delta x$, то есть перейдём в точку $x = x_0 + \Delta x$. Ордината самой кривой в этой точке — это $f(x_0+\Delta x)$, и её приращение относительно $f(x_0)$ — это в точности $\Delta y$. А вот ордината касательной в той же точке равна
$$y_{\text{кас}}(x_0+\Delta x) = f(x_0) + f'(x_0)\cdot \Delta x = f(x_0) + dy$$Значит, приращение ординаты касательной при переходе от $x_0$ к $x_0+\Delta x$ равно ровно $dy$. Вот и весь геометрический смысл: дифференциал — это приращение вдоль касательной прямой, а не вдоль самой кривой. Кривая и касательная расходятся, и разница $\Delta y - dy$ — это как раз то самое отклонение тропы от прямой, о котором говорилось выше, только теперь у него есть наглядная геометрическая картинка.
Определение (геометрический смысл дифференциала). Дифференциал $dy$ функции $y=f(x)$ в точке $x_0$ равен приращению ординаты касательной, проведённой к графику функции в точке $(x_0, f(x_0))$, при изменении абсциссы на $dx$. Приращение самой функции $\Delta y$ — это приращение ординаты графика. При малых $dx$ касательная почти сливается с графиком, поэтому $dy \approx \Delta y$.
Разбор примеров
Пример 1 (лёгкий). Для $y=x^2$ в точке $x_0=1$ при $dx=0{,}1$ сравнить $dy$ и $\Delta y$.
Производная $y'=2x$, $y'(1)=2$, значит $dy = 0{,}2$. Уравнение касательной: $y_{\text{кас}} = 1 + 2(x-1) = 2x-1$. В точке $x=1{,}1$ касательная даёт $y_{\text{кас}}(1{,}1) = 2\cdot1{,}1-1 = 1{,}2$ — рост на $0{,}2 = dy$, как и должно быть.
Истинное значение функции: $(1{,}1)^2 = 1{,}21$, то есть $\Delta y = 0{,}21$. Разница $\Delta y - dy = 0{,}01$ — это в точности та «кривизна», которую прямая линия не улавливает, а парабола — улавливает.
Пример 2 (средний). Для $y = \dfrac1x$ в точке $x_0=2$ при $dx=0{,}2$ сравнить $dy$ и $\Delta y$, а также прикинуть порядок расхождения через вторую производную.
Производная $y' = -\dfrac{1}{x^2}$, $y'(2) = -0{,}25$, значит $dy = -0{,}25\cdot0{,}2 = -0{,}05$. Истинное приращение: $\Delta y = \dfrac{1}{2{,}2} - \dfrac12 = 0{,}454545 - 0{,}5 = -0{,}045455$. Разница $\Delta y - dy \approx 0{,}004545$.
Оценим эту разницу через вторую производную: $y'' = \dfrac{2}{x^3}$, $y''(2) = 0{,}25$. Стандартная оценка (из формулы Тейлора с остаточным членом) даёт разницу порядка $\frac12|y''(x_0)|\,dx^2 = 0{,}5\cdot0{,}25\cdot0{,}04 = 0{,}005$ — очень близко к фактическим $0{,}004545$. Здесь функция убывающая, и знак $\Delta y$ (как и $dy$) отрицательный — не пугайся минуса, он честно отражает, что функция падает.
Пример 3 (сложный, связь с методом Ньютона). Пусть $f(x) = x^2 - 2$ (ищем корень, то есть $\sqrt2$), $x_0 = 1{,}5$. Найти точку пересечения касательной к графику $f$ в точке $x_0$ с осью абсцисс.
$f(x_0) = 2{,}25 - 2 = 0{,}25$, $f'(x) = 2x$, $f'(x_0) = 3$. Уравнение касательной:
$$y_{\text{кас}}(x) = 0{,}25 + 3(x-1{,}5)$$Пересечение с осью абсцисс — это $x$, при котором $y_{\text{кас}}(x) = 0$, то есть $0 = f(x_0) + f'(x_0)(x-x_0)$, что то же самое, что $0 = f(x_0) + dy$ при $dx = x - x_0$. Решаем:
$$0 = 0{,}25 + 3(x - 1{,}5) \;\Longrightarrow\; x - 1{,}5 = -\frac{0{,}25}{3} \approx -0{,}08333 \;\Longrightarrow\; x \approx 1{,}41667$$Настоящее значение $\sqrt2 \approx 1{,}41421$. Всего за один шаг мы получили приближение с точностью до третьего знака после запятой. И заметь: формула, которую мы только что вывели чисто геометрически ($x_1 = x_0 - f(x_0)/f'(x_0)$), — это в точности итерационная формула метода Ньютона. Метод Ньютона — это не что иное, как многократное повторение процедуры «замени функцию касательной, найди, где касательная равна нулю, повтори».
Почему это важно
Геометрическая картина «дифференциал = приращение касательной» — это ровно та идея, на которой держится метод Ньютона: и для поиска корней уравнений, и (в многомерном варианте, через матрицу вторых производных — гессиан) для поиска минимумов функции потерь в оптимизации второго порядка. Метод Ньютона обычно сходится значительно быстрее градиентного спуска именно потому, что учитывает не только направление касательной, но неявно опирается на локальную линейность функции точно так же, как в примере выше. Кроме того, эта же геометрическая идея лежит в основе всех методов численного дифференцирования: когда алгоритм оценивает производную по разностной формуле $\frac{f(x+h)-f(x)}{h}$, он фактически проверяет, насколько хорошо секущая (а при малых $h$ — почти касательная) приближает поведение функции.
Приближённые вычисления с помощью дифференциала
Интуиция: не пересчитывай — линеаризуй
Раз $\Delta y \approx dy$ при малых $dx$, можно перевернуть формулу и получить готовый инструмент приближённого вычисления. Вместо того чтобы точно вычислять $f(x_0+dx)$ (что может требовать сложных вычислений — кубического корня, логарифма, синуса без калькулятора), можно взять значение функции в удобной соседней точке $x_0$, где вычисления простые, и «доехать» до нужной точки по касательной, а не по самой кривой.
$$f(x_0+dx) \approx f(x_0) + f'(x_0)\,dx$$Это в точности та же формула, что используется в одном шаге градиентного спуска или в первой итерации метода Ньютона — просто здесь она применяется не для оптимизации, а для вычисления приближённого значения функции.
Определение (формула приближённых вычислений через дифференциал). Если функция $f$ дифференцируема в точке $x_0$ и $dx$ достаточно мало, то
$$f(x_0+dx) \approx f(x_0) + dy = f(x_0) + f'(x_0)\,dx$$Погрешность такого приближения имеет порядок $o(dx)$ — она убывает быстрее, чем сам $dx$, при $dx \to 0$.
Разбор примеров
Пример 1 (лёгкий). Вычислить приближённо $\sqrt{26}$.
Возьмём $f(x) = \sqrt x$ и удобную соседнюю точку $x_0 = 25$ (где корень извлекается без калькулятора), $dx = 1$. Производная $f'(x) = \dfrac{1}{2\sqrt x}$, $f'(25) = \dfrac{1}{10} = 0{,}1$. Тогда
$$\sqrt{26} \approx \sqrt{25} + 0{,}1\cdot 1 = 5 + 0{,}1 = 5{,}1$$Точное значение $\sqrt{26} \approx 5{,}09902$ — отличие в четвёртом знаке после запятой, притом что мы не пользовались калькулятором вообще.
Пример 2 (средний). Вычислить приближённо $(1{,}02)^{10}$ и оценить, насколько хорошо работает линейное приближение.
$f(x) = x^{10}$, $x_0=1$, $dx = 0{,}02$. $f'(x) = 10x^9$, $f'(1) = 10$, значит
$$(1{,}02)^{10} \approx 1 + 10\cdot0{,}02 = 1{,}2$$Точное значение $(1{,}02)^{10} \approx 1{,}21899$. Расхождение — уже около $0{,}019$, заметно больше, чем в предыдущих примерах: возведение в десятую степень слишком «искривляет» функцию, чтобы линейное приближение при $dx = 0{,}02$ оставалось точным. Если добавить поправку следующего порядка (о ней подробнее — в разделе про дифференциалы высших порядков): $f''(x) = 90x^8$, $f''(1)=90$, вторая поправка $\frac12\cdot90\cdot0{,}02^2 = 0{,}018$, и уточнённое приближение $1{,}2+0{,}018 = 1{,}218$ — уже гораздо ближе к истинным $1{,}21899$.
Пример 3 (сложный, ML). Рассмотрим простейшую квадратичную функцию потерь $L(w) = w^2$ с текущим весом $w_0 = 3$ и шаг градиентного спуска с $\eta = 0{,}1$: $\Delta w = -\eta\,L'(w_0)$. Сравнить предсказанное дифференциалом изменение потерь с фактическим.
$L'(w) = 2w$, $L'(3) = 6$. Шаг: $\Delta w = -0{,}1\cdot6 = -0{,}6$, новый вес $w_1 = 3-0{,}6=2{,}4$. Предсказанное изменение потерь через дифференциал:
$$dL = L'(w_0)\cdot\Delta w = 6\cdot(-0{,}6) = -3{,}6$$Предсказанная новая потеря: $L(w_0)+dL = 9-3{,}6=5{,}4$. Фактическая потеря: $L(2{,}4) = 5{,}76$. Разница $5{,}76-5{,}4=0{,}36$ — линейное приближение недооценило значение функции.
Это не случайность, а системный эффект: $L(w)=w^2$ выпукла (график везде лежит выше любой своей касательной), значит касательная (линейная модель дифференциала) всегда даёт значение не больше истинного. Отсюда практический вывод для машинного обучения: линейное предсказание изменения выпуклой функции потерь по градиенту систематически переоценивает, насколько сильно уменьшится потеря — при слишком большом шаге $\eta$ реальное уменьшение может оказаться намного скромнее ожидаемого, а при совсем большом шаге потеря может даже вырасти. Именно поэтому на практике используют затухающий learning rate, line search или методы второго порядка, учитывающие кривизну.
Почему это важно
Формула $f(x_0+dx) \approx f(x_0)+f'(x_0)dx$ — это рабочий инструмент инженера, физика и специалиста по машинному обучению для быстрой оценки: как изменится результат измерения при небольшой погрешности входных данных, как изменится объём или площадь при небольшом изменении размера, как изменится значение функции потерь при небольшом шаге оптимизатора. В инженерной практике на этой же формуле строится вся теория распространения погрешностей измерений (мы это увидим в практических заданиях), а в анализе численных методов — оценка локальной погрешности на одном шаге любой итерационной схемы, от метода Эйлера для дифференциальных уравнений до метода Ньютона.
Инвариантность формы первого дифференциала
Интуиция: работает ли формула, если $x$ сама зависит от чего-то?
До сих пор мы считали $x$ независимой переменной: мы сами выбирали, на сколько её сдвинуть, и $dx$ было просто произвольным числом. Но что, если $x$ сама является функцией другой переменной, скажем $x = \varphi(t)$? Например, $y = \sin x$, а $x = t^2$. Останется ли верной формула $dy = f'(x)dx$, если теперь $dx$ — это уже не свободный выбор, а дифференциал зависимой величины?
Ответ — да, и это довольно неожиданный, красивый факт: форма записи $dy = f'(x)dx$ сохраняется буквально дословно, даже когда $x$ — не независимая переменная, а функция другой переменной. Разница лишь в том, что теперь $dx$ вычисляется по собственной формуле дифференциала для $\varphi$, а не задаётся произвольно.
Докажем это. Пусть $y = f(x)$, $x=\varphi(t)$, то есть $y$ — сложная функция от $t$. По правилу дифференцирования сложной функции (полное доказательство будет в следующем уроке, но результат тебе уже знаком из школы):
$$\frac{dy}{dt} = f'(x)\cdot\varphi'(t)$$По определению дифференциала функции $y(t)$ от независимой переменной $t$:
$$dy = \frac{dy}{dt}\,dt = f'(x)\,\varphi'(t)\,dt$$А теперь заметим: $\varphi'(t)\,dt$ — это в точности дифференциал самой функции $x=\varphi(t)$, то есть $dx = \varphi'(t)\,dt$. Подставляя, получаем
$$dy = f'(x)\,dx$$— ту же самую формулу, что и для независимой переменной! Это и есть теорема об инвариантности формы первого дифференциала.
Теорема (инвариантность формы первого дифференциала). Пусть $y=f(x)$. Формула $dy = f'(x)\,dx$ верна независимо от того, является ли $x$ независимой переменной (тогда $dx = \Delta x$ — произвольное приращение) или функцией другой переменной $x=\varphi(t)$ (тогда $dx = \varphi'(t)\,dt$ — дифференциал этой функции). Форма записи не меняется — меняется только смысл символа $dx$.
Именно эта теорема оправдывает то, что кажется «незаконным трюком» из школьного курса: обращение с $dy/dx$ как с настоящей дробью, домножение обеих частей уравнения на $dx$ при решении дифференциальных уравнений с разделяющимися переменными, сокращение $du$ в цепочке замен. Формально это не дробь — это предел отношения, — но благодаря инвариантности формы с ней действительно можно обращаться алгебраически, как если бы это была дробь, и результат всегда будет верным.
Разбор примеров
Пример 1 (лёгкий). Найти дифференциал функции $y = (2x+1)^5$, используя инвариантность формы.
Введём промежуточную переменную $u = 2x+1$, тогда $y = u^5$. По инвариантности формы дифференциал записывается так же, как если бы $u$ было независимой переменной:
$$dy = 5u^4\,du$$Осталось найти $du$: поскольку $u = 2x+1$ — функция от $x$, $du = 2\,dx$. Подставляя:
$$dy = 5u^4\cdot 2\,dx = 10(2x+1)^4\,dx$$Пример 2 (средний). Найти дифференциал функции $y = e^{x^2}$.
Пусть $u = x^2$, тогда $y = e^u$, и по инвариантности формы $dy = e^u\,du$. Находим $du = 2x\,dx$. Значит,
$$dy = e^{x^2}\cdot 2x\,dx$$Пример 3 (сложный). Дано $y = \ln x$, где $x = \varphi(t) = t^2$ (то есть $x$ — зависимая переменная, функция от $t$). Найти $dy$ двумя способами: через инвариантность формы (используя $dx$) и напрямую как функцию от $t$ — и убедиться, что ответы совпадают.
Способ 1 (через инвариантность формы). $dy = \dfrac{1}{x}\,dx$. Поскольку $x = t^2$, имеем $dx = 2t\,dt$. Подставляя $x=t^2$:
$$dy = \frac{1}{t^2}\cdot 2t\,dt = \frac{2}{t}\,dt$$Способ 2 (напрямую). Выразим $y$ сразу через $t$: $y = \ln(t^2) = 2\ln t$ (при $t>0$). Тогда $\dfrac{dy}{dt} = \dfrac{2}{t}$, и
$$dy = \frac{2}{t}\,dt$$Оба способа дают один и тот же ответ — форма $dy = f'(x)dx$ отработала корректно, несмотря на то что $x$ здесь не независимая переменная, а функция $t$.
Почему это важно
Инвариантность формы первого дифференциала — это теоретическое обоснование техники, которую использует буквально каждый современный фреймворк глубокого обучения. Обратное распространение ошибки (backpropagation) в PyTorch или TensorFlow вычисляет градиент функции потерь по весам сети, применяя цепное правило слой за слоем: $\frac{\partial L}{\partial w} = \frac{\partial L}{\partial h_n}\cdot\frac{\partial h_n}{\partial h_{n-1}}\cdots\frac{\partial h_1}{\partial w}$. Каждый множитель в этой цепочке — это, по сути, дифференциал промежуточной переменной, а сама возможность перемножать такие звенья цепи и получать корректный итоговый результат опирается именно на то, что форма дифференциала не зависит от того, является ли переменная «независимой» (входом сети) или «зависимой» (активацией внутреннего слоя). В этом смысле автоматическое дифференцирование — это инвариантность формы первого дифференциала, применённая миллионы раз подряд по вычислительному графу.
Дифференциалы высших порядков (кратко)
Дифференциал $dy$, который мы обсуждали, называют дифференциалом первого порядка. Ничто не мешает продифференцировать его ещё раз: дифференциал второго порядка определяется как $d^2y := d(dy)$. Если $x$ — независимая переменная (и, следовательно, $dx$ — фиксированное, «замороженное» число, не зависящее от $x$, так что $d(dx)=0$), то
$$d^2y = f''(x)\,dx^2$$где $dx^2$ здесь означает $(dx)^2$, а не дифференциал от $x^2$. По индукции дифференциал $n$-го порядка для независимой переменной равен $d^ny = f^{(n)}(x)\,dx^n$ — и именно эта конструкция превращается в следующих уроках в остаточный член формулы Тейлора и в квадратичную (а затем и более высокого порядка) поправку к линейному приближению, которой пользуется метод Ньютона второго порядка при оптимизации через гессиан.
А вот здесь и кроется важный нюанс, ради которого стоит этот раздел прочитать внимательно: инвариантность формы работает только для первого дифференциала. Если $x$ — не независимая переменная, а функция $x = \varphi(t)$, то $dx = \varphi'(t)\,dt$ уже сама зависит от $t$, и при повторном дифференцировании появляется дополнительное слагаемое:
$$d^2y = f''(x)\,(dx)^2 + f'(x)\,d^2x$$где $d^2x = \varphi''(t)\,dt^2$ — это, вообще говоря, ненулевая величина (если только $\varphi$ не линейна по $t$). Проверим это на конкретном примере: пусть $y=x^2$ (то есть $f(x)=x^2$, $f'(x)=2x$, $f''(x)=2$), а $x=\varphi(t)=t^2$. Прямая подстановка $y = (t^2)^2 = t^4$ даёт $dy = 4t^3dt$, а значит $d^2y = 12t^2\,dt^2$ (поскольку теперь $t$ — независимая переменная, и $d(dt)=0$). Проверим формулу с добавочным слагаемым: $dx = 2t\,dt$, $(dx)^2 = 4t^2dt^2$; $d^2x = d(2t\,dt) = 2\,dt\cdot dt = 2\,dt^2$. Тогда
$$d^2y = 2\cdot 4t^2dt^2 + 2x\cdot 2\,dt^2 = 8t^2dt^2 + 2t^2\cdot2\,dt^2 = 8t^2dt^2+4t^2dt^2 = 12t^2dt^2$$— совпадает с прямым вычислением. А вот если бы мы наивно применили «инвариантную» форму первого дифференциала и написали просто $d^2y = f''(x)(dx)^2 = 2\cdot4t^2dt^2 = 8t^2dt^2$, забыв про слагаемое $f'(x)\,d^2x$, — получили бы неверный ответ. Это и есть главная практическая ловушка темы, разобранная подробнее в практике ниже.
Практика: 30 заданий
Базовые задания (1–10)
Задание 1: Найти дифференциал функции $y = x^4-3x^3+2x$ в точке $x_0=1$.
Задание 2: Найти дифференциал функции $y = \cos(2x)$ в точке $x_0=\frac{\pi}{4}$.
Задание 3: Найти $dy$ для $y=\sqrt x$ в точке $x_0=4$ при $dx=0{,}2$.
Задание 4: Найти дифференциал функции $y=e^x$ в точке $x_0=0$.
Задание 5: Найти $dy$ для $y=\ln x$ в точке $x_0=e$ при $dx=0{,}1$.
Задание 6: Используя дифференциал, вычислить приближённо $\sqrt{50}$.
Задание 7: Найти дифференциал функции $y=\tan x$ в точке $x_0=0$.
Задание 8: Найти $dy$ для $y=x^3$ в точке $x_0=2$ при $dx=0{,}01$.
Задание 9: Найти дифференциал функции $y=\arctan x$ в точке $x_0=1$.
Задание 10: Площадь круга $S=\pi r^2$. Найти дифференциал площади при радиусе $r_0=5$ и приращении $dr=0{,}1$.
Средние задания (11–20)
Задание 11: Найти дифференциал функции $y=\sin^2x$ в точке $x_0=\frac{\pi}{6}$, используя инвариантность формы.
Задание 12: Найти дифференциал функции $y=\ln(\cos x)$ в точке $x_0=\frac{\pi}{4}$.
Задание 13: Используя дифференциал, вычислить приближённо $\arcsin(0{,}51)$.
Задание 14: Сторона куба измерена как $a=10$ см с погрешностью $da=\pm0{,}2$ см. Оценить абсолютную и относительную погрешности объёма $V=a^3$.
Задание 15: Период маятника $T = 2\pi\sqrt{l/g}$. Оценить относительное изменение периода при увеличении длины подвеса на $1\%$.
Задание 16: Функция потерь $L(w)=(w-5)^2$, текущий вес $w_0=1$, шаг градиентного спуска $\Delta w = -\eta L'(w_0)$ с $\eta=0{,}05$. Сравнить предсказанное дифференциалом изменение потерь с фактическим.
Задание 17: Найти дифференциал функции $y=x\ln x$ в точке $x_0=1$.
Задание 18: Используя дифференциал, вычислить приближённо $(0{,}98)^6$.
Задание 19: Найти дифференциал функции $y=\operatorname{arctg}(e^x)$ в точке $x_0=0$, используя инвариантность формы.
Задание 20: Автомобиль едет со скоростью $v_0=90$ км/ч, расстояние до цели $s=180$ км фиксировано, время в пути $t=s/v$. Оценить дифференциалом, насколько сократится время в пути, если скорость увеличится на $dv=3$ км/ч.
Продвинутые задания (21–30)
Задание 21: Доказать, что если функция дифференцируема в точке $x_0$, то она непрерывна в этой точке.
Задание 22: Показать, что второй дифференциал не инвариантен относительно замены переменной. Рассмотреть $y=x^2$, где $x=\varphi(t)=t^2$, и сравнить наивное вычисление $f''(x)(dx)^2$ с корректным вычислением через $d(dy)$.
Задание 23: Уточнить приближение $(1{,}03)^8$, используя не только первый, но и второй дифференциал, и сравнить точность с чисто линейным приближением.
Задание 24: Функция потерь $L(w)=w^4-4w^2$ в точке $w_0=1{,}5$. Сделать шаг градиентного спуска с $\eta=0{,}1$ и сравнить предсказанное дифференциалом изменение потерь с фактическим.
Задание 25: Найти дифференциал функции $y=x^x$ ($x>0$) в точке $x_0=e$, используя логарифмическое дифференцирование.
Задание 26: Используя алгебру дифференциалов (инвариантность формы), вывести формулу производной обратной функции и проверить её на примере $y=x^3$ при $x_0=2$.
Задание 27: Угол $x_0=30° = \frac{\pi}{6}$ рад. Оценить с помощью дифференциала, насколько изменится значение $\sin x$, если аргумент измерен с погрешностью $dx=0{,}001$ рад.
Задание 28: Бинарная кросс-энтропия через логит $z$: $L(z) = -\ln\sigma(z) = -z+\ln(e^z+1)$, где $\sigma(z)=\frac{1}{1+e^{-z}}$. При $z_0=0$ сделать шаг градиентного спуска $\Delta z = -\eta L'(z_0)$ с $\eta=0{,}2$ и сравнить предсказанное дифференциалом изменение потерь с фактическим.
Задание 29: Показать, используя определение дифференциала, что для функции $f(x)=|x|$ дифференциал в точке $x_0=0$ не существует, хотя функция непрерывна в этой точке.
Задание 30: Используя геометрическую связь между дифференциалом и касательной, вывести формулу итерации метода Ньютона для поиска корня уравнения $f(x)=0$ и применить её, сделав один шаг из $x_0=2$, для приближённого вычисления $\sqrt[3]{10}$.
Частые ошибки
Давай разберёмся, где студенты чаще всего спотыкаются в теме дифференциала — эти ошибки удивительно живучи именно потому, что дифференциал внешне очень похож на приращение, а формула $dy=f'(x)dx$ обманчиво проста.
-
Путают дифференциал $dy$ с приращением $\Delta y$. Это не одно и то же: $dy$ — линейная функция от $dx$, а $\Delta y$ — точное значение, полученное подстановкой в саму функцию. Равенство $dy=\Delta y$ верно только для линейных функций; для всех остальных $dy \approx \Delta y$, и то лишь при малых $dx$.
-
Считают, что $dy=\Delta y$ становится точным равенством при любом, даже не очень маленьком $dx$. Задание 24 выше — наглядное предупреждение: при $\Delta w=-0{,}15$ и заметной кривизне функции потерь фактическое изменение отличалось от предсказанного дифференциалом в несколько раз.
-
Забывают, что дифференциал определён в конкретной точке $x_0$. Одно и то же $dx$ даёт разные $dy$ в разных точках, поскольку коэффициент $f'(x_0)$ меняется от точки к точке — производная не константа.
-
При работе со сложной функцией применяют формулу первого дифференциала ко второму, забывая дополнительное слагаемое. Как показано в разделе про дифференциалы высших порядков и в задании 22, для второго дифференциала зависимой переменной формула $d^2y=f''(x)(dx)^2$ неполна — не хватает слагаемого $f'(x)\,d^2x$, которое обнуляется только если $x$ — независимая переменная (или линейная функция другой переменной).
-
Путают дифференцируемость с существованием частных производных для функций многих переменных. Для функции одной переменной существование конечной производной и дифференцируемость — это одно и то же. Но в многомерном анализе, который встретится позже, существование частных производных по каждой координате отдельно не гарантирует полной дифференцируемости функции — это тонкость, с которой стоит быть осторожным заранее.
-
Забывают проверить знак $dx$. Если аргумент уменьшается, $dx$ отрицателен, и в этом нет ничего страшного — просто не забудь подставить минус, иначе получишь противоположный по смыслу результат (функция «выросла» вместо «упала» или наоборот).
Главное запомнить
-
Дифференциал $dy=f'(x_0)\,dx$ — это главная, линейная относительно $dx$ часть приращения функции $\Delta y$, а не само приращение.
-
Точное разложение: $\Delta y = dy + o(dx)$ при $dx\to0$ — остаток стремится к нулю быстрее самого $dx$.
-
Для независимой переменной по определению $dx:=\Delta x$.
-
Геометрически $dy$ — это приращение ординаты касательной прямой, а $\Delta y$ — приращение ординаты самой кривой; при малых $dx$ они почти сливаются.
-
Формула приближённых вычислений: $f(x_0+dx)\approx f(x_0)+f'(x_0)\,dx$ — работает хорошо только при достаточно малых $dx$.
-
Инвариантность формы первого дифференциала: $dy=f'(x)dx$ верна и когда $x$ — независимая переменная, и когда $x=\varphi(t)$ — функция другой переменной; во втором случае $dx=\varphi'(t)dt$.
-
Инвариантность формы не распространяется на дифференциалы высших порядков: для зависимой переменной $d^2y=f''(x)(dx)^2+f'(x)\,d^2x$, с дополнительным слагаемым.
-
Метод Ньютона — это буквально повторение шага «замени функцию касательной (дифференциалом), найди, где она равна нулю» снова и снова.
-
Один шаг градиентного спуска — это тоже линейное приближение через дифференциал (в многомерном случае — через градиент), и именно поэтому оно может ошибаться при большом шаге или сильной кривизне функции потерь.
-
Дифференцируемость влечёт непрерывность, но не наоборот: функция $|x|$ непрерывна в нуле, но не дифференцируема там.
Связь с другими темами курса
Этот урок напрямую опирается на строгое определение производной из урока 186 — без него не сформулировать даже саму формулу $dy=f'(x_0)dx$. В следующем уроке, «Правила дифференцирования» (188), ты получишь инструменты для быстрого вычисления производных сложных выражений — а значит, и для вычисления их дифференциалов — без громоздких выкладок через предел на каждом шаге.
Дальше по курсу дифференциал разрастётся в нескольких направлениях сразу. В теме о формуле Тейлора идея «замени функцию линейной частью» обобщится до «замени функцию полиномом произвольной степени», где дифференциалы высших порядков, с которыми ты только что познакомился, станут коэффициентами разложения. В теме о дифференциальных уравнениях запись $dy/dx$ как алгебраической дроби (возможная именно благодаря инвариантности формы первого дифференциала) станет рабочим инструментом решения уравнений с разделяющимися переменными. А в курсе функций многих переменных понятие дифференциала обобщится до полного дифференциала и градиента — именно того объекта, который явно используется в формуле шага градиентного спуска, которую ты видел в этом уроке уже несколько раз.
Интересные факты
-
Спор о приоритете между Ньютоном и Лейбницем длился десятилетиями и настолько рассорил английскую и континентальную математические школы, что англичане из принципа продолжали пользоваться неудобной нотацией флюксий ещё сто лет после того, как остальная Европа перешла на гораздо более гибкую запись Лейбница через $dx$ и $dy$.
-
Критика Джорджа Беркли в памфлете «The Analyst» (1734) — знаменитая фраза про «призраков ушедших величин» — на полтора века задержала полное признание строгости анализа, пока Коши и Вейерштрасс не заменили интуитивные бесконечно малые точным языком пределов.
-
В 1960-х годах логик Абрахам Робинсон формально обосновал именно ту интуицию Лейбница о буквально существующих бесконечно малых числах — через теорию гиперреальных чисел (нестандартный анализ). Спустя почти триста лет оказалось, что Лейбниц был не просто удачлив с обозначениями, а интуитивно прав по существу.
-
Современное автоматическое дифференцирование (autodiff), на котором работает обучение практически всех нейросетей, — это не приближённое численное дифференцирование и не символьное вычисление формул производных, а систематическое применение инвариантности формы первого дифференциала (то есть цепного правила) к каждому элементарному узлу вычислительного графа.
Лайфхаки и полезные трюки
-
Обращайся с $\dfrac{dy}{dx}$ как с настоящей дробью при решении дифференциальных уравнений с разделяющимися переменными и в задачах на related rates — это не жульничество, а прямое следствие теоремы об инвариантности формы, доказанной в этом уроке.
-
Для оценки относительной погрешности удобно дифференцировать логарифм функции: $\dfrac{df}{f} = d(\ln f)$. Так, для степенной зависимости $f=x^n$ сразу получаешь $\dfrac{df}{f}=n\,\dfrac{dx}{x}$ — относительная погрешность результата в $n$ раз больше относительной погрешности измерения, без необходимости заново дифференцировать всё выражение.
-
Для быстрой прикидки в уме держи в памяти простейший частный случай формулы приближённых вычислений: $(1+x)^n \approx 1+nx$ при малых $x$. Она мгновенно оценивает сложные проценты, погрешности степенных величин и даже поведение $(1+\eta\lambda)^n$-подобных выражений в анализе сходимости итерационных алгоритмов.
-
Если реализуешь backpropagation вручную и не уверен, что производная посчитана верно, — сделай «gradient checking»: сравни аналитическую производную с численной разностной оценкой $\dfrac{f(x+h)-f(x)}{h}$ при маленьком $h$. Ты буквально проверяешь, что $\Delta y/dx$ приближается к $f'(x)$ — то есть напрямую тестируешь определение дифференциала из этого урока.
-
Когда линейное (первого порядка) приближение оказывается недостаточно точным — как в задачах 23 и 24 — не спеши считать метод неработающим: добавь поправку через второй дифференциал. Это тот самый переход от градиентного спуска к методам второго порядка (типа Ньютона), которые учитывают кривизну и на многих задачах сходятся заметно быстрее.
-
Перед тем как доверять любому приближённому вычислению через дифференциал, мысленно спроси себя: «насколько $dx$ мало относительно масштаба, на котором функция заметно искривляется?» Если ответ «не очень мало» — как в примере с $(1{,}02)^{10}$ — заранее ожидай заметную погрешность и, при необходимости, добавляй следующий член разложения.
Дифференциал — это, пожалуй, самая практичная идея во всём курсе математического анализа: она превращает сложную, нелинейную реальность в удобную линейную модель ровно настолько долго, насколько это оправдано масштабом задачи. Каждый раз, когда ты будешь запускать обучение нейросети, знай — под капотом оптимизатора работает именно эта простая формула, $dy = f'(x)\,dx$, применённая миллионы раз подряд. В следующем уроке ты научишься находить производные — а значит, и дифференциалы — любых, сколь угодно запутанных функций быстро и без единого предела в явном виде.
Понял тему? Закрепи в боте! 🚀
Попрактикуйся на задачах и получи персональные рекомендации от AI
💪 Начать тренировку