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

Полный дифференциал

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

Полный дифференциал 📐

В прошлом уроке ты научился находить частные производные — $\frac{\partial f}{\partial x}$ и $\frac{\partial f}{\partial y}$ показывают, как меняется функция, если шевелить только одну переменную, «заморозив» остальные. Это удобно, но неполно: в реальной задаче переменные почти никогда не меняются по одной. Вес $w_1$ и вес $w_2$ в нейросети обновляются одновременно, на каждом шаге обучения. Цена товара и расходы на рекламу в экономической модели тоже двигаются вместе. Сегодня мы научимся отвечать на честный вопрос: если все переменные сдвинулись сразу, на сколько изменилась функция — хотя бы приближённо, но по одной понятной формуле?

Ответ называется полным дифференциалом, и формула для него обманчиво проста: $df=\frac{\partial f}{\partial x}dx+\frac{\partial f}{\partial y}dy$. Это просто сумма вкладов от движения по каждой оси в отдельности. Но за этой простотой скрывается тонкий вопрос, который часто проваливают даже те, кто уверенно считает частные производные: а всегда ли вообще законно складывать эти вклады? Окажется, что нет — существование обеих частных производных в точке ещё не гарантирует, что функция «ведёт себя линейно» во всех направлениях сразу, и сегодняшний урок наполовину состоит именно из разбора этой ловушки.

Если ты уже смотришь в сторону машинного обучения, держи в голове главную картинку урока: один шаг градиентного спуска в многомерном пространстве весов $\Delta w=-\eta\nabla L$ — это ровно движение по вектору $(dw_1,dw_2,\dots,dw_n)$, а предсказанное этим шагом изменение функции потерь — это ровно полный дифференциал $dL=\frac{\partial L}{\partial w_1}dw_1+\dots+\frac{\partial L}{\partial w_n}dw_n$. Каждый раз, когда оптимизатор в PyTorch или TensorFlow делает step(), он неявно опирается на то, что функция потерь в окрестности текущей точки хорошо приближается своим полным дифференциалом — линейной функцией от изменений весов. Если это приближение плохое (слишком большой шаг, слишком «острая» функция потерь), градиентный спуск начинает вести себя непредсказуемо, и понимание того, откуда берётся эта линейная аппроксимация и когда она перестаёт работать, — ровно то, что мы разберём сегодня.

Ещё один взгляд на ту же идею: полный дифференциал — это уравнение плоскости, касающейся графика функции в конкретной точке. В одномерном случае из урока про дифференциал ты работал с касательной прямой; здесь, при двух переменных, естественным обобщением становится касательная плоскость. Вся геометрия, весь смысл приближённых вычислений и вся идея линеаризации функции многих переменных — это буквально один и тот же факт, только увиденный с разных сторон. Давай разбираться по порядку.

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

Понятие, близкое к полному дифференциалу, всплыло в математике задолго до того, как ему дали строгое определение — в связи с практической задачей о так называемых «точных» дифференциальных уравнениях. В 1739–1740 годах французский математик Алексис Клод Клеро — тот самый, что позже займётся формой Земли и подтолкнёт к рождению частных производных, — изучал выражения вида $P(x,y)\,dx+Q(x,y)\,dy$ и задавался вопросом: когда такое выражение является полным дифференциалом некоторой функции $u(x,y)$, то есть когда найдётся $u$, для которой $du=P\,dx+Q\,dy$? Клеро показал, что ответ на этот вопрос сводится к одному простому равенству: $\frac{\partial P}{\partial y}=\frac{\partial Q}{\partial x}$. Именно в ходе этой работы окончательно оформилось (независимо переоткрытое чуть раньше и Эйлером) утверждение о равенстве смешанных частных производных — сегодня оно носит имя теоремы Клеро (или Шварца, по имени математика, давшего строгое доказательство полвека спустя). Это не случайное совпадение: условие точности дифференциальной формы и теорема о смешанных производных — это, по сути, две стороны одной медали, и обе они прямо касаются устройства полного дифференциала.

На протяжении XVIII века Леонард Эйлер и Жозеф Луи Лагранж активно использовали выражения вида $\frac{\partial f}{\partial x}dx+\frac{\partial f}{\partial y}dy$ как рабочий инструмент — в механике, в гидродинамике, в задачах о колебаниях струны и распространении тепла, — но обращались с ними скорее алгебраически, по аналогии с одномерным случаем, не особенно задаваясь вопросом о строгих условиях, при которых такая сумма действительно приближает приращение функции. Ситуация начала меняться в начале XIX века вместе с общей программой Огюстена Луи Коши по наведению строгости в анализе: именно Коши сформулировал определение приращения функции как суммы линейной части и остатка более высокого порядка малости — фундамент, на котором сегодня строится определение дифференцируемости.

Но по-настоящему тонкий вопрос — а обязательно ли существование частных производных влечёт дифференцируемость в этом строгом смысле — поднялся только во второй половине XIX века, когда Карл Вейерштрасс и его школа занялись систематическим построением контрпримеров к «интуитивно очевидным» утверждениям анализа. Оказалось, что для функций нескольких переменных интуиция резко подводит: можно построить функцию, у которой в некоторой точке обе частные производные прекрасно существуют, а сама функция там даже разрывна — то есть ни о какой дифференцируемости речи быть не может. Именно эти контрпримеры заставили математиков сформулировать отдельное, независимое от частных производных, строгое определение дифференцируемости через $o$-малое — то определение, которым мы будем пользоваться сегодня.

Полный дифференциал: определение и вычисление

Интуиция: сложи вклады от каждого направления

Представь, что ты стоишь на склоне холма, высота которого задаётся функцией $z=f(x,y)$, и делаешь маленький шаг: чуть-чуть на восток (на $dx$) и одновременно чуть-чуть на север (на $dy$). Как изменится высота под ногами? Если шаг маленький, логично предположить, что общий набор высоты — это примерно сумма набора высоты от «восточной» составляющей шага и набора высоты от «северной» составляющей, вычисленных независимо друг от друга. Набор высоты от движения на восток на $dx$ — это $\frac{\partial f}{\partial x}\,dx$ (скорость подъёма на восток, умноженная на пройденное расстояние). Набор высоты от движения на север на $dy$ — это $\frac{\partial f}{\partial y}\,dy$. Сложив их, получаем полный дифференциал:

$$df = \frac{\partial f}{\partial x}\,dx + \frac{\partial f}{\partial y}\,dy$$

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

Определение

Определение (полный дифференциал функции двух переменных). Пусть функция $z=f(x,y)$ дифференцируема в точке $(x_0,y_0)$. Полным дифференциалом функции в этой точке называется линейная функция приращений $dx$ и $dy$:

$$dz = \frac{\partial f}{\partial x}(x_0,y_0)\,dx + \frac{\partial f}{\partial y}(x_0,y_0)\,dy$$

где для независимых переменных $x$, $y$ полагают $dx:=\Delta x$, $dy:=\Delta y$ — по тому же соглашению, что и в одномерном случае.

Обобщение на $n$ переменных. Для функции $u=f(x_1,x_2,\dots,x_n)$ полный дифференциал определяется аналогично, как сумма вкладов по всем направлениям:

$$du = \sum_{i=1}^{n}\frac{\partial u}{\partial x_i}\,dx_i = \frac{\partial u}{\partial x_1}dx_1+\frac{\partial u}{\partial x_2}dx_2+\dots+\frac{\partial u}{\partial x_n}dx_n$$

Обрати внимание: формула выглядит как скалярное произведение вектора частных производных $\left(\frac{\partial u}{\partial x_1},\dots,\frac{\partial u}{\partial x_n}\right)$ на вектор приращений $(dx_1,\dots,dx_n)$. Этот вектор частных производных — не что иное, как градиент функции, с которым ты вплотную познакомишься в следующем уроке. Уже сейчас полезно запомнить: $du=\nabla u\cdot d\mathbf{x}$, где точка обозначает скалярное произведение.

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

Пример 1 (лёгкий). Найти полный дифференциал функции $z=x^3y^2$ в точке $(1,2)$ при $dx=0{,}1$, $dy=0{,}05$.

Находим частные производные: $\dfrac{\partial z}{\partial x}=3x^2y^2$, $\dfrac{\partial z}{\partial y}=2x^3y$. В точке $(1,2)$: $z_x=3\cdot1\cdot4=12$, $z_y=2\cdot1\cdot2=4$. Подставляем в формулу:

$$dz = 12\cdot0{,}1+4\cdot0{,}05 = 1{,}2+0{,}2 = 1{,}4$$

Ответ: $dz=1{,}4$.

Пример 2 (средний). Найти полный дифференциал функции $z=\ln(x^2+y^2)$ в общем виде и в точке $(3,4)$.

$$\frac{\partial z}{\partial x} = \frac{2x}{x^2+y^2}, \qquad \frac{\partial z}{\partial y} = \frac{2y}{x^2+y^2}$$

В точке $(3,4)$: $x^2+y^2=25$, значит $z_x=\dfrac{6}{25}=0{,}24$, $z_y=\dfrac{8}{25}=0{,}32$.

Ответ: в общем виде $dz=\dfrac{2x\,dx+2y\,dy}{x^2+y^2}$, в точке $(3,4)$: $dz=0{,}24\,dx+0{,}32\,dy$.

Пример 3 (сложный, машинное обучение). Функция потерь двух весов $L(w_1,w_2)=(w_1-3)^2+2(w_2+1)^2$. Найти полный дифференциал в точке $w_1=1$, $w_2=0$, сделать из этой точки один шаг градиентного спуска с $\eta=0{,}1$ и сравнить предсказанное дифференциалом изменение потери с фактическим.

Частные производные: $\dfrac{\partial L}{\partial w_1}=2(w_1-3)$, $\dfrac{\partial L}{\partial w_2}=4(w_2+1)$. В точке $(1,0)$: $L_{w_1}=2(1-3)=-4$, $L_{w_2}=4(0+1)=4$. Значит $\nabla L=(-4,4)$, а полный дифференциал в общем виде: $dL=-4\,dw_1+4\,dw_2$.

Шаг градиентного спуска: $\Delta w=-\eta\nabla L=-0{,}1\cdot(-4,4)=(0{,}4,-0{,}4)$. Подставляем $dw_1=0{,}4$, $dw_2=-0{,}4$ в дифференциал:

$$dL = -4\cdot0{,}4+4\cdot(-0{,}4) = -1{,}6-1{,}6=-3{,}2$$

Дифференциал предсказывает, что потеря убудет примерно на $3{,}2$. Проверим фактически: $L(1,0)=(1-3)^2+2(0+1)^2=4+2=6$. Новая точка $(1{,}4,\,-0{,}4)$: $L(1{,}4,-0{,}4)=(1{,}4-3)^2+2(-0{,}4+1)^2=(-1{,}6)^2+2\cdot0{,}6^2=2{,}56+0{,}72=3{,}28$. Фактическое изменение: $3{,}28-6=-2{,}72$.

Ответ: предсказанное дифференциалом изменение $dL=-3{,}2$, фактическое $\Delta L=-2{,}72$. Разница объясняется тем, что $L$ квадратична, а не линейна: дифференциал учитывает только первый порядок, тогда как истинное изменение включает ещё и вклад второго порядка от кривизны параболоида.

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

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

Дифференцируемость: необходимое и достаточное условие

Интуиция: гладкость сразу во всех направлениях, а не по отдельным осям

Существование частных производных $z_x$ и $z_y$ в точке говорит лишь о том, что функция ведёт себя хорошо вдоль двух конкретных прямых — горизонтальной и вертикальной, проходящих через эту точку. Но точка на поверхности окружена бесконечным числом направлений, а не только двумя. Дифференцируемость — куда более строгое требование: она означает, что приращение функции хорошо приближается одной и той же линейной формулой независимо от того, в каком направлении и как именно мы уходим из точки. Может оказаться, что вдоль осей всё гладко, а по диагонали функция ведёт себя совершенно иначе — и тогда о дифференцируемости говорить нельзя, хотя обе частные производные прекрасно существуют.

Определение

Определение (дифференцируемость функции двух переменных). Функция $z=f(x,y)$ называется дифференцируемой в точке $(x_0,y_0)$, если её полное приращение $\Delta z=f(x_0+\Delta x,\,y_0+\Delta y)-f(x_0,y_0)$ можно представить в виде

$$\Delta z = A\,\Delta x + B\,\Delta y + o(\rho), \qquad \rho=\sqrt{\Delta x^2+\Delta y^2}\to0$$

где $A$ и $B$ — числа, не зависящие от $\Delta x$, $\Delta y$. При этом обязательно $A=\dfrac{\partial f}{\partial x}(x_0,y_0)$, $B=\dfrac{\partial f}{\partial y}(x_0,y_0)$.

Необходимое условие. Если $f$ дифференцируема в точке, то обе частные производные в этой точке существуют (и равны коэффициентам $A$, $B$ выше). Обратное неверно!

Достаточное условие. Если частные производные $f_x$, $f_y$ существуют в некоторой окрестности точки $(x_0,y_0)$ и непрерывны в самой точке $(x_0,y_0)$, то $f$ дифференцируема в этой точке.

Разрыв между необходимым и достаточным условием — это ровно та зона, где живут все контрпримеры: существование частных производных без их непрерывности не гарантирует ничего. Давай посмотрим на классический контрпример, который стоит запомнить дословно.

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

Пример 1 (лёгкий, положительный). Проверить по определению дифференцируемость функции $z=x^2+y^2$ в произвольной точке $(x_0,y_0)$.

Вычисляем полное приращение:

$$\Delta z = (x_0+\Delta x)^2+(y_0+\Delta y)^2-x_0^2-y_0^2 = 2x_0\Delta x+2y_0\Delta y+\Delta x^2+\Delta y^2$$

Линейная часть — это $2x_0\Delta x+2y_0\Delta y$, а остаток $\Delta x^2+\Delta y^2=\rho^2$. Поскольку $\dfrac{\rho^2}{\rho}=\rho\to0$ при $\rho\to0$, остаток действительно является $o(\rho)$.

Ответ: функция дифференцируема в любой точке, $dz=2x_0\,dx+2y_0\,dy$.

Пример 2 (средний, контрпример). Проверить дифференцируемость функции $f(x,y)=\dfrac{xy}{x^2+y^2}$ при $(x,y)\ne(0,0)$, $f(0,0)=0$, в точке $(0,0)$.

Сначала найдём частные производные в начале координат прямо по определению через предел:

$$f_x(0,0) = \lim_{\Delta x\to0}\frac{f(\Delta x,0)-f(0,0)}{\Delta x} = \lim_{\Delta x\to0}\frac{0-0}{\Delta x}=0$$

(так как $f(\Delta x,0)=\dfrac{\Delta x\cdot0}{\Delta x^2}=0$). Аналогично $f_y(0,0)=0$. Обе частные производные существуют и равны нулю — на первый взгляд всё гладко.

Но проверим саму функцию на непрерывность в $(0,0)$: вдоль прямой $y=x$ имеем $f(x,x)=\dfrac{x\cdot x}{x^2+x^2}=\dfrac{x^2}{2x^2}=\dfrac12$ для любого $x\ne0$, а $f(0,0)=0$. Значит предел функции при движении вдоль этой прямой к $(0,0)$ равен $\dfrac12$, а не $0$ — функция разрывна в этой точке. Поскольку дифференцируемость обязательно влечёт непрерывность (это мы докажем в задаче 25 практической части), разрывная функция не может быть дифференцируемой.

Ответ: функция не дифференцируема в $(0,0)$, несмотря на то что обе частные производные там существуют и равны нулю.

Пример 3 (сложный, более тонкий контрпример). Проверить дифференцируемость функции $f(x,y)=\dfrac{x^2y}{x^2+y^2}$ при $(x,y)\ne(0,0)$, $f(0,0)=0$, в точке $(0,0)$. В отличие от примера 2, эта функция непрерывна всюду, включая начало координат.

Непрерывность в $(0,0)$ проверяется оценкой: $|f(x,y)|=\dfrac{x^2}{x^2+y^2}|y|\le|y|\to0$ при $(x,y)\to(0,0)$, поскольку дробь $\dfrac{x^2}{x^2+y^2}\le1$ всегда. Значит функция непрерывна в начале координат.

Частные производные: $f_x(0,0)=\lim_{\Delta x\to0}\dfrac{f(\Delta x,0)}{\Delta x}=\lim\dfrac{0}{\Delta x}=0$ (так как $f(\Delta x,0)=0$), $f_y(0,0)=\lim_{\Delta y\to0}\dfrac{f(0,\Delta y)}{\Delta y}=\lim\dfrac{0}{\Delta y}=0$ (так как $f(0,\Delta y)=0$). Обе частные производные снова существуют и равны нулю.

Проверим, является ли $f$ дифференцируемой, то есть верно ли, что $f(x,y)-0-0\cdot x-0\cdot y=o(\rho)$. Возьмём $\Delta x=\Delta y=t\to0$: $f(t,t)=\dfrac{t^2\cdot t}{t^2+t^2}=\dfrac{t^3}{2t^2}=\dfrac{t}{2}$, при этом $\rho=\sqrt{t^2+t^2}=|t|\sqrt2$. Отношение:

$$\frac{f(t,t)-0}{\rho} = \frac{t/2}{|t|\sqrt2} = \frac{1}{2\sqrt2}\cdot\operatorname{sign}(t) \ne 0$$

Это отношение не стремится к нулю при $t\to0$ — оно остаётся константой по модулю. Значит остаток не является $o(\rho)$, и функция не дифференцируема в $(0,0)$, несмотря на непрерывность и существование обеих частных производных.

Ответ: функция непрерывна, обе частные производные существуют и равны нулю, но функция всё равно не дифференцируема в $(0,0)$ — этот пример показывает, что даже непрерывность функции вместе с существованием частных производных недостаточны; действительно достаточное условие — это именно непрерывность самих частных производных как функций (а в этом примере, как нетрудно проверить, $f_x$ и $f_y$ разрывны в начале координат).

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

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

Геометрический смысл: касательная плоскость

Интуиция: обобщение касательной прямой на один измерение выше

В уроке про дифференциал функции одной переменной ты выяснил, что $dy$ — это приращение ординаты касательной прямой, а не самой кривой. Для функции двух переменных естественным аналогом кривой служит поверхность $z=f(x,y)$, а аналогом касательной прямой — касательная плоскость, которая прикасается к поверхности в одной точке и локально повторяет её наклон в обоих направлениях сразу.

Определение

Определение (касательная плоскость). Пусть функция $z=f(x,y)$ дифференцируема в точке $(x_0,y_0)$. Касательной плоскостью к поверхности $z=f(x,y)$ в точке $(x_0,y_0,z_0)$, где $z_0=f(x_0,y_0)$, называется плоскость

$$z = f(x_0,y_0) + \frac{\partial f}{\partial x}(x_0,y_0)\,(x-x_0) + \frac{\partial f}{\partial y}(x_0,y_0)\,(y-y_0)$$

Полный дифференциал $dz=f_x\,dx+f_y\,dy$ — это в точности приращение аппликаты (высоты $z$) касательной плоскости при переходе от $(x_0,y_0)$ к $(x_0+dx,\,y_0+dy)$, точно так же как в одномерном случае $dy$ было приращением ординаты касательной прямой. Вектор нормали к касательной плоскости равен $(f_x,\,f_y,\,-1)$.

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

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

Пример 1 (лёгкий). Найти уравнение касательной плоскости к поверхности $z=x^2+y^2$ в точке $(1,1,2)$.

$z_x=2x$, $z_y=2y$; в точке $(1,1)$: $z_x=2$, $z_y=2$.

$$z = 2 + 2(x-1) + 2(y-1) = 2x+2y-2$$

Ответ: $z=2x+2y-2$.

Пример 2 (средний). Найти касательную плоскость к поверхности $z=\sqrt{x^2+y^2}$ (конус) в точке $(3,4,5)$ и объяснить, почему в точке $(0,0,0)$ такое построение невозможно.

В точке $(3,4)$: $z_x=\dfrac{x}{\sqrt{x^2+y^2}}=\dfrac{3}{5}$, $z_y=\dfrac{4}{5}$. Плоскость:

$$z = 5 + \frac35(x-3)+\frac45(y-4)$$

В вершине конуса $(0,0)$ частная производная по $x$ не существует: $f_x(0,0)=\lim_{\Delta x\to0}\dfrac{|\Delta x|-0}{\Delta x}$ — этот предел различен слева и справа ($-1$ и $1$), поэтому предела нет, функция не дифференцируема в вершине, и касательная плоскость там не определена — что геометрически совершенно ожидаемо: у острия конуса нет единственного касательного направления.

Ответ: $z=5+\frac35(x-3)+\frac45(y-4)$ в точке $(3,4,5)$; в вершине касательная плоскость не существует из-за отсутствия частных производных.

Пример 3 (сложный, машинное обучение). Функция потерь $L(w_1,w_2)=(w_1-2)^2+(w_2-1)^2$. Найти касательные плоскости в точке минимума $(2,1)$ и в точке $(0,0)$, и объяснить, что говорит о точке горизонтальность касательной плоскости.

В точке $(2,1)$: $L_{w_1}=2(w_1-2)=0$, $L_{w_2}=2(w_2-1)=0$, $L(2,1)=0$. Касательная плоскость: $z=0+0\cdot(w_1-2)+0\cdot(w_2-1)=0$ — горизонтальная плоскость.

В точке $(0,0)$: $L_{w_1}=2(0-2)=-4$, $L_{w_2}=2(0-1)=-2$, $L(0,0)=4+1=5$. Касательная плоскость: $z=5-4w_1-2w_2$.

Ответ: в точке минимума касательная плоскость горизонтальна ($z=\text{const}$) — это прямое геометрическое выражение того факта, что в стационарной точке градиент равен нулю: полный дифференциал $dL=0\cdot dw_1+0\cdot dw_2$ обращается в нуль при любом сдвиге, то есть первое приближение не растёт и не убывает ни в одном направлении. В точке $(0,0)$ плоскость наклонена в сторону градиента $(-4,-2)$, а направление наискорейшего убывания потери — противоположное, $(4,2)$: именно туда и «съезжает» градиентный спуск.

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

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

Приближённые вычисления с помощью полного дифференциала

Интуиция: тот же трюк, что и в одномерном случае, но по нескольким осям сразу

В уроке про дифференциал одной переменной ты пользовался приближением $f(x_0+dx)\approx f(x_0)+f'(x_0)dx$, чтобы быстро считать значения функции рядом с удобной точкой, не вычисляя сложное выражение напрямую. Для функции нескольких переменных работает ровно тот же приём, только вместо одной поправки складываются несколько — по каждой переменной своя.

Определение

Определение (формула приближённых вычислений через полный дифференциал). Если функция $f$ дифференцируема в точке $(x_0,y_0)$, а $dx$, $dy$ достаточно малы, то

$$f(x_0+dx,\,y_0+dy) \approx f(x_0,y_0) + \frac{\partial f}{\partial x}(x_0,y_0)\,dx + \frac{\partial f}{\partial y}(x_0,y_0)\,dy$$

Погрешность этого приближения имеет порядок $o(\rho)$, $\rho=\sqrt{dx^2+dy^2}$, то есть убывает быстрее самого шага при $\rho\to0$.

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

Пример 1 (лёгкий). Вычислить приближённо значение $f(x,y)=x^2y$ в точке $(2{,}01,\,2{,}98)$.

Берём базовую точку $x_0=2$, $y_0=3$, $dx=0{,}01$, $dy=-0{,}02$. Тогда $f(2,3)=4\cdot3=12$, $f_x=2xy=12$, $f_y=x^2=4$.

$$df = 12\cdot0{,}01+4\cdot(-0{,}02) = 0{,}12-0{,}08=0{,}04$$

Приближённое значение: $12+0{,}04=12{,}04$.

Ответ: $f(2{,}01,\,2{,}98)\approx12{,}04$. Точное значение $2{,}01^2\cdot2{,}98=4{,}0401\cdot2{,}98=12{,}03950$ — совпадение до третьего знака после запятой.

Пример 2 (средний). Вычислить приближённо $\sqrt{3{,}02^2+3{,}97^2}$.

Берём $f(x,y)=\sqrt{x^2+y^2}$, базовую точку $x_0=3$, $y_0=4$ (удобно, так как $\sqrt{9+16}=5$), $dx=0{,}02$, $dy=-0{,}03$. Тогда $f_x=\dfrac{x}{f}=\dfrac35=0{,}6$, $f_y=\dfrac{y}{f}=\dfrac45=0{,}8$.

$$df = 0{,}6\cdot0{,}02+0{,}8\cdot(-0{,}03) = 0{,}012-0{,}024=-0{,}012$$

Приближённое значение: $5-0{,}012=4{,}988$.

Ответ: $\sqrt{3{,}02^2+3{,}97^2}\approx4{,}988$. Точное значение $\approx4{,}9881$ — совпадение до трёх знаков.

Пример 3 (сложный, машинное обучение). Функция потерь $L(w_1,w_2)=w_1^2+3w_2^2$, текущая точка $w_0=(2,-1)$, шаг градиентного спуска с $\eta=0{,}05$. Найти предсказанное дифференциалом изменение потери и сравнить с фактическим.

Градиент: $\nabla L=(2w_1,\,6w_2)$, в точке $(2,-1)$: $\nabla L=(4,-6)$. Шаг: $\Delta w=-\eta\nabla L=(-0{,}05\cdot4,\,-0{,}05\cdot(-6))=(-0{,}2,\,0{,}3)$.

$$dL = 4\cdot(-0{,}2)+(-6)\cdot0{,}3 = -0{,}8-1{,}8=-2{,}6$$

$L(2,-1)=4+3=7$, приближённая новая потеря: $7-2{,}6=4{,}4$.

Точное значение: новая точка $(1{,}8,\,-0{,}7)$, $L(1{,}8,-0{,}7)=1{,}8^2+3\cdot0{,}7^2=3{,}24+1{,}47=4{,}71$.

Ответ: приближение через дифференциал даёт $4{,}4$, точное значение — $4{,}71$, разница $0{,}31$ объясняется квадратичной кривизной функции потерь по $w_2$ (коэффициент $3$ делает эту переменную более «крутой», и линейное приближение там работает грубее).

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

Приближённые вычисления через полный дифференциал — это не просто устаревший инструмент для расчётов без калькулятора. Это ровно тот же принцип, на котором строится вся численная оптимизация в машинном обучении: перед тем как сделать шаг, алгоритм предполагает, что функция потерь в окрестности текущей точки ведёт себя линейно, и рассчитывает шаг исходя из этого предположения. Разница между предсказанным линейным изменением $dL$ и фактическим $\Delta L$ — это ровно та величина, которая растёт вместе с длиной шага и кривизной функции, и понимание этого факта напрямую объясняет, почему слишком большая скорость обучения (шаг $\eta$) ломает обучение: линейное приближение просто перестаёт быть верным.

Инвариантность формы полного дифференциала первого порядка

Интуиция: форма формулы не зависит от того, что стоит за переменными

Ты уже встречал это явление для функции одной переменной: если $y=f(u)$, а $u=\varphi(x)$ — сложная функция, то дифференциал $dy=f'(u)\,du$ выглядит одинаково, независимо от того, является ли $u$ независимой переменной или сама вычисляется через $x$. Для функции нескольких переменных верен точно такой же факт, только с двумя (или более) слагаемыми.

Определение

Определение (инвариантность формы первого полного дифференциала). Пусть $z=f(x,y)$ — дифференцируемая функция. Тогда полный дифференциал

$$dz = \frac{\partial z}{\partial x}\,dx + \frac{\partial z}{\partial y}\,dy$$

сохраняет ровно эту форму независимо от того, являются ли $x$ и $y$ независимыми переменными, или сами являются дифференцируемыми функциями каких-то других переменных $u,v$ — в этом случае $dx$ и $dy$ следует понимать как полные дифференциалы промежуточных функций $x(u,v)$, $y(u,v)$, вычисленные по тем же правилам.

Доказательство короткое и стоит того, чтобы провести его целиком. Пусть $x=x(u,v)$, $y=y(u,v)$ — дифференцируемые функции. По правилу цепи для сложной функции двух переменных:

$$\frac{\partial z}{\partial u}=\frac{\partial z}{\partial x}\frac{\partial x}{\partial u}+\frac{\partial z}{\partial y}\frac{\partial y}{\partial u}, \qquad \frac{\partial z}{\partial v}=\frac{\partial z}{\partial x}\frac{\partial x}{\partial v}+\frac{\partial z}{\partial y}\frac{\partial y}{\partial v}$$

Тогда полный дифференциал по переменным $u,v$:

$$dz = \frac{\partial z}{\partial u}du+\frac{\partial z}{\partial v}dv = \left(\frac{\partial z}{\partial x}x_u+\frac{\partial z}{\partial y}y_u\right)du + \left(\frac{\partial z}{\partial x}x_v+\frac{\partial z}{\partial y}y_v\right)dv$$

Перегруппируем слагаемые по $z_x$ и $z_y$:

$$dz = \frac{\partial z}{\partial x}\underbrace{(x_u\,du+x_v\,dv)}_{dx} + \frac{\partial z}{\partial y}\underbrace{(y_u\,du+y_v\,dv)}_{dy} = \frac{\partial z}{\partial x}dx+\frac{\partial z}{\partial y}dy$$

Форма в точности сохранилась, только теперь $dx$ и $dy$ — это уже не «свободные» приращения независимых переменных, а полные дифференциалы промежуточных функций.

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

Пример 1 (лёгкий). Убедиться, что для $z=x^2+y^2$ форма дифференциала $dz=2x\,dx+2y\,dy$ сохраняется, если положить $x=u$, $y=v$.

Тривиально: при $x=u$, $y=v$ имеем $dx=du$, $dy=dv$, значит $dz=2u\,du+2v\,dv$ — та же формула, с теми же коэффициентами, просто переобозначенными переменными.

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

Пример 2 (средний). Дано $z=xy$, $x=u+v$, $y=u-v$. Найти $dz$ двумя способами — через $x,y$ и через $u,v$ напрямую — и убедиться, что результаты совпадают.

Способ 1 (через $x,y$). $dz=y\,dx+x\,dy$. Здесь $dx=du+dv$, $dy=du-dv$. Подставляем:

$$dz = (u-v)(du+dv)+(u+v)(du-dv) = \big[(u-v)+(u+v)\big]du+\big[(u-v)-(u+v)\big]dv = 2u\,du-2v\,dv$$

Способ 2 (напрямую через $u,v$). $z=xy=(u+v)(u-v)=u^2-v^2$, значит $dz=2u\,du-2v\,dv$.

Ответ: оба способа дают $dz=2u\,du-2v\,dv$ — результаты совпадают, что и подтверждает инвариантность формы.

Пример 3 (сложный, машинное обучение — обратное распространение ошибки). Один нейрон: $a=\sigma(z)$, $z=wx+b$, функция потерь $L=(a-y)^2$. Веса и вход: $x=1$, $w=0{,}5$, $b=0$, $y=1$. Используя инвариантность формы полного дифференциала, найти $\dfrac{\partial L}{\partial w}$ и $\dfrac{\partial L}{\partial b}$.

По цепи полных дифференциалов: $dL=2(a-y)\,da$, $da=\sigma'(z)\,dz$, $dz=x\,dw+db$ (при фиксированном входе $x$). Форма $dL=\frac{\partial L}{\partial w}dw+\frac{\partial L}{\partial b}db$ сохраняется именно потому, что каждый промежуточный дифференциал ($da$, $dz$) подставляется в форму следующего без изменения общей структуры — это и есть инвариантность формы в действии, а на практике — ровно то, что вычисляет обратное распространение ошибки слой за слоем.

Считаем численно: $z=0{,}5\cdot1+0=0{,}5$. $\sigma(0{,}5)=\dfrac{1}{1+e^{-0{,}5}}\approx0{,}6225$, значит $a\approx0{,}6225$, $a-y\approx-0{,}3775$. $\sigma'(z)=a(1-a)\approx0{,}6225\cdot0{,}3775\approx0{,}2350$.

$$dL = 2(a-y)\sigma'(z)\,(x\,dw+db) = \underbrace{2(a-y)\sigma'(z)x}_{\partial L/\partial w}dw+\underbrace{2(a-y)\sigma'(z)}_{\partial L/\partial b}db$$$$\frac{\partial L}{\partial w} \approx 2\cdot(-0{,}3775)\cdot0{,}2350\cdot1 \approx -0{,}1774, \qquad \frac{\partial L}{\partial b}\approx -0{,}1774$$

Ответ: $\dfrac{\partial L}{\partial w}\approx-0{,}1774$, $\dfrac{\partial L}{\partial b}\approx-0{,}1774$ (совпадают, поскольку $x=1$). Именно инвариантность формы полного дифференциала позволяет протягивать цепочку производных через сколь угодно много промежуточных функций — слоёв сети — не меняя общей структуры формулы, и это математическое ядро алгоритма обратного распространения ошибки.

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

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

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

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

Задание 1: Найти $dz$ для $z=x^3y^2$ в точке $(1,2)$ при $dx=0{,}1$, $dy=0{,}05$.


Задание 2: Найти полный дифференциал функции $z=x^2+3xy-y^2$ в общем виде.


Задание 3: Найти $du$ для $u=x^2+y^2+z^2$ в точке $(1,-1,2)$ при $dx=dy=dz=0{,}01$.


Задание 4: Проверить по определению дифференцируемость функции $f(x,y)=xy$ в произвольной точке $(x_0,y_0)$.


Задание 5: Найти уравнение касательной плоскости к поверхности $z=x^2-y^2$ в точке $(2,1,3)$.


Задание 6: Вычислить приближённо $f(x,y)=x^2y$ в точке $(1{,}98,\,3{,}02)$.


Задание 7: Найти $du$ для $u=\ln(x+y^2)$ в точке $(3,1)$ при $dx=0{,}02$, $dy=-0{,}02$.


Задание 8: Найти $df$ для $f(x,y)=\sin x\cos y$ в точке $(0,0)$ при $dx=0{,}1$, $dy=-0{,}2$.


Задание 9: Найти полный дифференциал функции трёх переменных $u=xyz$ в точке $(1,2,3)$ при $dx=0{,}01$, $dy=-0{,}02$, $dz=0{,}01$.


Задание 10 (машинное обучение): Функция потерь $L(w_1,w_2)=w_1^2+w_2^2$ в точке $(3,4)$. Найти полный дифференциал и указать направление наискорейшего убывания потери.


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

Задание 11: Проверить дифференцируемость функции $f(x,y)=\dfrac{xy}{x^2+y^2}$ ($f(0,0)=0$) в точке $(0,0)$.


Задание 12: Найти $du$ для $u=e^x\ln y$ в точке $(0,1)$ при $dx=0{,}02$, $dy=0{,}03$.


Задание 13: Найти уравнение касательной плоскости к поверхности $z=e^{x-y}$ в точке $(1,1,1)$.


Задание 14: Объём цилиндра $V=\pi r^2h$, $r=5$ см (с максимальной погрешностью измерения $0{,}05$ см), $h=10$ см (с погрешностью $0{,}1$ см). Оценить максимальную абсолютную и относительную погрешность вычисления объёма через полный дифференциал.


Задание 15: Вычислить приближённо $1{,}97^{3{,}02}$.


Задание 16: Найти $du$ для $u=\arctan\dfrac{y}{x}$ в точке $(1,1)$ при $dx=0{,}02$, $dy=-0{,}01$.


Задание 17 (инвариантность формы): Дано $z=x^2y$, $x=u^2$, $y=v$. Найти $dz$ двумя способами в точке $u=1$, $v=2$ и убедиться в совпадении.


Задание 18: Найти касательную плоскость к полусфере $z=\sqrt{4-x^2-y^2}$ в точке $(0,0,2)$ и в точке $(1,1,\sqrt2)$.


Задание 19 (машинное обучение): Функция потерь $L(w_1,w_2)=(w_1-1)^2+4(w_2-2)^2$, старт из точки $(0,0)$, шаг $\eta=0{,}1$. Найти предсказанное дифференциалом изменение потери и сравнить с фактическим.


Задание 20: Найти $du$ для $u=x^y+y^x$ в точке $(2,2)$ при $dx=dy=0{,}01$.


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

Задание 21: Доказать, что $f(x,y)=\sqrt{|xy|}$ не дифференцируема в точке $(0,0)$, хотя обе частные производные там существуют.


Задание 22: Сфера задана уравнением $x^2+y^2+z^2=9$. Найти касательную плоскость в точке $(2,2,1)$, используя неявное дифференцирование.


Задание 23 (инвариантность формы): Пусть $z=x^2+y^2$, $x=t^2$, $y=\sin t$. Найти $\dfrac{dz}{dt}$ в точке $t=0$, используя инвариантность формы полного дифференциала.


Задание 24 (машинное обучение): Линейная регрессия с двумя признаками, один обучающий пример $x_1=2$, $x_2=1$, $y=5$; функция потерь $L(w_1,w_2)=\dfrac12(w_1x_1+w_2x_2-y)^2$, точка $(w_1,w_2)=(1,1)$, шаг $\eta=0{,}2$. Найти полный дифференциал, сделать шаг и сравнить предсказанную дифференциалом потерю с точной.


Задание 25: Доказать: если функция $f(x,y)$ дифференцируема в точке $(x_0,y_0)$, то она непрерывна в этой точке.


Задание 26: Найти $du$ для $u=x^yz$ в точке $(2,1,3)$ при $dx=0{,}01$, $dy=0{,}02$, $dz=-0{,}01$.


Задание 27: Показать, что в вершине конуса $z=\sqrt{x^2+y^2}$ касательная плоскость не существует.


Задание 28: Доказать формулу инвариантности формы полного дифференциала для общего случая $z=f(x,y)$, $x=x(u,v)$, $y=y(u,v)$, отталкиваясь от правила цепи.


Задание 29: Дана функция $f(x,y,z)=\dfrac{xyz}{x+y+z}$. Найти полный дифференциал в точке $(2,3,6)$ при $dx=0{,}1$, $dy=-0{,}1$, $dz=0{,}05$.


Задание 30 (машинное обучение, обратное распространение ошибки): Нейрон с двумя входами $a=\sigma(w_1x_1+w_2x_2+b)$, функция потерь $L=(a-y)^2$. Даны $w_1=0{,}4$, $w_2=-0{,}2$, $b=0{,}1$, $x_1=1$, $x_2=2$, $y=1$. Найти полный дифференциал $dL$ по весам, используя инвариантность формы, и получить один шаг градиентного спуска с $\eta=0{,}5$.

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

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

  • Вера, что существование частных производных автоматически означает дифференцируемость. Это главная ловушка урока: пример $\dfrac{xy}{x^2+y^2}$ (задание 11) показывает функцию, у которой обе частные производные существуют и равны нулю, но сама функция разрывна и потому не дифференцируема. Существование частных производных — необходимое, но не достаточное условие.

  • Забывают, что дифференцируемость гарантированно влечёт непрерывность. Если функция разрывна в точке (даже если частные производные там вычисляются формально), она автоматически не дифференцируема — не нужно даже проверять определение через $o(\rho)$, достаточно установить разрыв.

  • Путают $dz$ (полный дифференциал) и $\Delta z$ (истинное приращение). Это разные объекты: $dz$ — линейная функция от $dx,dy$, которая лишь приближает $\Delta z$ с точностью до $o(\rho)$. При больших приращениях (как в задании 19 или 24) разница между ними может быть значительной, и это не ошибка вычислений, а фундаментальное свойство линейного приближения.

  • Ошибка знака при неявном дифференцировании. Если поверхность задана уравнением $F(x,y,z)=0$, а не явной формулой $z=f(x,y)$, легко забыть, что $z$ сам зависит от $x$ и $y$, и продифференцировать неаккуратно. Правильный путь — дифференцировать всё уравнение целиком, как в задании 22, а затем выразить $dz$ через $dx,dy$.

  • Применение линейного приближения при слишком большом шаге без контроля погрешности. Дифференциал даёт точность порядка $o(\rho)$ только при $\rho\to0$; при конечном, не особо малом шаге ошибка может быть большой, а иногда приводить к формально бессмысленным результатам (как отрицательная потеря в задании 24).

  • Забывают, что достаточное условие требует непрерывности самих частных производных, а не только их существования. Пример из блока про дифференцируемость ($\frac{x^2y}{x^2+y^2}$) — функция непрерывна, частные производные существуют, но они разрывны в самой точке, и этого достаточно, чтобы функция оказалась недифференцируемой.

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

  • Полный дифференциал функции двух переменных: $dz=\dfrac{\partial z}{\partial x}dx+\dfrac{\partial z}{\partial y}dy$; для $n$ переменных — сумма аналогичных слагаемых по всем осям.

  • Полный дифференциал — это скалярное произведение градиента на вектор приращений: $du=\nabla u\cdot d\mathbf{x}$.

  • Дифференцируемость определяется через представление приращения как суммы линейной части и остатка $o(\rho)$ — а не просто как существование частных производных.

  • Существование частных производных — необходимое условие дифференцируемости, но не достаточное.

  • Непрерывность частных производных в точке — достаточное условие дифференцируемости.

  • Дифференцируемость гарантированно влечёт непрерывность функции; поэтому разрыв в точке сразу исключает дифференцируемость.

  • Геометрически полный дифференциал — это приращение аппликаты касательной плоскости к поверхности $z=f(x,y)$.

  • Приближённые вычисления через полный дифференциал: $f(x_0+dx,y_0+dy)\approx f(x_0,y_0)+f_x\,dx+f_y\,dy$, с погрешностью порядка $o(\rho)$.

  • Форма первого полного дифференциала инвариантна: она не меняется, даже если $x$ и $y$ сами являются функциями других переменных — именно на этом держится цепное правило для сложных функций многих переменных и алгоритм обратного распространения ошибки.

  • Один шаг градиентного спуска $\Delta w=-\eta\nabla L$ — это прямое применение полного дифференциала: предсказанное изменение потери на этом шаге равно $dL=\nabla L\cdot\Delta w$.

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

Этот урок стоит на пересечении сразу нескольких линий курса. Он прямо продолжает дифференциал функции одной переменной (урок 187): всё, что ты знал про линейное приближение, приращение вдоль касательной и приближённые вычисления, здесь просто получило дополнительное измерение. Строительным материалом для полного дифференциала служат частные производные (урок 210) — без них не из чего складывать формулу. А коэффициенты полного дифференциала — вектор $(f_x,f_y)$ — это уже прямая подготовка к следующему уроку про производную по направлению и градиент (урок 212), где этот вектор станет главным героем и получит собственную геометрическую интерпретацию как направление наискорейшего роста. Условие $\dfrac{\partial P}{\partial y}=\dfrac{\partial Q}{\partial x}$ из истории урока — это теорема Клеро-Шварца о смешанных производных, к которой ты ещё вернёшься при обсуждении дифференциальных уравнений и рядов Тейлора для функций нескольких переменных.

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

  • Термин «полный дифференциал» возник исторически в противопоставление «частному дифференциалу» — вкладу от изменения только одной переменной. Именно необходимость различать эти два понятия подтолкнула математиков XVIII–XIX веков к формированию отдельной дисциплины — теории уравнений в частных производных.

  • Условие того, что выражение $P\,dx+Q\,dy$ является полным дифференциалом некоторой функции («точная дифференциальная форма»), эквивалентно равенству $\dfrac{\partial P}{\partial y}=\dfrac{\partial Q}{\partial x}$ — этот же критерий используется при решении так называемых точных дифференциальных уравнений, где он позволяет мгновенно понять, есть ли у уравнения «скрытая» функция-потенциал.

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

  • Символ $\partial$ для частной производной ввёл в конце XVIII века французский математик Адриен Мари Лежандр — специально для того, чтобы визуально отличать «частное» изменение функции по одной переменной от «полного» изменения, обозначаемого обычным $d$, которое использовал ещё Лейбниц.

  • Современные фреймворки глубокого обучения (PyTorch, TensorFlow, JAX) вычисляют градиенты функции потерь по миллионам параметров сети с помощью автоматического дифференцирования, в основе которого лежит именно инвариантность формы полного дифференциала: она позволяет протягивать цепочку частных производных через произвольное число слоёв без изменения структуры вычислений.

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

  • Прежде чем проверять дифференцируемость подозрительной функции в точке через строгое определение, сначала проверь непрерывность. Если функция там разрывна — дифференцируемость исключена автоматически, и трудоёмкую проверку остатка $o(\rho)$ можно пропустить.

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

  • Сначала всегда выписывай полный дифференциал в общем виде — как функцию $x$ и $y$ — и только потом подставляй конкретную точку. Так меньше шансов перепутать порядок вычислений и ошибиться в арифметике.

  • Если задача просит доказать дифференцируемость через определение, не пытайся угадать коэффициенты $A$ и $B$ «на глаз» — по необходимому условию единственные кандидаты на эту роль это частные производные функции в данной точке. Вычисли их сначала, а потом уже проверяй остаток на $o(\rho)$.

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

  • Держи в голове формулу $dL=\nabla L\cdot\Delta w$ как единый ключ к пониманию градиентного спуска: полный дифференциал функции потерь — это ровно скалярное произведение градиента на вектор изменения весов, и обучение сводится к выбору $\Delta w$, делающего это произведение максимально отрицательным.

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

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

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

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