Русский
Русский
English
Статистика
Реклама

Внешняя алгебра

Перевод Нормали и обратное транспонирование, часть 1 внешние алгебры

25.11.2020 12:06:49 | Автор: admin

Есть такой загадочный факт о линейных преобразованиях: некоторые из них, а именно неоднородное масштабирование и сдвиг, по какой-то причине различают "обычные" векторы и нормали. Когда мы преобразуем "обычный" вектор матрицей, то нормали почему-то нужно преобразовывать обратной транспонированной матрицей. Как это понять?


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


Единицы и масштабирование


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


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


В качестве примера давайте перечислим всевозможные поведения при масштабировании в трёхмерном пространстве. Обозначим масштабный множитель как $a>0$. Тогда:


  • Безразмерные числа не меняются, иными словами они умножаются на $a^0$.
  • Длины умножаются на $a$.
  • Площади умножаются на $a^2$.
  • Объёмы умножаются на $a^3$.
    Но это ещё не всё: есть так же плотности, которые изменяются как обратные к масштабному коэффициенту величины:
  • Линейные плотности умножаются на $1\over{a}$.
  • Плотности по площади умножаются на $1\over{a^2}$.
  • Объёмные плотности умножаются на $1\over{a^3}$.
    Плотности могут выражать вещи вроде количества текселей на длину, или геометрической вероятности, или количества частиц в объёме. Если 3D-модель масштабируется в сторону увеличения, а размер текстуры не изменяется, тогда плотность текселей на ней уменьшается, и так далее.

Получается, даже ограничившись однородным масштабом и рассмотрев скалярные (не векторные) значения, мы уже наблюдаем феномен: различные значения, которые выглядят структурно одинаковыми (все они являются скалярами), оказывается ведут себя по разному будучи преобразованными, из-за различных единиц которые они несут в себе. А именно, они соответствуют различным степеням длины от -3 до 3. Величина, соответствующая $k$ степеням длины, масштабируется как $a^k$.


(Можно было бы придумать величины со степенями масштабирования $\pm 4$ и более, или даже с дробными стпенями. Но оставим их за рамками рассмотрения, потому что у них нет хорошей геометрической интерпретации в 3D.)


Окей, может это чем-то и похоже на различие обычных векторов и нормалей. Но как это работает для векторных величин? Как на всю эту картину влияет неоднородное масштабирование? И где тут появляется обратное транспонирование? Чтобы понять это по-настоящему, нам придётся ещё дальше продвинуться в математику.


Внешние алгебры


Отныне и до конца нам понадобятся внешние алгебры, или алгебры Грассмана. Так как с ними скорее всего знакомы не все читатели, я изложу краткое введение в тему. Для более глубокого понимания обратитесь к этой лекции Эрика Лэнгиела, или к нескольким первым главам книги Дорста Geometric Algebra for Computer Science. В сети есть великое множество других материалов.


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


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


Как и у векторов, у бивекторов тоже есть направление в том смысле, что плоскость может быть обращена к различным направлениям в пространстве. Ещё у них есть абсолютная величина, геометрически представимая как площадь участка плоскости. Чего у них нет, так это концепции формы на плоскости. Визуализируя бивектор как часть плоскости, вы можете представлять его как квадрат, круг, параллелограмм или любую другую сколь угодно замысловатую фигуру соответствующей площади.
image
Аналогично, тривекторы это трёхмерные векторные величины, представляющие участок пространства, а не плоскости или стрелку. Опять же, у них определённой формы, а есть только абсолютное значение, которое теперь является объёмом, а не площадью или длиной.


В трёхмерном пространстве у тривекторов нет направления в полезном смысле слова. Иными словами, у них есть единственное возможное направление, которое параллельно пространству. Тем не менее, у тривекторов есть два противоположных направления, которые мы можем назвать "положительным" и "отрицательным", или "правосторонним" и "левосторонним". Это похоже на то, как вектор может указывать влево или вправо на одномерной прямой, и при желании мы можем назвать эти направления положительным и отрицательным.


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


Базисные $k$-векторы


Бивекторы и тривекторы можно разложить на компоненты в базисе, так же как это делается с обычными векторами. Координатная запись вектора $v$, $v=(x, y, z)$, означает, что $v$ может быть представлен как линейная комбинация базисных векторов:


$v=x{\bf e_x}+y{\bf e_y}+z{\bf e_z}$


Базисные векторы ${\bf e_x}$, ${\bf e_y}$, ${\bf e_z}$ определяют направление и масштаб осей $х$, $y$, $z$. Точно так же бивектор $B$ можно представить линейной комбинацией базисных бивекторов:


$B=p{\bf e_{yz}}+q{\bf e_{zx}}+r{\bf e_{xy}}$


Здесь ${\bf e_{xy}}$ это бивектор единичной площади, ориентированный вдоль плоскости $xy$. ${\bf e_{yz}}$ и ${\bf e_{zx}}$ можно представить по аналогии. Базисные бивекторы соответствуют не осям координат, а плоскостям, натянутым на пары осей. Так определяются "координаты бивектора" $(p, q, r)$, с помощью которых мы можем обозначить или соорудить любой бивектор в пространстве.
image
Случай тривектора менее интересен:


$T=t{\bf e_{xyz}}$


Как мы заметили выше, у тривектора в 3D есть только одно возможное направление, потому у них только один базисный элемент: единичный тривектор "вдоль пространства $(xyz)$. Все остальные тривекторы это произведения ${\bf e_{xyz}}$ на скаляр.


Внешнее произведение


Итак, внешняя алгебра содержит различные векторообразные объекты разных степеней: обычные векторы (степень 1), бивекторы (степень 2) и тривекторы (степень 3). Скалярам можно приписать степень 0. Наконец, чтобы объекты разных степеней могли взаимодействовать, внешняя алгебра определяет операцию под названием внешнее произведение, обозначаемое через $\wedge$. Оно даёт возможность сконструировать бивектор умножая два вектора, например:


${\bf e_x}\wedge{\bf e_y} = {\bf e_{xy}}$


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


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


Так же можно перемножить три вектора, или бивектор с вектором, чтобы получить тривектор.


${\bf e_x}\wedge{\bf e_y}\wedge{\bf e_z} = {\bf e_{xy}}\wedge{\bf e_z}={\bf e_{xyz}}$


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


Внешнее произведение подчиняется большинству известных правил умножения, например ассоциативности и дистрибутивному закону. Скалярное умножение с ним тоже сочетается. Для скаляра $a$ получаем:


$(au)\wedge v=u\wedge (av) = a(u\wedge v)$


Но внешнее произведение двух векторов антикоммутативно, снова как и векторное произведение. Для векторов $u, v$ имеем:


$u\wedge v=-(v\wedge u)$


Из этого следует несколько выводов. Во-первых, внешнее произведение любого вектора на себя равно нулю: $v\wedge v=0$. Более того, внешнее произведение набора линейно-зависимых векторов тоже равно нулю. Например, $u\wedge v=0$ когда $u$ и $v$ коллинеарны. В случае трёх векторов, $u\wedge v\wedge w=0$ когда $u, v, w$ копланарны.


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


Преобразования $k$-векторов


Ранее я заявлял, что абсолютное значение вектора можно представлять как длину, значение бивектора как площадь, а тривектора как объём. Но что управляет именно таким сопоставлением единиц величинам?


Выше мы видели, что длины, площади и объёмы ведут себя по-разному при масштабировании. Равномерное масштабирование трёхмерного пространства с коэффициентом $a>0$ отмасштабирует длины, площади и объёмы как $a, a^2, a^3$ соответственно. Теперь у нас есть аппарат, показывающий что векторы, бивекторы и тривекторы ведут себя точно так же.


К вектору можно применить масштаб, умножив его на подходящую матрицу:


$v\mapsto Mv$


$\begin{bmatrix} x \\ y \\ z \end{bmatrix} \mapsto \begin{bmatrix} a & 0 & 0 \\ 0 & a & 0 \\ 0 & 0 & a \end{bmatrix} \begin{bmatrix} x \\ y \\ z \end{bmatrix} = \begin{bmatrix} ax \\ ay \\. az \end{bmatrix} = av$


Вектор $v$ как единое целое, его компоненты $x, y, z$, и его скалярное абсолютное значение, умножаются на коэффициент $a$ при масштабировании, поэтому мы может назвать его длиной, и в этом не будет противоречия.


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


$\begin{aligned} B &= u \wedge v \\ (u \wedge v) &\mapsto (Mu) \wedge (Mv) \\ &= (au) \wedge (av) \\ &= a^2 (u \wedge v) \\ &= a^2 B \end{aligned}$


Во как! Так как бивектор состоит из двух сомножителей, каждый из которых масштабируется на $a$, бивектор обретает коэффициент $a^2$, который делает его площадью.


Тривекторы тоже можно преобразовать, раскладывая на векторы. Теперь неудивительно, что три вектор-сомножителя придают тривектору коэффициент $a^3$. Приведём выкладки для полноты:


$\begin{aligned} T &= (u \wedge v \wedge w) \\ (u \wedge v \wedge w) &\mapsto (Mu) \wedge (Mv) \wedge (Mw) \\ &= (au) \wedge (av) \wedge (aw) \\ &= a^3 (u \wedge v \wedge w) \\ &= a^3 T \end{aligned}$


Бивекторы и неравномерный масштаб


Теперь наконец мы можем вернуться к исходному вопросу. Что усложнится, если мы применим неравномерное масштабирование?


Чтобы понять это, давайте рассмотрим пример. Будем масштабировать в 3 раза по оси $x$, оставляя остальные оси неизменными. Получится матрица вида:


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


На обычных векторах её действие очевидно: компонента $x$ умножается на 3, а компоненты $y, z$ не изменяются. В общем случае матрица изменяет как длину, так и направление вектора в зависимости от изначального направления: векторы, близкие к оси $x$ растягиваются сильнее, а близкие к плоскости $yz$ слабее.
image
Как токое преобразование повлияет на бивектор? Для начала давайте зайдём со стороны геометрии. Бивектор обозначает участок плоскости с заданными площадью и направлением, в которое направлена "лицевая" сторона. При растяжении такого участка вдоль оси $x$ мы ожидаем, что и направление и площадь изменятся. Но различные бивекторы изменятся по разному: на бивектор, близкий к плоскости $yz$, растяжение повлияет меньше, а бивектор, чья плоскость близка к $x$, будет растянут сильнее.
image
Окей, вернёмся к алгебре. Как было показано выше, любой бивектор можно разложить на базисные бивекторы, выровненные по осям:


$B = p \, {\bf e_{yz}} + q \, {\bf e_{zx}} + r \, {\bf e_{xy}}$


Чтобы применить масштабирование $M$ к бивектору, нужно лишь применить его к базисным бивекторам. Для этого разложим их на базисные векторы и применим $M$ к ним:


$\begin{aligned} {\bf e_{yz}} = {\bf e_y} \wedge {\bf e_z} \quad &\mapsto \quad (M{\bf e_y}) \wedge (M{\bf e_z}) = {\bf e_y} \wedge {\bf e_z} = {\bf e_{yz}} \\ {\bf e_{zx}} = {\bf e_z} \wedge {\bf e_x} \quad &\mapsto \quad (M{\bf e_z}) \wedge (M{\bf e_x}) = {\bf e_z} \wedge 3{\bf e_x} = 3{\bf e_{zx}} \\ {\bf e_{xy}} = {\bf e_x} \wedge {\bf e_y} \quad &\mapsto \quad (M{\bf e_x}) \wedge (M{\bf e_y}) = 3{\bf e_x} \wedge {\bf e_y} = 3{\bf e_{xy}} \end{aligned}$


Это соответствует геометрической интуиции: $\bf e_{yz}$ не изменился, а $\bf e_{zx}$ и $\bf e_{xy}$ обрели множетель 3, потому что их плоскости включают ось $x$.


Таким образом, вот общий эффект применения $M$ к бивектору $B$:


$B \mapsto p \, {\bf e_{yz}} + 3q \, {\bf e_{zx}} + 3r \, {\bf e_{xy}}$


Теперь, как и в случае с вектором, можно выписать преобразование бивектора $B$ в виде компонент, к котором применяется матрица:


$ \begin{bmatrix} p \\ q \\ r \end{bmatrix} \mapsto \begin{bmatrix} 1 & 0 & 0 \\ 0 & 3 & 0 \\ 0 & 0 & 3 \end{bmatrix} \begin{bmatrix} p \\ q \\ r \end{bmatrix} = \begin{bmatrix} p \\ 3q \\ 3r \end{bmatrix} $


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


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


$ M^{-T} = \begin{bmatrix} \tfrac{1}{3} & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{bmatrix} $


К чему бы это?


Присоединённая матрица


Фактически, матрица преобразования для бивектора это присоединённая матрица к $M$.


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


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


У каждого элемента квадратной матрицы $n\times n$ есть алгебраическое дополнение. Вычисляется алгебраическое дополнение элемента на $i$-ой строке и $j$-ом столбце следующим образом:


  1. Возьмём исходную матрицу $n\times n$ и вычеркнем строку $i$ и столбец $j$. Останется подматрица размером $(n-1)\times (n-1)$.
  2. Вычислим определитель этой подматрицы.
  3. Умножим определитель на $(-1)^{i+j}$, то есть изменим его знак если $i+j$ нечётно. Это и есть алгебраическое дополнение!

Теперь склеим алгебраические дополнения обратно в матрицу $n\times n$, в результате чего получится присоединённая матрица.


Но как так получилось, что эта кнострукция работает в преобразовании бивектора? Посмотрим на первый компонент бивектора $p \, {\bf e_{yz}}$. Этот член представляет компонент плоскости $yz$, а потому на него влияют только преобразования, которые $M$ применяет к осям $y$ и $z$. В рецепте приготовления алгебраического дополнения $1,1$ матрицы $M$ тоже использзуется подматрица $2\times2$, которая определяет что $M$ делает с осями $y$ и $z$. Далее мы берём её определитель, который есть ни что иное, как коэффициент масштабирования плоскости $yz$!


Из-за того, что мы выбрали бивекторный базис ${\bf e_{yz}}, {\bf e_{zx}}, {\bf e_{xy}}$именно в таком порядке, каждый элемент присоединённой матрицы автоматически вычисляет детерминант, который определяет как $M$ масштабирует площади в соответствующей плоскости. Или, для внедиагональных элементов, как $M$ отображает площади из одной координатной плоскости в другую. Другими словами, алгебраические дополнения оказались в точности теми коэффициентами, которыми преобразуются компоненты бивектора.


(Между почим, знаковый множитель с третьего шага нужен чтобы разрешить некоторые проблемы упорадоченности. Без него у нас был бы базисный элемент ${\bf e_{xz}}$ вместо ${\bf e_{zx}}$. Последний базисный элемент предпочитается по общепринятому соглашению.)


Несмотря на сфокусированность нашего повествования на трёхмерном случае, замечу, что в размерности $n$ присоединённая матрица преобразует $(n-1)$-векторы в подходящем базисе. Фактически, для преобразования $k$-векторов понадобится матрица $(n-k)$-ых миноров, то есть определителей подматрицы с вычеркнутыми $n-k$ строками и столбцами.


Бивекторы и нормали


В этом месте я должен сделать небольшое признание. На протяжении последних нескольких абзацев я прятал кое что в рукаве. Трюк вот в чём: бивекторы изоморфны обычным векторам в 3D. Фактически, компоненты $(p, q, r)$ бивектора в стандартном базисе это компоненты нормали $(x, y, z)$ к плоскости бивектора с точностью до нормализации!


Давайте посмотрим как так получается. Ранее мы видели, что внешнее произведение набора линейно зависимых векторов равно нулю. Это значит, что плоскость бивектора $B$ может быть задана уравнением:


$B\wedge v=0$


Любой вектор $v$, лежащий в плоскости бивектора $B$ удовлетворяет этому уравнению потому что он образует линейно зависимый набор с двумя векторами, на которые натянута плоскость. Или, с другой стороны, тривектор, образованный $B$ и $v$ будет иметь нулевой объём.


Разложим это уравнение в стандартных векторном и бивекторном базисах и упростим:


$\begin{gathered} (p \, {\bf e_{yz}} + q \, {\bf e_{zx}} + r \, {\bf e_{xy}}) \wedge (x \, {\bf e_x} + y \, {\bf e_y} + z \, {\bf e_z}) = 0 \\ (px \, {\bf e_{yzx}} + qy \, {\bf e_{zxy}} + rz \, {\bf e_{xyz}}) = 0 \\ (px + qy + rz) {\bf e_{xyz}} = 0 \\ px + qy + rz = 0 \\ \end{gathered}$


Поясню на случай если шаги не очень понятны. Во второй строке я распределил внешнее произведение по всем членам базиса, большинство из которых уничтожились, потому что в них во внешнем произведении участвовало по две копии одной оси (например, ${\bf e_{yz}} \wedge {\bf e_y} = 0$). В третьей строке я перегруппировал оси всех тривекторов к единому виду $\bf e_{xyz}$, что вполне законно, если мы отслеживаем изменения знака. Здесь во всех случаях было чётное количество изменений знака. Наконец, я вынес $\bf e_{xyz}$ и сократил на него.


Теперь последняя строка выглядит как скалярное произведение векторов $(p, q, r)$ и $(x, y, z)$! Другими словами, она выглядит как обычное уравнение плоскости $n\cdot v = 0$ с вектором нормали $n=(p, q, r)$.


Отсюда видно, что бивекторные координаты $(p, q, r)$ в базисе ${\bf e_{yz}}, {\bf e_{zx}}, {\bf e_{xy}}$так же являются координатами нормали к плоскости в стандартном векторном базисе ${\bf e_x}, {\bf e_y}, {\bf e_z}$. Более того, внешнее произведение вектора на бивектор идентично скалярному произведению на соответствующий вектор нормали. Формально это применение звезды Ходжа, которая в трёхмерном случае взаимозаменяет бивекторы и их нормали. Подробнее об этом поговорим в будущих статьях.


Дальнейшие вопросы


Мы увидели, что векторы нормали в трёхмерном случае можно в какой-то мере представлять себе как бивекторы из внешней алгебры. Так же мы поняли геометрически почему присоединённая матрица это правильный инструмент для преобразования бивектора. Это отвечает на наш исходный вопрос (почему некоторые преобразования различают обычные векторы и нормали) более удовлетворительно чем "алгебра так устроена".


Тем не менее, от нас ускользнуло ещё несколько вопросов. Я сказал, что бивекторы "изоморфны" векторам нормали, имея ввиду что медлу ними есть соотношение один к одному. Но какое именно соотношение? Вдобавок, почему мы закончили на присоединённой матрице, а не на обратной транспонированной? Они пропорциональны между собой, и обычно на практике не важно какую именно использовать, потому что нам не важны длины нормалей (обычно мы из всё равно нормализуем). Но мне бы всё ещё хотелось понять корни этого несоответствия.


Ещё вопрос: в затравке вначале статьи нам встретились единицы как с положительными, так и с отрицательными степенями масштаба, от -3 до 3. Теперь мы увидели, что внешние $k$-векторы масштабируются как стпень $k$ от 0 до 3. Но что насчёт векторных единиц с отрицательными степенями масштаба? Существуют ли они? Если да, то что они такое?


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

Подробнее..

Внешняя алгебра, которую мы заслужили. Часть 1 симплексы и границы

26.02.2021 18:20:16 | Автор: admin

Мотивация

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

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

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

Внешнее произведение

Суть внешней алгебры в том, что объекты можно умножать. Если вас это не впечатлило, то еще раз - умножать можно любые объекты, а не только числа. Можно умножать людей, города, компьютеры, бухгалтерские счета и все остальное, что подходит под понятие объекта. Такое произведение объектов называется "внешним умножением". Это исторически сложившийся термин для того, чтобы отличать внешнее произведение от внутреннего, которым обычно обозначают скалярное произведение.

Обычно внешнее произведение математики обозначают клином (wedge)\wedge. Но этот знак неудобен. Во-первых, его нет на клавиатуре. Во-вторых, никакого другого умножения, кроме внешнего, для произвольных объектов не существует. Поэтому будем обозначать внешнее произведение звездочкой. Вот оно, умножение элементаa на элементb: a*b .

Выглядит знакомо, да? Но в отличие от привычного произведения чисел внешнее произведение антикоммутативно - проще говоря, меняет знак при перестановке множителей. Вот так:

a*b=-b*a

Это важное свойство, которое является ключевым для внешней алгебры. Из него в частности следует, что внешнее произведение элемента на самого себя может быть только нулем - объектом без знака: a*a = 0 .

Какой смысл несет в себе "внешнее произведение". По простому - это ничто иное, как объединение объектов в список. Поэтому, когда элементов много, то их удобно обозначить списком. Такой упорядоченный список выделим квадратными скобками:a*b*c*d = [abcd]. При этом надо помнить про наличие знака у списка - при перестановке соседних элементов знак списка меняется на противоположный: [abcd] = -[acbd] . Ну и как следствие - в таком списке не может быть одинаковых элементов.

Список с такими свойствами будем называть симплексом. Симплекс из двух элементов - отрезок, из трех - треугольник, и т. д. (Только надо иметь ввиду, что это топологические отрезки и треугольники. У них нет длин, углов и прочих метрических параметров.). Количество элементов симплекса задает его порядок (грейд). Математики чаще используют понятие мерности. Размерность симплекса на 1 меньше его порядка. То есть отрезок является одномерным.

Симплексы можно умножать друг на друга - это будет эквивалентно объединению двух списков: [ab]*[cd] =[abcd] . Но при наличии в множителях одинаковых элементов результатом объединения будет пустой список - нуль: [ab]*[ac]=0 .

Ну и еще одно полезное правило. При перестановке перемножаемых симплексов местами знак меняется на противоположный, если произведение порядков симплексов нечетное:

S_s * P_p = (-1)^{sp} P_p*S_s

Здесь нижние индексы обозначают порядок симплексов.

Обратные элементы

В нашей алгебре не обойтись без понятия единицы. Единица - это такой элемент, при умножении на который с любой стороны симплекс остается без изменений: 1*[ab]=[ab]*1=[ab] . В свою очередь наличие единицы позволяет расширить множество элементов, введя понятие обратных. Кратко обратные элементы именуют коэлементами. При умножении на обратный элемент обращается в единицу. Поскольку у нас не обычное умножение, а внешнее, то важно относительное положение множителей - при перемене мест элемента и обратного ему единица становится отрицательной. Для удобства (связанного с понятием граничного оператора) постулируем, что если обратный элемент расположен слева, то результатом произведения будет 1, а если справа, то -1. Это выглядит поначалу немного непривычно, но в целом окупается:

/a*a=1, \quad a*/a =a/a = -1

Здесь перед коэлементами стоит префикс в виде косой черты /. Если обратный элемент умножается на другой элемент, то результатом будет пустой симплекс - ноль: /a*b=0 .

Коэлемент можно трактовать как отсутствие элемента. Это дырка в множестве. Но интересно, что с коэлементами можно обращаться так же как с обычными. Произведение коэлементов образует обратный симплекс (косимплекс). Для заданного симплекса можно определить обратный. Постулируем, что при умножении обратного слева на исходный должны получить 1 независимо от порядка симплекса: /S*S=1 . Отсюда следует правило расположения элементов в обратном симплексе - в нем порядок элементов меняется на обратный. Таким образом еслиS = [abcd], то/S = /[abcd] = [/d/c/b/a].

Если симплекс умножить на обратный справа, то результат зависит от четности порядка симплекса:

S_p/S^p=(-1)^p

Если симплекс умножается на косимплекс, то взаимно обратные элементы должны сокращаться. Для того, чтобы правильно учесть знак необходимо элемент и обратный ему поставить рядом и выполнить сокращение с учетом их положения. Например: [ab]*[/a] = [ab/a] = -[a/ab]=b .

Если перемножаемые симплекс и косимплекс содержат элементы, которых нет в другом, то результатом произведения будет ноль: [abc]*[/a/b/d] = [abc/a/b/d] = -[c/d] = 0 .

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

Линейные комбинации и цепи

Элементы и симплексы можно не только умножать, но и складывать, образуя линейные комбинации. Перед каждым симплексом в комбинации может быть скалярный множитель (число). Пример линейной комбинации симплексов 2-го порядка:

B=[ab]-[ac]+[bc].

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

a*(b+c)=a*b+a*c

Но надо помнить, что умножение здесь внешнее (антикоммутативное). Поэтому некоторые привычные формулы выглядят иначе. Например, внезапно(a + b)*(a-b) =2 b*a.

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

Линейную комбинацию можно рассматривать как разложение некоего объекта того же порядка по базисным. Например, если у нас есть два объектаaиb, то можно определить объектx как их линейную комбинацию:

x=x_a a + x_b b

Полученный объект является зависимым, или производным. Отметим, что умножение производного объекта на симплекс его базиса, дает ноль:[ab]*x=0. То есть зависимые объекты не создают нового пространства. Ну или по другому - размерность пространства определяется количеством независимых элементов.

Коэффициенты разложения элемента по базисным могут быть определены через умножение на коэлементы базиса:

x_a = /a*x, x_b = /b*x

Получается, что внешнее произведение элементов и коэлементов является скалярным (в том смысле, что результат является скаляром). Но между самими элементами скалярное произведение не определено.

Аннулятор и граница

Мы определили симплексы как произведение элементов, определили обратные элементы и обратные симплексы, ввели понятие линейной комбинации симплексов. Пора разобраться с понятием вектор. Часто вектор появляется в учебниках как "черт из табакерки" - то есть явочным порядком. Но постулируя вектор как независимое понятие, мы препятствуем осмыслению его обобщения, создаем искусственный барьер в понимании "реальной картины мира". В нашей алгебре первично понятие объекта (элемента). Вектор - производное понятие, и сейчас мы его "произведем".

Вначале нам понадобится еще одно фундаментальное понятие, которое имеет разные названия, в зависимости от контекста в котором употребляется. Здесь для него используем абстрактный термин - аннулятор, хотя пока и непонятно, чего он там обнуляет. Пусть имеется некое конечное множество элементов, например, a, b, c, d . Тогда аннулятором для данного множества является сумма обратных элементов данного множества:

/z_{abcd} = /a+/b+/c+/d

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

Аннулятор позволяет определить граничный оператор над симплексом как внешнее умножение аннулятора на симплекс. Результатом действия является граница. Вот она, граница симплекса[abcd]:

B[abcd] = /z_{abcd}*[abcd] = [bcd] - [acd] + [abd] - [abc]

Границы настолько важны, что не пожалеем для их обозначения отдельных скобок:

(abcd) == B[abcd]

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

(abc)= /z_{abc}*[abc] == /z_{abcd}*[abc]

Граница (симплекса) есть цепь - линейная комбинация симплексов. Порядок границы на 1 меньше порядка образующего ее симплекса. В частности, вектор - это граница 1-порядка, образованная отрезком (симплексом 2-го порядка):

(ab) = /z_{ab}*[ab] = b - a

Вектор 2-го порядка называют бивектором, 3-го - тривектором и т.д. Граница произвольного порядка может быть названа мульти- или поливектором.

Действие граничного оператора может быть отменено. Существует элемент, умножая на который границу симплекса, можно восстановить исходный симплекс. Данный элемент называется центроидом множества (или барицентром). Центроид - это среднее суммы элементов:

g_{abcd} = (a+b+c+d)/4

Здесь круглые скобки - это не обозначение границы, а группировка элементов (обычно смысл скобок понятен из контекста). Проверим действие центроида:

g_{abcd}*(abcd) = (a+b+c+d)*([bcd] - [acd] + [abd] - [abc])/4 = [abcd]

Умножение границы на центроид собирает несколько слагаемых в одно.

Основное свойство границ

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

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

/z_{abcd} * (abcd) = /z_{abcd} * /z_{abcd} * [abcd] = 0

Данная формула раскрывает смысл термина "аннулятор" - при действии на границу аннулятор ее обнуляет. Раскрывая границу как линейную комбинацию симплексов и умножая каждый симплекс на аннулятор, получаем тождества границ:

/z_{abcd} * (abcd) = /z_{abcd} * ([bcd] - [acd] + [abd] - [abc]) = (bcd) - (acd) + (abd) - (abc) = 0

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

(ab) = (ax)-(bx),\\ (abc) = (abx)-(acx)+(bcx),\\ (abcd) = (abcx) - (abdx)+(acdx)-(bcdx).

Общий элементxв правой части тождеств можно также интерпретировать как центр координат. На этом свойстве основано определение векторного пространства с общим центром, который всегда можно исключить. при выражении других границ пространства.

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

Произведение границ

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

(abc)(abd)=([bc]-[ac]+[ab])*([bd]-[ad]+[ab]) = -[bcad]-[acbd] = [acbd]-[acbd] = 0

Если границы имеют один общий элемент, то при умножении они сливаются в одну (компоненту) - это правило слияния границ. Пример слияния двух векторов в 2-границу (бивектор):

(ab)(bc) = (b - a)*(c - b) = b*c - a*c + a*b = (abc)

Если же перемножаемые границы не имеют общих элементов, то границы не сливаются. Получаем границу, состоящую из нескольких компонент связности. Пример такой границы, содержащей 4 элемента:(ab)(cd). Поскольку под поливектором обычно понимают границу с одной компонентой связности, то строго говоря границы и поливекторы - это не одно и то же. Под поливектором будем понимать всегда границу из одной компоненты.

Итак, порядок границы p(B) зависит не только от количества образующих ее элементов n , но и от количества ее компонент m . Порядок границы (ab)(cd) равен 2, несмотря на то, что она содержит 4 элемента. Для получения порядка границы надо из количества элементов вычесть количество компонент: p(B) = n(B) - m(B) .

Кроме того, одна и та же граница может быть образована произведением разных границ меньшего порядка. Например, граница (abc) может быть образована тремя разными парами векторов: (abc) == (ab)(bc)==(ab)(ac)==(ac)(bc) . То есть произведение границ с общим элементом уничтожает информацию о том, какие именно границы умножались - границы сливаются в одну.

Для тех, кому интересны подробности, откуда все это следует

укажем, что в основе доказательства свойств произведения границ лежит правило Лейбница (цепочки), которое применительно к оператору границы можно записать в следующем виде:

\partial (X^p*Y) = \partial(X)*Y+(-1)^p X*\partial(Y)

Здесь граничный оператор (умножение на аннулятор слева /z* обозначен как частная производная\partial - это общепринятое обозначение. Используя данное тождество, можно показать, что\partial[Xv]*\partial[vY] = \partial[XvY]. Проще всего это сделать раскрытием левой и правой частей по правилу Лейбница.

Немного линейной алгебры...

Пространство элементов, с которым мы тут возимся, принято называть аффинным. Это пространство, в котором есть элементы и их линейные комбинации, но нет метрики.

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

Рассмотрим пространство, образованное тремя элементами, среди которых выделим центр - общий элементO. Границей пространства будет бивектор базиса(Oxy). Пусть теперь в данном пространстве есть три элементаa,b,cс известными координатами относительно базисных элементов. Задача состоит в том, чтобы выразить бивектор(abc)через базисный.

Вначале выпишем координаты элементов. Учтем, что сумма коэффициентов разложения элемента по базисным должна быть равна единице - это следствие того, что граница любого элемента пространства должна быть равна 1: z*a=1 . Такие координаты называются барицентрическими. Тогда для базиса из 3-х элементов две координаты являются независимыми, а третья - выражается через них:

a = a_x x + a_y y + (1 - a_x - a_y) \ O = O + a_x (Ox) + a_y (Oy)

Данная формула может быть представлена как координаты вектора (Oa) = a - O :

(Oa) = a_x (Ox) + a_y (Oy)

Аналогичным образом можно найти координаты векторов(Ob)и(Oc). Перемножая векторы, можно выразить координаты бивекторов через базисный бивектор:

(Oab)=(Oa)*(Ob)=(a_x b_y - a_y b_x) (Oxy)

Для нахождения искомого бивектора(abc)воспользуемся тождеством границ из предыдущего раздела: (abc) = (Oab) - (Oac) + (Obc) . Подставляя в него координаты бивекторов, получаем итоговый ответ:

(abc) = abc_{xy} (Oxy) = ((a_x b_y - a_y b_x) - (a_x c_y - a_y c_x) + (b_x c_y - b_y c_x)) (Oxy)

Значение скалярного коэффициента abc_{xy} здесь как раз и будет отношением площадей искомого и базового бивекторов. Отметим, что коэффициент может быть и отрицательным, поскольку у бивекторов есть ориентация.

Аффинные координаты и площадиАффинные координаты и площади

Коэффициент может быть также выражен как детерминант матрицы: abc_{xy} = det(ABC) . Значения матрицы координатABCравны произведению элементов и базисных коэлементов (за исключением центра координат):

ABC=(a,b,c)*(/z,/x,/y) =\matrix{1 && 1 && 1 \\ a_x && b_x && c_x \\ a_y && b_y && c_y}

Для вычисления относительного объема в матрицу добавляется дополнительная строка и колонка, соответствующие новому измерению.

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

... и топологии

Про топологию говорят, что это геометрия без измерений. В том смысле, что конкретные координаты элементов топологам неинтересны. Поэтому коэффициенты топологических цепей всегда равны +-1. Алгебраические выражения границ симплекса можно интерпретировать топологически. В качестве примера приведем разрезание (топологического) квадрата с вершинами a, b, c, d на два треугольника. Треугольники в данном случае должны быть ориентированы, то есть иметь знак. Тогда квадрат можно представить как сумму (склейку) треугольников:Square = [abc]+[acd]. Применив к данной цепи граничный оператор, получим цепь из 4-х 2-симплексов - это граница квадрата:

/z*Square = (abc)+(acd)=[ab]+[bc]+[cd]+[da]

Склейка симплексовСклейка симплексов

При сложении 2-границ общая сторона треугольников сократилась. В общем случае, можно продолжать склейку треугольников, получая произвольные топологические многогранники. Кажется, что можно любую поверхность представить как сумму треугольников, но на самом деле нет. При покрытии треугольниками поверхности ленты Мёбиуса не удается сократить внутренние границы!

Мы определили границу симплексаBкак результат действия граничного оператора (умножение аннулятора) на некий симплекс. Повторное взятие границы, как уже отмечалось дает ноль:

/z*B = 0

Но вообще говоря, возможны и другие цепи (линейные комбинации симплексов), граница которых нулевая. Цепи с нулевой границей называют цикламиC. Инвариант циклов:

/z*C=0

Циклы - это более общее подмножество цепей, чем границы. В общем случае существуют циклы, которые не являются границами какого-либо симплекса. Их называют гомологиями:

H=C/B

Говоря про циклы, снова оговоримся - это топологические циклы. Так же как в топологическом треугольнике нет величины сторон и углов, так и в топологическом цикле нет величины связи между элементами цикла.

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

Коцепи и дуальность

Для заданного конечного множества независимых элементов существует симплекс предельного порядка, определяемый как произведение всех элементов. Граница данного симплекса называется предельной границей пространства - она имеет максимальный порядок из всех возможных границ на данном множестве. Предельная граница для множества 4-х элементов a, b, c, d : I_3=(abcd) .

Предельная граница множества всегда связна (имеет только одну компоненту). Умножение предельной границы на коэлементы понижает ее порядок, но оставляет границу связной: (abcd) /a = (bcd) . Умножение предельной границы на сумму коэлементов порождает границы, состоящие из компонент. Например,

(/a+/b)(abcd)==(abcd)(/c+/d) = (acd)-(bcd) = (ab)(cd)

Здесь мы видим коцепи 1-го порядка - это линейные комбинации коэлементов. Встречаются также коцепи более высокого порядка. Например, граница из трех компонент может быть получена умножением предельной границы на аннуляторы двух произвольных компонент:

(ab)(ij)(xy) = -(/a+/b)(/x+/y)I_5=(/i+/j)(/x+/y)I_5=(/a+/b)(/i+/j)I_5

ЗдесьI_5 = (abijxy)- предельная граница 6 элементов. Коцепь 2-го порядка:

(/a+/b)(/i+/j) == /a/i+/a/j+/b/i+/b/j

Видим, что разным коцепям может соответствовать одна и та же граница. Из данных соотношений следует, что границуBна конечном множестве элементов можно задать через коцепь/B. Умножая коцепь на предельную границу, переходим из копространства в обычное:

B = /B*I

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

Дуальное преобразование и звездочка Ходжа - это не одно и тоже!

Для тех, кто вообще в курсе про оператор Ходжа. Оператор Ходжа преобразует одни (поли)векторы пространства в другие векторы того же пространства. Дуальное преобразование преобразует коцепи в границы.

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

Можно определить и обратное дуальное преобразование - от границ (цепей) к коцепям. Пусть дана некая граница (в общем случае произвольная цепь)B. Надо построить дуальную ей коцепь/B для заданного пространства (симплекса) с предельной границей I .

Алгоритм построения может быть таким. Для цепи определяем центроид g (средняя сумма элементов, образующих цепь). "Интегрируем" цепь умножением слева на центроид. Переводим полученный "интеграл" из пространства в копространство умножением на косимплекс пространства/S. Косимплекс пространства однозначно определяется предельной границейI. Полученная коцепь и будет искомой:

/B = /S*(g*B)

В данной формуле круглые скобки обозначают порядок операций.

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

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru