Как стать автором
Обновить

Нормали и обратное транспонирование, часть 2: сопряжённые пространства

Время на прочтение10 мин
Количество просмотров4.7K
Автор оригинала: Nathan Reed

В первой части мы рассмотрели внешнюю алгебру и поняли, что векторы нормали в 3D можно интерпретировать как бивекторы. Для преобразования бивекторов в общем случае нужна матрица отличная от той, которая преобразует обычные векторы. Воспользовавшись каноническим базисом для бивекторов, мы выяснили, что это присоединённая матрица, которая пропорциональна обратной транспонированной. Эти рассуждения хотя бы частично объяснили почему нормали преобразуются обратной транспонированной матрицей.


Но некоторые вопросы были заметены под ковёр.


Мы рассмотрели присоединённые матрицы, но не показали как они связаны с алгебраическим доказательством того, что для преобразования уравнения плоскости $N\cdot x + d = 0$ нужна обратная транспонированная матрица. Пропорциональность между матрицами была в некотором смысле притянута за уши.


Более того, мы увидели, что $k$-векторы из внешней алгебры снабжают векторные геометрические объекты естественной интерпретацией, в которой они содержат единицы длины, площади и объёма, измкеняющиеся соответствующим образом при масштабировании. Но мы не нашли ничего подобного для плотностей — единиц, обратных к длине, площади и объёму.


В этой статье мы рассмотрим ещё одну геометрическую концепцию, которая понадобится для завершения картины. Слияние этой новой концепции с уже изученной внешней алгеброй прояснит и разрешит оставшиеся вопросы.


Функции как векторы


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


Вот он: функции, которые возвращают векторы, сами являются векторами


С первого взгляда это утверждение может показаться бессмысленным. Векторы и функции — это совершенно разные вещи, как например яблоки и… стулья, не так ли? Как функция буквально может быть вектором?


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


Функции тоже можно складывать между собой! Две функции $f$ и $g$ можно сложить поточечно и получить новую функцию $h(x) = f(x) + g(x)$ для каждой точки $x$ в области определения. Аналогично, функция может быть поточечно умножена на скаляр: $g(x) = a\cdot f(x)$. Эти операции удовлетворяют аксиомам векторного пространства, потому любое множество подходящих функций формирует полноправное векторное пространство, называемое функциональным пространством.


Запишем формальнее: пусть есть область определения $X$ (любое множество, не обязательно векторное пространство) и область значений $V$ — векторное пространство. Тогда множество функций $f: X \to V$ образуют векторное пространство относительно поточечного сложения и умножения на скаляр. Область значений должна быть векторным пространством чтобы в нём работало сложение и перемножение значений функции, но области определения не обязательно быть векторным пространством, и вообще "пространством". Она может быть хоть дискретным множеством.


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


Линейные формы и сопряжённое пространство


Отсюда и далее будем рассматривать особый класс функций, называемый линейными формами.


Пусть есть векторное пространство $V$, например трёхмерное $\Bbb R^3$, тогда линейная форма на $V$ определяется как линейная функция $f: V \to \Bbb R$. То есть, это линейная функция которая принимает вектор и возвращает скаляр.


(Замечание для математиков: в этой статье я рассматриваю только конечномерные пространства над $\Bbb R$, поэтому некоторые утверждения могут быть неверны для векторных пространств в общем случае. Извините!)


Мне нравится визуализировать линейные формы как последовательности параллельных равноотстоящих плоскостей (3D) или линий (2D), то есть линий/поверхностей уровня функции, отстоящих друг от друга на единицу в величинах значений функции. Вот несколько примеров:
image
Здесь градиенты показывают ориентацию линейной формы — функция возрастает в сторону возрастания непрозрачности градиента. Линии резкого изменения цвета пересекают оси в целых точках. Заметим, что "бо́льшие" линейные формы (в смысле бо́льших выходных значений) соответствуют более плотному размещению линий, и наоборот.


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


Это линейное пространство — множество линейных форм над $V$ — достаточно значимо, чтобы иметь отдельное название: сопряжённое (или двойственное) пространство. Оно обозначается через $V^*$. Элементы двойственного пространства (линейные формы) называются двойственными векторами или ковекторами.


Естественная свёртка


Тот факт, что двойственные векторы — это линейные, а не какие угодно функции из $V$ в $\Bbb R$, сильно ограничивает их поведение. У линейных функций на $n$-мерном векторном пространстве есть только $n$ степеней свободы, в отличие от произвольных функций, у которых может быть сколько угодно степеней свободы. Иными словами, у $V^*$ та же размерность, что и у $V$.


Конкретнее, линейная форма на $\Bbb R^n$ полностью определяется своими значениями при применении к $n$ векторам базиса. Значение на любом другом векторе может быть выведено через линейность. Например, если $f$ — линейная форма над $\Bbb R^3$ и $v=(x, y, z)$ — произвольный вектор, то:


$\begin{aligned} f(v) &= f(x {\bf e_x} + y {\bf e_y} + z {\bf e_z}) \\ &= x \, f({\bf e_x}) + y \, f({\bf e_y}) + z \, f({\bf e_z}) \end{aligned}$


Если вы думаете, что это выражение выглядит очень похожим на скалярное произведение $(x, y, z)$ и $\bigl(f({\bf e_x}), f({\bf e_y}), f({\bf e_z}) \bigr)$ — вы правы!


Действительно, операция применения линейной формы к вектору имеет свойства произведения между сопряжённым пространством и основным: $V^*\times V \to \Bbb R$. Это произведение называется естественной свёрткой.


Как и скалярное произведение векторов, естественная свёртка возвращает действительное число, и является билинейной, то есть линейной по обоим аргументам. Тем не менее, здесь мы берём произведение не двух векторов, а двойственного вектора с "обычным" вектором. Линейность по левому аргументу получается из поточечного сложения и умножения линейных форм, а по правому — из того, что линейные формы… линейны на своих векторных аргументах.


Далее будем обозначать естественную свёртку угловыми скобками: $\langle w, v \rangle$. Здесь $w$ — двойственный вектор в $V^*$, а $v$ — вектор в $V$. Повторюсь, что это лишь вычисление линейной формы $w$ как функции от вектора $v$. Но так как функции это векторы, а двойственные векторы — линейные функции, эта операция имеет свойства произведения.


Вышеприведённая формула выглядит вот так в новой нотации с угловыми скобками:


$\begin{aligned} \langle w, v \rangle &= \bigl\langle w, \, x {\bf e_x} + y {\bf e_y} + z {\bf e_z} \bigr\rangle \\ &= x \langle w, {\bf e_x} \rangle + y \langle w, {\bf e_y} \rangle + z \langle w, {\bf e_z} \rangle \end{aligned}$


Обратите внимание, что теперь эта операция выглядит "всего лишь" как навешивание дистрибутивного атрибута, чем она и является.


Двойственный базис


Вышеупомянутую конструкцию можно использовать для определения канонического базиса $V^*$ для данного базиса $V$. Конкретнее, нам нужно сделать числа $\langle w, {\bf e_x} \rangle, \langle w, {\bf e_y} \rangle, \langle w, {\bf e_z} \rangle$ координатами ковектора $w$ в некотором базисе, так же как $x, y, z$ являются координатами в базисе пространства $V$. Этого можно достичь определением двойственных базисных векторов ${\bf e_x^*}, {\bf e_y^*}, {\bf e_z^*}$ при условиях:


$\begin{aligned} \langle {\bf e_x^*}, {\bf e_x} \rangle &= 1 \\ \langle {\bf e_x^*}, {\bf e_y} \rangle &= 0 \\ \langle {\bf e_x^*}, {\bf e_z} \rangle &= 0 \end{aligned}$


и аналогичных для ${\bf e_y^*}, {\bf e_z^*}$. Все девять условий можно записать кратко:


$ \langle {\bf e}_i^*, {\bf e}_j \rangle = \begin{cases} 1 & \text{if } i = j, \\ 0 & \text{if } i \neq j, \end{cases} \quad i, j \in \{ {\bf x, y, z} \}$


Этот двойственный базис существует и единственный для заданного базиса в $V$.


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


Вот пара примеров векторных базисов и соответствующих им двойственных базисов:
image


А вот пример разложенной по базису линейной формы $w = p {\bf e_x^*} + q {\bf e_y^*}$:
image


Возьмём двойственный базис из определения выше и выразим двойственный вектор $w$ и вектор $v$ через соответствующие базисы. Тогда естественная свёртка $\langle w, v \rangle$ скукоживается до скалярного произведения:


$\begin{aligned} \langle w, v \rangle &= \bigl\langle p {\bf e_x^*} + q {\bf e_y^*} + r {\bf e_z^*}, \; x {\bf e_x} + y {\bf e_y} + z {\bf e_z} \bigr\rangle \\ &= px + qy + rz \end{aligned}$


Преобразования двойственных векторов


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


Двойственные векторы становятся третьим примером в этом классе объектов! Двойственные векторы тоже "вектороподобны" (подчиняются аксиомам векторного пространства), структурно схожи с векторами и бивекторами (состоят из трёх компонент в 3D), но имеют другой геометрический смысл (линейные формы). Так давайте же посмотрим на поведение двойственных векторов при трансформациях!


Двойственные векторы — это линейные формы, то есть функции. Как преобразовать функцию?


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


Более формально: пусть на векторы действует матрица $M$, и эту же матрицу нужно применить к функции $f(v)$, чтобы получилась новая функция $g(v)$. Для этого нужно лишь чтобы $g$ от преобразованного вектора равнялась $f$ от исходного вектора:


$g(Mv)=f(v)$


Что равнозначно


$g(v)=f(M^{-1}v)$


Иными словами, функцию можно преобразовать, соорудив новую функцию которая применяет обратное преобразование к своему аргументу и подаёт его в исходную функцию.


Заметим, что это работает только для обратимых $M$. В противном случае наша картинка про "перенос значений функции вместе с аргументами" рассыпается: необратимая $M$ может схлопнуть несколько различных точек области определения в одну.


Однородное масштабирование


Теперь, когда мы понимаем как преобразовать функцию, давайте посмотрим на однородное масштабирование. Возьмём коэффициент $a>0$, тогда вектор будет отображаться как $v\mapsto av$. Тогда функции будут преобразованы как $f(v)\mapsto f({v\over a})$ согласно предыдущему разделу.


Давайте теперь посмотрим на это с точки зрения двойственного вектора, а не функции. Если $f(v) = \langle w, v \rangle$ для некоторого вектора $w$, то что произойдёт при масштабировании в $a$ раз?


$\begin{aligned} \langle w, v \rangle \mapsto & \left\langle w, \frac{v}{a} \right\rangle \\ = & \left\langle \frac{w}{a}, v \right\rangle \end{aligned}$


Я всего лишь переместил множитель $1/a$ с одной стороны угловых скобок на другую, что допустимо, так как угловые скобки билинейны. Итак, мы показали что двойственный вектор $w$ преобразуется следующим образом:


$w \mapsto \frac{w}{a}$


Это интересно! При масштабировании вектора в $a$ раз, двойственный вектор масштабируется как $1/a$. В предыдущей статье мы оправдали назначение единиц "площади" и "объёма" бивекторам и тривекторам через их поведение при масштабировании. Следуя этому принципу заключим, что двойственные векторы несут единицы, обратные длине!


Фактически, двойственные векторы представляют ориентированные линейные плотности. Они предоставляют инструментарий для количественных рассуждений о ситуациях, когда нечто скалярное (например, количество текселей, прозрачность, изменение электрического напряжения/температуры/давления) распределено вдоль какого-то измерения в пространстве. При свёртывании двойственного вектора с вектором (то есть при вычислении линейной формы над вектором), вы по сути спрашиваете "какое количество этого "нечто" данный вектор охватывает?"


При масштабировании мы сохраняем количество "нечто". Если масштабирование увеличивает, плотность уменьшается, потому что одинаковое количество чего-либо теперь распределяется на большее расстояние, и наоборот. Это свойство воплощается в обратности масштабирования двойственных векторов.


Сдвинутый двойственный вектор и обратное транспонирование


Мы рассмотрели как однородное масштабирование обращается при применении к двойственным векторам. Теперь мы могли бы изучить неоднородное масштабирование, но так получается, что оно не очень интересно — как вы и могли подумать, оно всего лишь применяется как масштабирование на обратную величину к каждой из осей. Куда более показательным будет изучение сдвига.


Для этого нам будет достаточно двумерного случая. Для примера возьмём преобразование, которое немного наклоняет ось $y$ в сторону $x$:


$ M = \begin{bmatrix} 1 & \tfrac{1}{2} \\ 0 & 1 \end{bmatrix}$


Вот как это выглядит:
image
А что произойдёт если применить это преобразование к двойственному вектору? Визуально всё понятно: изолинии линейной формы наклонятся вслед за сдвигом.
image
Но как это выразить в виде матрицы, действующий на координаты двойственного вектора? Давайте присмотримся к компоненте $\bf e_x^*$. Заметим, что преобразование $M$ не повлияло на ось $x$ — она отобразилась сама в себя. Но что насчёт $\bf e_x^*$?
image
Компонента $\bf e_x^*$ изменяется этим преобразованием, потому что изолинии приобретают наклон! Иными словами, несмотря на то, что расстояния вдоль оси $x$ не изменились, $\bf e_x^*$ "отслеживает" что делают другие оси, потому что ей надо оставаться параллельной этим осям. Это одно из определяющих условий, на которых работает двойственный базис.


Строго говоря, здесь $\bf e_x^*$ переходит в ${\bf e_x^*} - \tfrac{1}{2}{\bf e_y^*}$. Доводя дело до конца, мы увидим, что вся матрица, применяемая к координатам двойственного вектора, имеет вид


$ \begin{bmatrix} 1 & 0 \\ -\tfrac{1}{2} & 1 \end{bmatrix}$


А это и есть обратная транспонированная $M$!


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


$ \det M = \text{масштаб по своей оси} \cdot \text{масштаб по другим осям} $


Отсюда мы можем перейти к


$ \frac{1}{\text{масштаб по своей оси}} = \frac{1}{\det M} \cdot \text{масштаб по другим осям} $


что соответствует соотношению между обратной транспонированной и присоединённой матрицами.


$ M^{-T} = \frac{1}{\det M} \cdot \text{присоед}(M) $


Здесь я проделываю очень нестрогий трюк, потому что хорошая геометрическая демонстрация заведёт нас в ещё большие дебри, а такой способ даёт хоть немного интуитивного понимания почему обратную транспонированную матрицу правомерно применять к двойственным векторам.


Так что же такое вектор нормали?


Ранее мы увидели, что поверхности уровня линейной формы — это параллельные линии в 2D или плоскости в 3D. Отсюда следует, что мы можем определить плоскость, взяв определённую поверхность уровня данного двойственного вектора:


$\langle w, v \rangle = d$


Двойственный вектор $w$ выступает как знаковое поле расстояний плоскости.


Так же мы увидели, что если выразить естественную свёртку $\langle w, v \rangle$ в терминах базиса и соответствующего ему двойственного базиса, то она превратится в скалярное произведение $w \cdot v$. После чего уравнение выше становится обычным уравнением плоскости:


$w\cdot v = d$


Отсюда видно, что координаты двойственного вектора в двойственном базисе так же являются координатами вектора нормали в стандартном векторном базисе.


Итак, векторы нормали можно интерпретировать как двойственные векторы в двойственном базисе, поэтому они преобразуются обратной транспонированной матрицей.


Но постойте. В предыдущей статье я сказал, что нормали надо понимать как бивекторы, а потому их надо трансформировать присоединённой матрицей, не так ли? Как правильно то?


Мне кажется, на этот вопрос нет единственного правильного ответа. Идея "нормального вектора" слишком расплывчата, и её можно оправдано формализовать как через бивекторы, так и через двойственные векторы. Как было показано, оба способа преобразования эквивалентны в смысле ориентации: и бивекторы и двойственные векторы остаются перпендикулярными определяющей их плоскости, следуя условиям $B \wedge v = d$ или $\langle w, v \rangle = d$ соответственно. Различаются они только единицами измерения и реакцией на масштабирование: бивекторы это площади и объёмы, а двойственные векторы — это обратные длины.


Это всё что я хотел рассказать о преобразованиях нормальных векторов, но ещё несколько вопросов остались в подвешенном состоянии. В конце первой части я задавал вопрос об отрицательных степенях масштаба. Теперь у нас есть минус первая степень, но что насчёт -2 и -3? Чтобы это понять, нам придётся скомбинировать внешнюю алгебру и двойственные пространства, чем мы и займёмся в третьей части.

Теги:
Хабы:
+10
Комментарии0

Публикации

Изменить настройки темы

Истории

Работа

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн