Теория поля (дивергенция, ротор) 🌊
Представь, что ты держишь в руках метеорологическую карту ветра: в каждой точке над этой картой нарисована стрелка, показывающая, откуда и куда дует ветер в данном месте. Где-то стрелки расходятся во все стороны — это область высокого давления, откуда воздух буквально «вытекает». Где-то, наоборот, стрелки со всех сторон сходятся к одной точке — циклон, воздух туда «втекает». А где-то стрелки закручиваются в маленький водоворот — локальный вихрь, торнадо в миниатюре. Три принципиально разных сценария поведения — и до сих пор в нашем курсе не было ни одного инструмента, который умел бы отличать их друг от друга количественно, а не на глаз.
Сегодня мы построим ровно такие инструменты. Дивергенция векторного поля — это число, которое в каждой точке говорит: «здесь источник» (если оно положительное), «здесь сток» (если отрицательное) или «здесь ничего не рождается и не исчезает» (если оно равно нулю). Ротор векторного поля — это уже не число, а вектор, который говорит: «вот ось, вокруг которой закручивается поле в этой точке, и вот насколько сильно оно закручивается». Вместе с уже знакомым тебе градиентом эти два оператора образуют полный «алфавит» теории поля — язык, на котором записаны уравнения Максвелла, уравнения гидродинамики и, как ты увидишь ближе к концу урока, немало содержательных фактов о поведении оптимизаторов в машинном обучении.
Раз уж мы заговорили про машинное обучение — вот главная интуиция, ради которой стоит удерживать в голове этот урок, даже если твоя конечная цель далека от классической физики. В уроке про производную по направлению и градиент ты уже строил вектор $\nabla f$ для скалярной функции — например, функции потерь $L(w)$. Но что, если объект, с которым ты работаешь, сам по себе уже вектор — например, вектор обновлений весов на каждом шаге оптимизации, который меняется от точки к точке пространства параметров? Тогда перед тобой не скалярное, а векторное поле, и вопросы вида «есть ли у этого обновления паразитная закрученность» или «сжимает ли оно фазовый объём» становятся вполне конкретными вычислительными задачами — именно теми, для решения которых нужны дивергенция и ротор.
План на сегодня такой. Сначала мы аккуратно разграничим скалярные и векторные поля и посмотрим, как градиент превращает первое во второе. Затем разберём дивергенцию — меру локального «рождения» или «исчезновения» поля. После этого — ротор, мера локальной закрученности. И завершим тем, что соберём всё это в единый язык оператора набла $\nabla$, выведем два фундаментальных тождества этой теории и увидим, почему одно из них — прямое математическое объяснение того факта, что градиентный спуск в чистом виде никогда не «закручивается».
История: откуда это взялось?
Аппарат теории поля в его современном виде — с операторами $\operatorname{div}$ и $\operatorname{rot}$ — родился не как чистая математика, а как побочный продукт попытки понять электричество и магнетизм. В 1860-х годах Джеймс Клерк Максвелл пытался объединить разрозненные экспериментальные законы Фарадея, Ампера и Гаусса в единую систему уравнений. Проблема была в том, что доступный на тот момент математический язык — записи в декартовых компонентах — превращал уравнения электродинамики в неуклюжую систему из полутора десятков строчек, в которой было почти невозможно увидеть общую структуру. Максвеллу нужен был компактный способ говорить о «полях» — величинах, определённых в каждой точке пространства, — и о том, как эти поля меняются от точки к точке.
Решающий вклад в создание нужного языка внёс ирландский математик Уильям Роуан Гамильтон, который ещё в 1840-х годах ввёл символический оператор $\nabla$ (тот самый «набла», названный по сходству с формой древней финикийской арфы) как формальный вектор из частных производных. Сам Гамильтон использовал его в основном для кватернионов — довольно экзотической на тот момент алгебраической конструкции. Именно Оливер Хевисайд и Джозайя Уиллард Гиббс, работая независимо друг от друга в 1880-х годах, отделили от кватернионов «полезное ядро» — то, что мы сегодня называем векторным анализом, — и с его помощью Хевисайд переписал двадцать с лишним громоздких уравнений Максвелла в компонентах в виде всего четырёх компактных векторных уравнений, использующих ровно $\operatorname{div}$, $\operatorname{rot}$ и оператор $\nabla$. Именно эта хевисайдовская запись сегодня красуется на футболках физиков и в каждом учебнике электродинамики — хотя исторически справедливее было бы называть её не «уравнениями Максвелла», а «уравнениями Максвелла в изложении Хевисайда».
Особенно показательна судьба одного из фундаментальных фактов теории поля, который сегодня в этом уроке станет для тебя настоящим тождеством: закрученности (ротора) у градиентного поля попросту не бывает. Физики XIX века знали это задолго до строгого доказательства — просто как эмпирический факт: консервативные силы (гравитация, электростатика) всегда получаются из потенциала и никогда не образуют вихрей. Строгое доказательство пришло вместе с развитием математического анализа смешанных частных производных — и оказалось на удивление коротким, как ты увидишь чуть позже. Забавно, что ровно та же самая логика сегодня объясняет, почему обычный градиентный спуск — в отличие, скажем, от динамики состязательных игр между генератором и дискриминатором в генеративно-состязательной сети — принципиально не может «закручиваться» вокруг решения: он всегда движется вдоль градиента одной-единственной скалярной функции, а значит наследует безвихревость, о которой физики знали ещё до Максвелла.
Скалярные и векторные поля. Градиент как язык направления
Интуиция: температура в комнате и ветер над картой
Давай разберёмся с базовыми объектами, прежде чем переходить к операторам. Скалярное поле — это просто функция, которая каждой точке пространства ставит в соответствие одно число. Представь себе термометр, который можно поставить в любую точку комнаты, — показания термометра в разных точках дают тебе скалярное поле температуры $T(x,y,z)$. Другой пример скалярного поля, уже знакомый тебе из предыдущих уроков курса, — функция потерь $L(w_1,\dots,w_n)$ в пространстве весов модели: каждой конфигурации весов соответствует одно число (значение лосса).
Векторное поле, в отличие от скалярного, ставит в соответствие каждой точке пространства не число, а вектор. Представь ту же комнату, но теперь вместо термометра — маленький флюгер в каждой точке, показывающий направление и скорость воздушного потока. Совокупность всех этих стрелочек — векторное поле скорости $\vec v(x,y,z)$. В трёхмерном пространстве векторное поле записывается через три скалярные функции-компоненты: $\vec F(x,y,z)=\bigl(P(x,y,z),\,Q(x,y,z),\,R(x,y,z)\bigr)$.
Определение
Определение (скалярное и векторное поле, градиент). Скалярным полем называется функция $u=f(x,y,z)$, определённая в некоторой области пространства и ставящая в соответствие каждой точке этой области число. Векторным полем называется функция $\vec F(x,y,z)=\bigl(P(x,y,z),Q(x,y,z),R(x,y,z)\bigr)$, ставящая в соответствие каждой точке вектор.
Градиент — это операция, которая превращает скалярное поле в векторное:
$$\operatorname{grad}f=\nabla f=\left(\frac{\partial f}{\partial x},\,\frac{\partial f}{\partial y},\,\frac{\partial f}{\partial z}\right)$$В каждой точке вектор $\nabla f$ указывает направление наискорейшего роста функции $f$, а его длина равна скорости этого роста. Это ровно та конструкция, которую ты уже строил в уроке про производную по направлению — только теперь мы явно называем её тем, чем она на самом деле является: инструментом, который порождает векторное поле из скалярного.
Именно эта фраза — «превращает скалярное поле в векторное» — и есть ключ к сегодняшнему уроку. Дивергенция и ротор, которые мы разберём дальше, действуют в противоположных направлениях: дивергенция превращает векторное поле обратно в скалярное, а ротор превращает векторное поле в другое векторное поле. Все три операции вместе и составляют то, что называется «дифференциальным исчислением теории поля».
Разбор примеров
Пример 1 (лёгкий). Найти градиент скалярного поля $f(x,y,z)=x^2+y^2+z^2$ в точке $(1,2,2)$ и его величину.
Находим частные производные: $\partial f/\partial x=2x$, $\partial f/\partial y=2y$, $\partial f/\partial z=2z$. В точке $(1,2,2)$:
$$\nabla f(1,2,2)=(2,4,4)$$Величина: $|\nabla f|=\sqrt{4+16+16}=\sqrt{36}=6$.
Ответ: $\nabla f=(2,4,4)$, $|\nabla f|=6$. Обрати внимание: поле $f=x^2+y^2+z^2$ — это квадрат расстояния до начала координат, и его градиент везде направлен строго по радиусу наружу — что логично: чтобы быстрее всего удаляться от центра сферы, нужно идти строго по радиусу.
Пример 2 (средний). Найти градиент скалярного поля $f(x,y,z)=xyz$ в точке $(1,2,3)$ и описать его геометрический смысл через поверхности уровня.
$$\nabla f=(yz,\,xz,\,xy)$$В точке $(1,2,3)$: $\nabla f=(2\cdot3,\,1\cdot3,\,1\cdot2)=(6,3,2)$.
Ответ: $\nabla f(1,2,3)=(6,3,2)$. Поверхности уровня функции $xyz=c$ — это гиперболические поверхности (при $c\ne0$), и вектор градиента в каждой точке перпендикулярен той поверхности уровня, которая проходит через эту точку, — это общее свойство градиента, с которым ты уже встречался в уроке про производную по направлению.
Пример 3 (сложный, машинное обучение). Функция потерь модели с тремя параметрами задана как $L(w_1,w_2,w_3)=w_1^2+2w_2^2+3w_3^2$ — анизотропная квадратичная «чаша», в которой кривизна по разным осям разная (коэффициенты $1$, $2$, $3$ можно понимать как диагональные элементы гессиана). Найти градиент в точке $w=(1,1,1)$ и направление антиградиентного шага.
$$\nabla L=(2w_1,\,4w_2,\,6w_3)$$В точке $(1,1,1)$: $\nabla L=(2,4,6)$, значит антиградиент (направление шага градиентного спуска) равен $-\nabla L=(-2,-4,-6)$. Величина градиента: $|\nabla L|=\sqrt{4+16+36}=\sqrt{56}=2\sqrt{14}\approx7{,}483$.
Ответ: $\nabla L(1,1,1)=(2,4,6)$, $|\nabla L|=2\sqrt{14}\approx7{,}483$. Содержательный вывод: раз коэффициенты при $w_1^2$, $w_2^2$, $w_3^2$ разные, градиент «перекошен» — компонента по третьей координате втрое больше компоненты по первой, хотя отклонение весов от нуля одинаковое по всем трём осям. Именно эта неравномерность кривизны и заставляет обычный градиентный спуск с единым шагом обучения двигаться неэффективно вдоль «пологих» направлений и слишком резко — вдоль «крутых»; отсюда и мотивация адаптивных методов оптимизации (перемасштабирующих шаг по накопленной статистике градиента) или методов второго порядка, которые фактически перемасштабируют градиент, компенсируя эту неравномерность.
Почему это важно
Градиент — это отправная точка всей теории поля: он показывает, как из одной скалярной величины (температуры, давления, функции потерь) получить целое векторное поле направлений. Но реальные векторные поля, которые встречаются на практике — поле скорости ветра, поле магнитной индукции, поле обновлений весов при оптимизации с моментом, — далеко не всегда являются чьим-то градиентом. Чтобы анализировать произвольные векторные поля, а не только градиентные, нужны два новых инструмента — дивергенция и ротор, к которым мы переходим прямо сейчас.
Дивергенция: источники и стоки поля
Интуиция: сколько «вытекает» из точки
Давай разберёмся, что вообще значит «источник» или «сток» векторного поля на языке математики. Представь себе поле скорости несжимаемой (или, наоборот, сжимаемой) жидкости $\vec v(x,y,z)$. Возьми мысленно крошечный шарик вокруг какой-то точки пространства и задай вопрос: сколько жидкости вытекает через поверхность этого шарика в единицу времени за вычетом того, сколько втекает? Если вытекает больше, чем втекает, — значит внутри шарика есть «источник» (например, там жидкость откуда-то рождается, как если бы был маленький краник). Если, наоборот, втекает больше — там «сток» (как маленький слив). Если разница равна нулю — жидкость просто протекает сквозь эту область, ничего не накапливая и не теряя.
Дивергенция — это в точности предел этой разницы «вытекло минус втекло», делённой на объём шарика, при стягивании шарика в точку. Формально эта конструкция через предел объёмного интеграла станет строгой в одном из следующих уроков (когда мы разберём формулу Остроградского-Гаусса), но для практических вычислений есть простая формула в координатах, которую можно доказать напрямую и которой мы сразу и воспользуемся.
Определение
Определение (дивергенция). Дивергенцией векторного поля $\vec F(x,y,z)=(P,Q,R)$, компоненты которого дифференцируемы, называется скалярная функция
$$\operatorname{div}\vec F=\frac{\partial P}{\partial x}+\frac{\partial Q}{\partial y}+\frac{\partial R}{\partial z}$$Физический смысл: если $\vec F$ — поле скорости жидкости, то $\operatorname{div}\vec F$ в данной точке — это интенсивность источника ($\operatorname{div}\vec F>0$) или стока ($\operatorname{div}\vec F<0$) в этой точке, отнесённая к единице объёма. Если $\operatorname{div}\vec F\equiv0$ во всей области, поле называется соленоидальным (несжимаемым) — сколько жидкости втекает в любой малый объём, ровно столько же из него и вытекает.
Обрати внимание на важную деталь: дивергенция — это число, а не вектор, хотя она вычисляется из векторного поля. Это одна из самых частых путаниц у тех, кто только начинает работать с теорией поля, — мы отдельно разберём её в разделе про ошибки.
Разбор примеров
Пример 1 (лёгкий). Найти дивергенцию поля $\vec F(x,y,z)=(x,y,z)$ — радиального поля, «разбегающегося» из начала координат.
$$\operatorname{div}\vec F=\frac{\partial x}{\partial x}+\frac{\partial y}{\partial y}+\frac{\partial z}{\partial z}=1+1+1=3$$Ответ: $\operatorname{div}\vec F=3$ — постоянная величина, не зависящая от точки. Это логично: поле $\vec F=(x,y,z)$ равномерно «разбегается» из начала координат с одинаковой интенсивностью во всех точках пространства — представь себе воздушный шар, который равномерно раздувается во все стороны.
Пример 2 (средний). Найти дивергенцию поля $\vec F(x,y,z)=(x^2,y^2,z^2)$ в точке $(1,1,1)$ и объяснить, почему интенсивность источника здесь не постоянна.
$$\operatorname{div}\vec F=2x+2y+2z$$В точке $(1,1,1)$: $\operatorname{div}\vec F=2+2+2=6$.
Ответ: $\operatorname{div}\vec F(1,1,1)=6$. В отличие от предыдущего примера, здесь дивергенция зависит от точки: в точке $(1,1,1)$ источник вшестеро сильнее, чем, скажем, в точке $(0{,}5,0{,}5,0{,}5)$, где $\operatorname{div}\vec F=3$. Такая переменная интенсивность типична для реальных физических полей — например, для поля скорости газа около нагретого предмета, где интенсивность расширения зависит от локальной температуры.
Пример 3 (сложный, машинное обучение). В диффузионных генеративных моделях траектория точки $w$ в пространстве данных описывается «полем сноса», которое стягивает точки к центру: $\vec v(w_1,w_2,w_3)=(-w_1,-w_2,-w_3)$. Найти $\operatorname{div}\vec v$ и связать результат с изменением логарифма плотности вероятности вдоль потока по формуле неразрывности $\dfrac{d\ln p}{dt}=-\operatorname{div}\vec v$.
$$\operatorname{div}\vec v=\frac{\partial(-w_1)}{\partial w_1}+\frac{\partial(-w_2)}{\partial w_2}+\frac{\partial(-w_3)}{\partial w_3}=-1-1-1=-3$$Ответ: $\operatorname{div}\vec v=-3$ — постоянная отрицательная величина, значит по формуле неразрывности $\dfrac{d\ln p}{dt}=-(-3)=3$. Содержательный вывод для машинного обучения: если частицы (точки данных) движутся вдоль такого сжимающего потока, объём, который они занимают в пространстве, равномерно сокращается — а значит плотность вероятности $p$ в окрестности каждой движущейся точки равномерно растёт со временем. Это в точности та логика, на которой строятся модели непрерывных нормализующих потоков и диффузионные генеративные модели: дивергенция поля сноса напрямую отвечает за то, как меняется логарифм плотности вдоль траектории, — без вычисления дивергенции невозможно было бы честно посчитать правдоподобие сгенерированных потоком данных.
Почему это важно
Дивергенция — это самый прямой способ спросить у векторного поля «где оно рождается, а где исчезает», не выходя за рамки одной-единственной точки. В физике это закон Гаусса для электрического поля ($\operatorname{div}\vec E$ пропорциональна плотности заряда — заряды буквально являются источниками электрического поля) и уравнение неразрывности для жидкости. В машинном обучении — это точный язык для описания того, как объёмы (и, соответственно, плотности вероятности) меняются вдоль траекторий, порождаемых обучаемыми векторными полями, что лежит в основе целого семейства генеративных моделей. Но дивергенция видит только «расширение-сжатие» поля и полностью слепа к другому важному эффекту — закручиванию. Для этого нужен второй оператор, ротор, к которому мы и переходим.
Ротор: завихрённость поля
Интуиция: маленькая вертушка в потоке
Давай разберёмся с ещё одной характеристикой векторного поля — на этот раз не «расширяется или сжимается», а «закручивается или нет». Представь, что ты опустил в поток жидкости крошечное колёсико с лопастями — что-то вроде миниатюрной вертушки на оси. Если жидкость вокруг данной точки течёт «однородно», без завихрений, колёсико будет просто сноситься потоком, не вращаясь вокруг своей оси. Но если рядом с точкой поток закручивается — скажем, по одну сторону колёсика скорость жидкости больше, чем по другую, — колёсико начнёт вращаться. Ротор — это в точности вектор, направленный вдоль оси, вокруг которой это воображаемое колёсико вращается быстрее всего, а его длина пропорциональна скорости этого вращения (если точнее — равна удвоенной угловой скорости).
В отличие от дивергенции, которая всегда скаляр, ротор в трёхмерном пространстве — это вектор: у закручивания есть не только интенсивность, но и ось, вокруг которой оно происходит, а значит нужны сразу три числа (или, если пространство двумерное, ровно одно число — знак и величина закрученности вокруг единственно возможной оси, перпендикулярной плоскости; именно эту одномерную версию ты уже видел в формуле Грина в предыдущем уроке).
Определение
Определение (ротор). Ротором векторного поля $\vec F(x,y,z)=(P,Q,R)$ называется векторное поле
$$\operatorname{rot}\vec F=\left(\frac{\partial R}{\partial y}-\frac{\partial Q}{\partial z},\ \ \frac{\partial P}{\partial z}-\frac{\partial R}{\partial x},\ \ \frac{\partial Q}{\partial x}-\frac{\partial P}{\partial y}\right)$$Удобная мнемоническая запись — символический определитель:
$$\operatorname{rot}\vec F=\begin{vmatrix}\vec i&\vec j&\vec k\\[2pt]\dfrac{\partial}{\partial x}&\dfrac{\partial}{\partial y}&\dfrac{\partial}{\partial z}\\[6pt]P&Q&R\end{vmatrix}$$Физический смысл: если $\vec F$ — поле скорости жидкости, то $\operatorname{rot}\vec F$ в данной точке указывает ось локального вращения жидкости, а его длина равна удвоенной угловой скорости этого вращения. Если $\operatorname{rot}\vec F\equiv0$ во всей (односвязной) области, поле называется потенциальным или безвихревым.
Раскрытие символического определителя по первой строке даёт ровно ту формулу, что написана выше: коэффициент при $\vec i$ равен $\partial R/\partial y-\partial Q/\partial z$, при $\vec j$ (со знаком минус перед определителем-минором) — $-(\partial R/\partial x-\partial P/\partial z)=\partial P/\partial z-\partial R/\partial x$, при $\vec k$ — $\partial Q/\partial x-\partial P/\partial y$.
Разбор примеров
Пример 1 (лёгкий). Найти ротор поля $\vec F(x,y,z)=(-y,x,0)$ — классического поля вращения вокруг оси $z$.
Здесь $P=-y$, $Q=x$, $R=0$.
$$\operatorname{rot}\vec F=\left(\frac{\partial0}{\partial y}-\frac{\partial x}{\partial z},\ \frac{\partial(-y)}{\partial z}-\frac{\partial0}{\partial x},\ \frac{\partial x}{\partial x}-\frac{\partial(-y)}{\partial y}\right)=\bigl(0-0,\ 0-0,\ 1-(-1)\bigr)=(0,0,2)$$Ответ: $\operatorname{rot}\vec F=(0,0,2)$ — постоянный вектор, направленный вдоль оси $z$. Это в точности подтверждает интуицию: поле $(-y,x,0)$ описывает вращение (с угловой скоростью $\omega=1$) вокруг оси $z$, а длина ротора равна $2\omega=2$ — ровно то, что предсказывает физический смысл ротора.
Пример 2 (средний). Найти ротор поля $\vec F(x,y,z)=(yz,xz,xy)$.
Здесь $P=yz$, $Q=xz$, $R=xy$.
$$\operatorname{rot}\vec F=\left(\frac{\partial(xy)}{\partial y}-\frac{\partial(xz)}{\partial z},\ \frac{\partial(yz)}{\partial z}-\frac{\partial(xy)}{\partial x},\ \frac{\partial(xz)}{\partial x}-\frac{\partial(yz)}{\partial y}\right)=(x-x,\ y-y,\ z-z)=(0,0,0)$$Ответ: $\operatorname{rot}\vec F=(0,0,0)$ — поле безвихревое. Это не случайность: как несложно заметить, $\vec F=(yz,xz,xy)=\nabla(xyz)$ — это градиент функции $xyz$, а мы вскоре докажем, что ротор любого градиентного поля тождественно равен нулю. Держи этот пример в уме — он ещё пригодится буквально через один раздел.
Пример 3 (сложный, машинное обучение). В теории состязательных игр (в частности, в динамике обучения генеративно-состязательных сетей) простейшая модель конфликта интересов двух игроков — билинейная игра $f(\theta_1,\theta_2)=2\theta_1\theta_2$, где первый игрок минимизирует $f$ по $\theta_1$, а второй одновременно максимизирует $f$ по $\theta_2$. Тогда «совместное игровое векторное поле» одновременного градиентного спуска-подъёма равно $\vec V=\bigl(-\partial f/\partial\theta_1,\ \partial f/\partial\theta_2\bigr)=(-2\theta_2,\,2\theta_1)$. Введя формальную третью координату $z$ (от которой поле не зависит) и положив $P=-2y$, $Q=2x$, $R=0$ (где $x=\theta_1$, $y=\theta_2$), найти $\operatorname{rot}\vec V$ и сделать вывод о существовании общего потенциала для этой игры.
$$\operatorname{rot}\vec V=\left(\frac{\partial0}{\partial y}-\frac{\partial(2x)}{\partial z},\ \frac{\partial(-2y)}{\partial z}-\frac{\partial0}{\partial x},\ \frac{\partial(2x)}{\partial x}-\frac{\partial(-2y)}{\partial y}\right)=(0-0,\ 0-0,\ 2-(-2))=(0,0,4)$$Ответ: $\operatorname{rot}\vec V=(0,0,4)\ne0$ — совместное поле обладает ненулевой завихрённостью. Содержательный вывод: у этого «игрового векторного поля» нет единой скалярной функции $\Phi(\theta_1,\theta_2)$, для которой $\vec V=\nabla\Phi$ — в отличие от честного градиентного спуска одной функции потерь, здесь оба игрока тянут систему в направлениях, которые в совокупности образуют вихрь. Именно это математическое свойство и объясняет известное на практике поведение простейшей одновременной градиентной динамики в состязательных играх: вместо схождения к седловой точке она может бесконечно циклически вращаться вокруг неё, не приближаясь и не удаляясь, — ровно так же, как частица в чисто вращательном поле $(-y,x,0)$ из примера 1 никогда не падает в начало координат, а вечно кружит вокруг него.
Почему это важно
Ротор дополняет дивергенцию: там, где дивергенция слепа к «закручиванию», ротор именно его и измеряет, зато сам ничего не говорит о расширении или сжатии. В физике ненулевой ротор магнитного поля вокруг проводника (закон Ампера) объясняет само существование магнетизма как «вихревого» эффекта электрических токов. В машинном обучении, как ты только что увидел, ротор — это точный диагностический инструмент, который отличает «честный» градиентный спуск одной функции от куда более сложной динамики состязательных игр, где циклическое, незатухающее поведение оптимизации — не баг, а прямое следствие ненулевой завихрённости совместного векторного поля игры.
Оператор набла и фундаментальные тождества теории поля
Интуиция: один символ — три операции
Мы уже трижды по сути использовали один и тот же символический трюк: рассматривали $\nabla=\left(\dfrac{\partial}{\partial x},\dfrac{\partial}{\partial y},\dfrac{\partial}{\partial z}\right)$ как формальный вектор, компонентами которого являются не числа, а операторы дифференцирования. Давай сделаем этот трюк явным и увидим, что градиент, дивергенция и ротор — это буквально три разных способа «умножить» вектор $\nabla$ на что-то: на скаляр — получаем градиент, скалярным произведением на вектор — дивергенцию, векторным произведением на вектор — ротор.
Определение
Определение (оператор набла и три операции). Оператор $\nabla=\left(\dfrac{\partial}{\partial x},\dfrac{\partial}{\partial y},\dfrac{\partial}{\partial z}\right)$ применяется к скалярному полю $f$ и векторному полю $\vec F=(P,Q,R)$ тремя способами:
$$\operatorname{grad}f=\nabla f \qquad\text{(“умножение” на скаляр — снова вектор)}$$$$\operatorname{div}\vec F=\nabla\cdot\vec F \qquad\text{(скалярное произведение — скаляр)}$$
$$\operatorname{rot}\vec F=\nabla\times\vec F \qquad\text{(векторное произведение — снова вектор)}$$
Из этих трёх операций следуют два фундаментальных тождества, верных для любого дважды непрерывно дифференцируемого поля:
$$\operatorname{rot}(\operatorname{grad}f)\equiv\vec0 \qquad\text{и}\qquad \operatorname{div}(\operatorname{rot}\vec F)\equiv0$$
Докажем оба тождества — доказательства короткие и опираются ровно на ту же идею, что и критерий потенциальности из прошлого урока: равенство смешанных частных производных (теорема о независимости смешанной производной от порядка дифференцирования).
Доказательство $\operatorname{rot}(\operatorname{grad}f)=\vec0$. Пусть $\vec F=\nabla f=(f_x,f_y,f_z)$, то есть $P=f_x$, $Q=f_y$, $R=f_z$. Третья компонента ротора равна $\partial Q/\partial x-\partial P/\partial y=f_{yx}-f_{xy}$. По теореме о смешанных производных $f_{yx}=f_{xy}$ (при непрерывности вторых производных), значит эта компонента равна нулю. Совершенно аналогично первая компонента равна $f_{zy}-f_{yz}=0$, а вторая — $f_{xz}-f_{zx}=0$. Значит $\operatorname{rot}(\nabla f)=\vec0$ тождественно.
Доказательство $\operatorname{div}(\operatorname{rot}\vec F)=0$. Пусть $\vec G=\operatorname{rot}\vec F=(R_y-Q_z,\ P_z-R_x,\ Q_x-P_y)$. Тогда
$$\operatorname{div}\vec G=\frac{\partial}{\partial x}(R_y-Q_z)+\frac{\partial}{\partial y}(P_z-R_x)+\frac{\partial}{\partial z}(Q_x-P_y)=R_{yx}-Q_{zx}+P_{zy}-R_{xy}+Q_{xz}-P_{yz}$$Сгруппируем слагаемые попарно: $R_{yx}-R_{xy}=0$ (смешанные производные $R$), $-Q_{zx}+Q_{xz}=0$ (смешанные производные $Q$), $P_{zy}-P_{yz}=0$ (смешанные производные $P$). Все три пары взаимно уничтожаются, значит $\operatorname{div}(\operatorname{rot}\vec F)=0$ тождественно.
Оба доказательства опираются на один и тот же факт — симметрию вторых смешанных производных, — и это не совпадение: именно эта симметрия и есть глубинная причина, по которой у градиентных полей нет вихрей, а у вихревых полей нет источников. Заметь, насколько это похоже на критерий потенциальности из прошлого урока: там равенство $P_y=Q_x$ было условием существования потенциала в 2D, а здесь $\operatorname{rot}\vec F=0$ — прямое 3D-обобщение того же самого условия.
Разбор примеров
Пример 1 (лёгкий). Проверить тождество $\operatorname{rot}(\operatorname{grad}f)=\vec0$ на конкретной функции $f(x,y,z)=e^x\sin y+z^2$.
Находим градиент: $\nabla f=(e^x\sin y,\ e^x\cos y,\ 2z)$, то есть $P=e^x\sin y$, $Q=e^x\cos y$, $R=2z$.
$$\operatorname{rot}(\nabla f)=\left(\frac{\partial(2z)}{\partial y}-\frac{\partial(e^x\cos y)}{\partial z},\ \frac{\partial(e^x\sin y)}{\partial z}-\frac{\partial(2z)}{\partial x},\ \frac{\partial(e^x\cos y)}{\partial x}-\frac{\partial(e^x\sin y)}{\partial y}\right)$$Первая компонента: $0-0=0$. Вторая: $0-0=0$. Третья: $e^x\cos y-e^x\cos y=0$.
Ответ: $\operatorname{rot}(\nabla f)=(0,0,0)$ — тождество подтверждено на конкретных числах.
Пример 2 (средний). Проверить тождество $\operatorname{div}(\operatorname{rot}\vec F)=0$ для поля $\vec F(x,y,z)=(x^2y,\,y^2z,\,z^2x)$.
Сначала находим ротор: $P=x^2y$, $Q=y^2z$, $R=z^2x$.
$$\operatorname{rot}\vec F=\left(\frac{\partial(z^2x)}{\partial y}-\frac{\partial(y^2z)}{\partial z},\ \frac{\partial(x^2y)}{\partial z}-\frac{\partial(z^2x)}{\partial x},\ \frac{\partial(y^2z)}{\partial x}-\frac{\partial(x^2y)}{\partial y}\right)=\bigl(0-y^2,\ 0-z^2,\ 0-x^2\bigr)=(-y^2,-z^2,-x^2)$$Теперь находим дивергенцию этого вектора:
$$\operatorname{div}(\operatorname{rot}\vec F)=\frac{\partial(-y^2)}{\partial x}+\frac{\partial(-z^2)}{\partial y}+\frac{\partial(-x^2)}{\partial z}=0+0+0=0$$Ответ: $\operatorname{rot}\vec F=(-y^2,-z^2,-x^2)$ — сам по себе ненулевой вектор, но его дивергенция, как и требует тождество, равна нулю. Обрати внимание: это пример, где $\operatorname{rot}\vec F\ne\vec0$ (поле не потенциально), но при этом $\operatorname{div}(\operatorname{rot}\vec F)=0$ выполняется всё равно — тождество работает для любого поля, а не только для безвихревых.
Пример 3 (сложный, машинное обучение). В задачах моделирования несжимаемых течений (например, в физически-информированных нейросетях для симуляции жидкостей) используется удобный трюк: вместо того чтобы напрямую обучать сеть предсказывать поле скорости $\vec v$ и штрафовать её за нарушение условия несжимаемости $\operatorname{div}\vec v=0$, сеть обучают предсказывать вспомогательный «векторный потенциал» $\vec A=(0,0,\psi(x,y))$ (в двумерном случае $\psi$ называют функцией тока), а само поле скорости получают как $\vec v=\operatorname{rot}\vec A$. Взять $\psi(x,y)=3xy$, вычислить $\vec v=\operatorname{rot}\vec A$ и убедиться, что $\operatorname{div}\vec v=0$ автоматически, без всякого штрафа.
Здесь $A_x=0$, $A_y=0$, $A_z=\psi=3xy$.
$$\vec v=\operatorname{rot}\vec A=\left(\frac{\partial(3xy)}{\partial y}-0,\ 0-\frac{\partial(3xy)}{\partial x},\ 0-0\right)=(3x,\,-3y,\,0)$$Проверим дивергенцию напрямую: $\operatorname{div}\vec v=\dfrac{\partial(3x)}{\partial x}+\dfrac{\partial(-3y)}{\partial y}+0=3-3=0$.
Ответ: $\vec v=(3x,-3y,0)$, $\operatorname{div}\vec v=0$. Ключевой момент — это не свойство конкретной функции $\psi=3xy$, а прямое следствие тождества $\operatorname{div}(\operatorname{rot}\vec A)=0$: какую бы функцию $\psi(x,y)$ ни выбрала (или ни выучила) нейросеть, поле $\vec v=\operatorname{rot}\vec A$ будет несжимаемым автоматически, «по построению архитектуры», а не благодаря дополнительному обучению. Это классический и очень практичный пример того, как чисто математическое тождество превращается в архитектурное ограничение нейросети, которое не нужно «выпрашивать» через функцию потерь.
Почему это важно
Оператор набла — это не просто удобное сокращение записи, а признание того, что градиент, дивергенция и ротор — три проявления одной и той же дифференциальной идеи, применённой к разным типам объектов (скаляр, скалярное-из-векторного, векторное-из-векторного). А оба тождества, которые мы только что доказали, — это не абстрактная алгебраическая красивость, а конкретные структурные гарантии: любое градиентное поле обречено быть безвихревым, а любое поле, полученное как ротор чего-либо, обречено быть несжимаемым. В машинном обучении первое тождество означает, что «чистый» градиентный спуск одной функции потерь никогда не порождает циклического, закрученного поведения (в отличие от состязательных игр, как ты видел выше), а второе — что архитектуру можно спроектировать так, чтобы физическое ограничение (несжимаемость) выполнялось само собой, без штрафных слагаемых в функции потерь.
Практика: 30 заданий
Базовые задания (1–10)
Задание 1: Найти $\operatorname{grad}f$ для $f(x,y,z)=x^2+y^2+z^2$ в точке $(1,1,1)$ и его длину.
Задание 2: Найти $\operatorname{div}\vec F$ для поля $\vec F(x,y,z)=(x,2y,3z)$.
Задание 3: Найти $\operatorname{div}\vec F$ для поля $\vec F(x,y,z)=(x^2,y^2,z^2)$ в точке $(2,1,3)$.
Задание 4: Найти $\operatorname{rot}\vec F$ для поля $\vec F(x,y,z)=(y,-x,0)$ (поле вращения по часовой стрелке).
Задание 5: Найти $\operatorname{rot}\vec F$ для поля $\vec F(x,y,z)=(0,0,x)$.
Задание 6: Проверить, является ли поле $\vec F(x,y,z)=(y,-x,5)$ соленоидальным (то есть $\operatorname{div}\vec F=0$).
Задание 7: Найти $\operatorname{grad}f$ для $f(x,y,z)=\ln(x^2+y^2+z^2)$ в точке $(1,0,0)$.
Задание 8: Найти $\operatorname{div}\vec F$ для постоянного поля $\vec F(x,y,z)=(5,-3,7)$.
Задание 9: Найти $\operatorname{rot}\vec F$ для градиентного поля $\vec F=\nabla f$, где $f(x,y,z)=x^2+y^2+z^2$ (то есть $\vec F=(2x,2y,2z)$).
Задание 10: Определить, есть ли источники или стоки у однородного (постоянного) поля $\vec F(x,y,z)=(3,4,0)$, используя дивергенцию.
Средние задания (11–20)
Задание 11: Найти $\operatorname{grad}f$ и его длину в точке $(1,2,3)$ для $f(x,y,z)=xyz$.
Задание 12: Найти $\operatorname{div}\vec F$ для поля $\vec F(x,y,z)=(x^2y,\,y^2z,\,z^2x)$ в точке $(1,1,1)$.
Задание 13: Найти $\operatorname{rot}\vec F$ для поля $\vec F(x,y,z)=(yz,xz,xy)$ и объяснить полученный результат.
Задание 14: Найти $\operatorname{rot}\vec F$ для поля $\vec F(x,y,z)=(x^2y,\,y^2z,\,z^2x)$ в общем виде.
Задание 15: Проверить, что поле $\vec F(x,y,z)=(2xy+z^2,\ x^2+2yz,\ y^2+2xz)$ потенциально, и найти его потенциал.
Задание 16: Найти дивергенцию поля скорости $\vec v(x,y,z)=(\sin y,\ \cos x,\ z)$.
Задание 17: Найти $\operatorname{rot}\vec B$ для поля магнитной индукции вокруг проводника $\vec B(x,y,z)=\left(\dfrac{-y}{x^2+y^2},\ \dfrac{x}{x^2+y^2},\ 0\right)$ в точке $(1,1,0)$ (вне оси $z$).
Задание 18 (машинное обучение): Для функции потерь $L(w_1,w_2,w_3)=w_1^2+w_2^2+w_3^2$ найти $\Delta L=\operatorname{div}(\operatorname{grad}L)$ — оператор Лапласа.
Задание 19 (машинное обучение): Для поля сноса диффузионной модели $\vec v(w_1,w_2,w_3)=(-w_1,-w_2,-w_3)$ найти $\operatorname{div}\vec v$ и скорость изменения логарифма плотности $d(\ln p)/dt=-\operatorname{div}\vec v$ вдоль потока.
Задание 20 (машинное обучение): Для билинейной игры $f(\theta_1,\theta_2)=2\theta_1\theta_2$ совместное игровое поле равно $\vec V=(-2\theta_2,\,2\theta_1,\,0)$. Найти $\operatorname{rot}\vec V$ и сделать вывод о наличии общего потенциала.
Продвинутые задания (21–30)
Задание 21: Проверить тождество $\operatorname{rot}(\operatorname{grad}f)=\vec0$ для $f(x,y,z)=e^x\sin y+z^2$.
Задание 22: Проверить тождество $\operatorname{div}(\operatorname{rot}\vec F)=0$ для поля $\vec F(x,y,z)=(x^2y,\,y^2z,\,z^2x)$, используя результат $\operatorname{rot}\vec F=(-y^2,-z^2,-x^2)$ из задания 14.
Задание 23: Построить несжимаемое поле скорости через функцию тока $\psi(x,y)=x^2-y^2$ (седловое течение), взяв $\vec A=(0,0,\psi)$ и $\vec v=\operatorname{rot}\vec A$. Проверить $\operatorname{div}\vec v=0$.
Задание 24 (машинное обучение): Для функции тока $\psi(x,y)=3xy$ (архитектурный приём для гарантированной несжимаемости) найти $\vec v=\operatorname{rot}(0,0,\psi)$ и проверить $\operatorname{div}\vec v=0$.
Задание 25: Проверить потенциальность поля $\vec F(x,y,z)=(2x+y,\ x+2z,\ 2y+2z)$ и найти потенциал.
Задание 26 (машинное обучение): Проверить, что поле обновлений $\vec F(w_1,w_2,w_3)=(w_2w_3,\ w_1w_3,\ w_1w_2)$ потенциально, и найти скалярную функцию $U$, для которой $\vec F=\nabla U$.
Задание 27: Найти $\operatorname{div}\vec F$ и $\operatorname{rot}\vec F$ для поля $\vec F(x,y,z)=(x^2-y^2,\ 2xy,\ 0)$.
Задание 28 (машинное обучение): Для функции потерь $L(w_1,w_2,w_3)=w_1^2+4w_2^2+9w_3^2$ (сильно анизотропная чаша — метафора плохо обусловленной задачи оптимизации) найти $\nabla L$ и $\Delta L=\operatorname{div}(\operatorname{grad}L)$.
Задание 29: Проверить, потенциально ли поле $\vec F(x,y,z)=(y^2+z^2,\ x^2+z^2,\ x^2+y^2)$, вычислив ротор.
Задание 30 (машинное обучение, синтез): Пусть эффективное обновление весов представимо как сумма потенциальной (градиентной) и вихревой частей: $\vec F=\nabla f+\operatorname{rot}\vec A$, где $f(w_1,w_2,w_3)=w_1^2+w_2^2+w_3^2$, а $\vec A=(0,0,w_1w_2)$. Найти $\vec F$ явно и вычислить $\operatorname{div}\vec F$ и $\operatorname{rot}\vec F$.
Частые ошибки
Разберём типичные промахи, которые встречаются у тех, кто впервые работает с дивергенцией и ротором.
Первая и самая распространённая ошибка — путать типы результатов: думать, что дивергенция даёт вектор, а ротор — число. На самом деле всё наоборот: $\operatorname{div}\vec F$ — это всегда скаляр (одно число в каждой точке), а $\operatorname{rot}\vec F$ в трёхмерном пространстве — всегда вектор (три числа в каждой точке). Запомнить это проще всего через обозначения: $\nabla\cdot\vec F$ (скалярное произведение — скаляр) и $\nabla\times\vec F$ (векторное произведение — вектор).
Вторая ошибка — перепутать порядок строк или знаки в символическом определителе для ротора. Если вторая и третья строки определителя (частные производные и компоненты поля) переставлены местами или перепутан знак при коэффициенте перед $\vec j$, результат получается с противоположным знаком в одной или нескольких компонентах. Правило простое: первая строка всегда $\vec i,\vec j,\vec k$, вторая — $\partial/\partial x,\partial/\partial y,\partial/\partial z$, третья — $P,Q,R$, и раскрывать определитель нужно строго по первой строке со стандартными знаками $+,-,+$.
Третья ошибка — решить, что $\operatorname{rot}\vec F=\vec0$ означает «поле нулевое» или «поля вообще нет». Это неверно: нулевой ротор говорит лишь об отсутствии локального вращения, но само поле при этом может быть совершенно ненулевым и достаточно сильным — классический пример именно такой ситуации ты разбирал в задании 9, где $\operatorname{rot}(\nabla f)=\vec0$, хотя сам градиент $\nabla f=(2x,2y,2z)$ отнюдь не нулевой.
Четвёртая ошибка — механически переносить трёхмерную формулу ротора на плоские (двумерные) задачи. В двумерном случае ротор поля $\vec F=(P,Q)$ — это не вектор, а скаляр $\partial Q/\partial x-\partial P/\partial y$ (та самая величина, которая уже встречалась тебе в формуле Грина в прошлом уроке); полная трёхмерная формула с определителем применяется, только когда у поля действительно есть три компоненты, зависящие от трёх координат.
Пятая ошибка, особенно коварная, — забыть, что критерий «$\operatorname{rot}\vec F=\vec0$ влечёт существование потенциала» верен только в односвязной области (без «дырок» или выколотых линий). Задание 17 из этого урока — прямая иллюстрация подводного камня: поле магнитной индукции вокруг проводника имеет $\operatorname{rot}\vec B=\vec0$ всюду вне оси $z$, но циркуляция этого поля по контуру, охватывающему провод, отнюдь не равна нулю (это и есть закон Ампера) — потому что область определения поля (пространство с выколотой осью) не является односвязной.
Шестая ошибка — перепутать знак дивергенции: считать, что положительная дивергенция означает «сюда втекает», а отрицательная — «отсюда вытекает». На самом деле наоборот: $\operatorname{div}\vec F>0$ — это источник (поле «вытекает» из точки), $\operatorname{div}\vec F<0$ — сток (поле «втекает» в точку). Проще всего запомнить через пример радиального поля $(x,y,z)$, у которого дивергенция положительна ($=3$) и которое явно «разбегается» наружу из начала координат.
Седьмая ошибка — попытаться вычислить дивергенцию или ротор напрямую от скалярной функции, «забыв» сначала применить градиент. Выражения вроде «$\operatorname{div}\,f$» для скалярной $f$ бессмысленны — дивергенция и ротор определены только для векторных полей; если тебе нужно применить оба оператора подряд к скалярной функции (как в задании 18 с оператором Лапласа), правильная последовательность — сначала $\nabla f$ (превращение в векторное поле), и только потом $\operatorname{div}(\nabla f)=\Delta f$.
Главное запомнить
Соберём ключевые идеи этого урока в сжатом виде.
-
Скалярное поле ставит в соответствие каждой точке число (температура, давление, функция потерь); векторное поле — вектор (скорость, сила, обновление весов).
-
Градиент $\nabla f=(f_x,f_y,f_z)$ превращает скалярное поле в векторное: он указывает направление наискорейшего роста и его скорость.
-
Дивергенция $\operatorname{div}\vec F=\dfrac{\partial P}{\partial x}+\dfrac{\partial Q}{\partial y}+\dfrac{\partial R}{\partial z}$ — скаляр, показывающий интенсивность источника ($>0$) или стока ($<0$) поля в точке.
-
Ротор $\operatorname{rot}\vec F=\left(\dfrac{\partial R}{\partial y}-\dfrac{\partial Q}{\partial z},\ \dfrac{\partial P}{\partial z}-\dfrac{\partial R}{\partial x},\ \dfrac{\partial Q}{\partial x}-\dfrac{\partial P}{\partial y}\right)$ — вектор, указывающий ось и интенсивность локального завихрения поля.
-
Оператор набла $\nabla=\left(\dfrac{\partial}{\partial x},\dfrac{\partial}{\partial y},\dfrac{\partial}{\partial z}\right)$ объединяет все три операции: $\operatorname{grad}f=\nabla f$, $\operatorname{div}\vec F=\nabla\cdot\vec F$, $\operatorname{rot}\vec F=\nabla\times\vec F$.
-
Тождество $\operatorname{rot}(\operatorname{grad}f)\equiv\vec0$ доказывает, что любое градиентное поле всегда безвихревое, — прямое следствие симметрии смешанных частных производных.
-
Тождество $\operatorname{div}(\operatorname{rot}\vec F)\equiv0$ доказывает, что поле, построенное как ротор чего-либо, всегда несжимаемо (соленоидально), — тоже следствие той же симметрии.
-
Условие $\operatorname{rot}\vec F=\vec0$ гарантирует существование потенциала только в односвязной области; в области с «дырками» (как поле вокруг проводника) равенство нулю ротора не исключает ненулевой циркуляции по контурам, охватывающим особенность.
-
В машинном обучении градиентное поле функции потерь $\nabla L$ всегда безвихревое — закрученная, циклическая динамика (как в состязательных играх) может возникать только у полей, которые не являются чистым градиентом одной скалярной функции.
-
Дивергенция, ротор и градиент вместе образуют полный набор дифференциальных операций теории поля; их обобщения на интегралы по поверхностям и объёмам дают формулы Остроградского-Гаусса и Стокса — тема следующих уроков курса.
Связь с другими темами курса
Сегодняшний урок опирается на несколько предыдущих тем и одновременно готовит почву для следующих. Из урока про производную по направлению и градиент мы напрямую унаследовали определение $\nabla f$ и саму идею оператора $\nabla$ — сегодня мы лишь расширили его действие с одной операции (градиент) до трёх (градиент, дивергенция, ротор). Из урока про криволинейные интегралы мы взяли критерий потенциальности через равенство смешанных производных $P_y=Q_x$ в двумерном случае — и увидели, что $\operatorname{rot}\vec F=\vec0$ является его прямым трёхмерным обобщением; условие потенциальности и независимости от пути, разобранное там, — это ровно та же идея, что и безвихревость, о которой мы говорили сегодня.
Из урока про поверхностные интегралы, идущего непосредственно перед этим, мы взяли саму идею потока векторного поля через поверхность — а дивергенция, которую мы определили сегодня чисто алгебраически через частные производные, получит в следующих уроках строгое интегральное обоснование через формулу Остроградского-Гаусса, которая свяжет поток поля через замкнутую поверхность с интегралом от дивергенции по ограниченному ею объёму. Симметрично, ротор получит своё интегральное обоснование через формулу Стокса, которая свяжет циркуляцию поля по замкнутому контуру с потоком ротора через поверхность, натянутую на этот контур, — причём формула Грина из прошлого урока, к которой мы вернёмся в следующем уроке уже отдельно, окажется частным (плоским) случаем именно этой общей формулы Стокса.
Интересные факты
Несколько любопытных деталей, дополняющих сегодняшнюю теорию.
-
Символ «набла» $\nabla$ назван по сходству с формой древней финикийской арфы (по-гречески «набла» — арфа); это название закрепилось благодаря шотландскому физику Питеру Тэту, который в шутку предложил его для оператора Гамильтона, и оно неожиданно прижилось в науке на полтора века вперёд.
-
«Уравнения Максвелла» в их привычном компактном виде с $\operatorname{div}$ и $\operatorname{rot}$ на самом деле записал не сам Максвелл, а Оливер Хевисайд: у Максвелла в оригинальной работе было около двадцати уравнений в покомпонентной записи, и именно Хевисайд, вместе с Джозайей Гиббсом, свёл их к четырём современным векторным уравнениям.
-
Название «ротор» выбрано неслучайно: физически длина вектора $\operatorname{rot}\vec v$ для поля скорости жидкости в точности равна удвоенной угловой скорости локального вращения маленького элемента жидкости в этой точке — это можно строго вывести, рассмотрев поле скорости твёрдого тела, вращающегося с угловой скоростью $\omega$.
-
Теорема Гельмгольца утверждает, что практически любое достаточно гладкое векторное поле, убывающее на бесконечности, однозначно раскладывается в сумму потенциальной (безвихревой) и соленоидальной (чисто вихревой, с нулевой дивергенцией) частей — этот факт используется не только в классической электродинамике и гидродинамике, но и в современных генеративных моделях, работающих с векторными полями скоростей (модели сопоставления потоков и диффузионные модели на основе поля градиента плотности).
-
Отсутствие магнитных монополей — один из четырёх законов Максвелла, записываемый как $\operatorname{div}\vec B=0$, — оказывается не отдельным экспериментальным фактом, а прямым математическим следствием того, что магнитное поле всегда представимо как ротор некоторого векторного потенциала, $\vec B=\operatorname{rot}\vec A$: тождество $\operatorname{div}(\operatorname{rot}\vec A)=0$, которое мы сегодня доказали как чистую математику, автоматически гарантирует один из фундаментальных законов физики ещё до всякого эксперимента.
Лайфхаки и полезные трюки
Практические приёмы, которые снижают риск ошибок при работе с дивергенцией и ротором.
-
Запоминай через тип операции с $\nabla$: точка ($\nabla\cdot\vec F$) даёт скаляр — это дивергенция; крест ($\nabla\times\vec F$) даёт вектор — это ротор. Само обозначение подсказывает тип результата, и спутать их становится сложнее.
-
Перед вычислением ротора всегда выписывай символический определитель с $\vec i,\vec j,\vec k$ в первой строке, а не пытайся сразу вспомнить готовую формулу по компонентам — это заметно снижает вероятность ошибиться со знаком у средней компоненты.
-
Чтобы быстро проверить потенциальность поля, не ищи сразу сам потенциал — сначала посчитай $\operatorname{rot}\vec F$; если хотя бы одна компонента не равна нулю, дальше искать потенциал бессмысленно, и ты сэкономишь время.
-
Если поле выглядит «подозрительно симметричным» по переменным (вроде $(yz,xz,xy)$), сразу проверь, не является ли оно градиентом произведения переменных или похожей простой функции — часто это самый быстрый путь к потенциалу без долгого интегрирования по частям.
-
После вычисления $\operatorname{rot}(\operatorname{grad}f)$ или $\operatorname{div}(\operatorname{rot}\vec F)$ всегда сверяй результат с фундаментальными тождествами: если у тебя получилось что-то отличное от нуля, значит где-то в промежуточных частных производных есть ошибка — эти тождества работают как встроенный тест на арифметические ошибки.
-
Работая с полями оптимизации в машинном обучении (градиент с моментом, адаптивные методы, состязательные игры), сразу задавай себе вопрос «а является ли это поле честным градиентом одной скалярной функции?». Если да — гарантированы безвихревость и независимость эффекта от порядка обновлений; если нет — жди циклического или иначе неочевидного поведения, как в примере с билинейной игрой.
Сегодняшний урок дал тебе три главных инструмента для анализа любого векторного поля: градиент, который порождает поле из скалярной функции, дивергенцию, которая измеряет его локальное «рождение» или «исчезновение», и ротор, который измеряет его локальную закрученность. Ты увидел, что все три операции — не разрозненный набор формул, а единый язык оператора набла, и что этот язык подчиняется двум железным тождествам: градиентное поле никогда не закручивается, а вихревое поле никогда не сжимается и не расширяется. Для машинного обучения это не отвлечённая алгебра, а строгое объяснение того, почему «честный» градиентный спуск одной функции потерь ведёт себя предсказуемо просто, а стоит перейти к состязательным играм или добавить в динамику посторонние эффекты — и векторное поле обновлений перестаёт быть чьим-то градиентом, приобретая собственную, не сводимую к одному потенциалу, закрученность. В следующем уроке мы вернёмся к формуле Грина и увидим её уже как частный случай куда более общей формулы Стокса, которая строго свяжет сегодняшний ротор с циркуляцией поля по замкнутому контуру.
Понял тему? Закрепи в боте! 🚀
Попрактикуйся на задачах и получи персональные рекомендации от AI
💪 Начать тренировку