В первой части этой серии мы начали разговор о геометрических алгебрах с общего знакомства с алгебрами Клиффорда, в которых некоторое базовое поле (в частности, вещественные числа) расширяется дополнительными элементами, неформально названными «квадратными корнями» из и
. Напомню, что конкретную алгебру определяет операция умножения (
), которая для каждого из дополнительных невещественных элементов — генераторов — определяет, чему равно произведение генератора с самим собой (квадрат генератора). Мы взглянули на алгебры с двумя различными мнимыми единицами («корнями из
») и получили в качестве неизбежного бонуса третью мнимую единицу, естественным образом придя к кватернионам, но какой-либо геометрии в этом было немного. В этой и в следующей части мы подробно рассмотрим алгебры с несколькими «корнями из нуля», то есть генераторами, обращающимися в ноль при возведении в квадрат, и тут уже появятся чисто геометрические интерпретации и вычисления.
В серии «Изобретаем числа» мы с вами уже знакомились с числовой системой, в которой есть один исчезающий (инфинитезимальный) элемент — с дуальными числами. Они оказались способны производить автоматическое дифференцирование и вычисления с погрешностями. А что может дать алгебре пара таких элементов, да ещё в геометрическом контексте?
Рассмотрим алгебру с двумя инфинитезимальными генерирующими элементами
и
, такими, что
Естественно, их произведение, элемент второго ранга
тоже будет «корнем из нуля». Если мы выпишем таблицу умножения для базисных элементов, то увидим, что почти вся она заполнена нулями:
Общее правило тут такое: если в произведении есть совпадающие индексы, то оно равно нулю. Что же интересного может быть в такой «пустой» алгебре? Для начала, давайте вычислим общий вид произведения двух однородных элементов первого ранга:
Если воспринимать генераторы и
как пару ортогональных векторов, то их клиффордово произведение совпадёт со знакомым векторным произведением. При этом в привычном трёхмерном пространстве элемент
должен был бы соответствовать вектору, ортогональному и
, и
. Но в таком случае, произведение
и
должно дать вектор, ортогональный им обоим, однако в нашей алгебре это произведение обращается в ноль, поскольку множители имеют совпадающий индекс. Так что элемент
не вектор, а клиффордово произведение в нашей алгебре — не векторное, хоть и очень похоже на него. Но что же это такое?
Из чего состоят пространства?
В бытовом понимании ноль олицетворяет пустоту. В геометрии пустота, как вместилище точек, представляет собой интересный и нетривиальный объект — пространство. Привычное евклидово пространство содержит подпространства различной размерности. Точка образует подпространство нулевой размерности, прямая это подпространство размерности 1, плоскость это двумерное подпространство и так далее. При этом подпространства размерностью больше нуля можно строить с помощью независимых базисных векторов, выражая в форме их линейных комбинаций элементы подпространств: точки или векторы. Если интерпретировать элементы алгебры не как векторы, а как подпространства «натянутые» на эти векторы, то вот какая картина получается:
Единичный элемент
соответствует нульмерному подпространству (точке).
Каждый генератор, то есть, элемент первого ранга
, представляет некоторое одномерное подпространство (прямую), причём, независимое от других генераторов.
Базисный элемент второго ранга
следует воспринимать, как представление двумерного подпространства (плоскость), базисом которого являются
и
. Это уже не вектор, а целая плоскость.
Элементы более высокого ранга, которые тоже строятся как произведения
генераторов, представляют подпространства размерности
.
Пространство, вмещающее в себя все перечисленные выше подпространства, имеет ту же размерность, что и алгебра, и представляется базисным элементом наивысшего ранга, то есть произведением всех генераторов алгебры.
Это даёт нам точную интерпретацию для операции геометрического умножения в рассмотренной алгебре как построения пространства из пространств более низкой размерности. Такое умножение хорошо известно геометрам как операция внешнего произведения. Таким образом, пространство размерности 2 является внешним произведением двух независимых одномерных пространств. Итак, мы можем заключить, что в алгебре с инфинитезимальными генераторами («корнями из нуля») геометрическое произведение базисных элементов алгебры имеет смысл их внешнего произведения.
Внешнее произведение очень важная операция в геометрической алгебре и в теории дифференциального исчисления. Для него введено обозначение, совпадающее с логической конъюнкцией: Это совпадение не случайно и связано с тем, что такая операция играет одинаковую роль в разных категориях: конъюнкции в булевой алгебре, прогрессивного произведения в теории порядков, внешнего произведения в геометрии и теории множеств.
Основные свойства внешнего произведения (унитальность, линейность, дистрибутивность и др.) прямо вытекают из свойств произведения Клиффорда:
Здесь — вещественные числа (скаляры), а
— произвольные элементы внешней алгебры. Алгебры с операцией внешнего произведения образуют внешние алгебры, известные также как алгебры Грассмана. Они используются и за пределами геометрии, например, в теории графов (об этом и не только, можно более подробно провести в цикле статей «Внешняя алгебра, которую мы заслужили» на Хабре). Нетрудно показать, что любая алгебра Клиффорда
, в которой всё генераторы в квадрате равны нулю, будут эквивалентны алгебре Грассмана того же порядка. Позже мы увидим, что внешнее произведение, как самостоятельную операцию, можно выразить из геометрического в произвольной геометрической алгебре, так что любая алгебра Клиффорда включает в себя алгебру Грассмана в качестве подалгебры. Поэтому изучение свойств внешнего произведения и связанных с ним операций полезно в любом контексте.
Внешнее произведение выстраивает иерархию подпространств, то есть, линейно упорядоченное множество со следующим порядком: точка ≺ прямая ≺ плоскость ≺ объём ≺ ... ≺ вмещающее пространство. Обычно, во введениях в геометрические алгебры для демонстрации интерпретации базисных элементов рисуют что-то такое:

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

В такой структуре вещественная единица будет соответствовать общей точке, генераторы
,
,
, ... — независимым одномерным пространствам, то есть, прямым линиям, проходящим через точку
, а их внешние произведения различного ранга — пространствам всех возможных их линейных комбинаций соответствующих размерностей.
Единичный элемент называют скаляром. Линейные комбинации базисных элементов первого ранга называют 1-векторами. Благодаря независимости генераторов, они ведут себя вполне по-векторному при сложении:
Двумерное многообразие всех прямых вида образует плоскость, в которой эти прямые лежат. Эту плоскость выражает внешнее произведение
. Из двух независимых плоскостей, например,
и
, тоже можно образовать линейную комбинацию
, которая тоже будет некоторой плоскостью. Выходит, что плоскости во внешней алгебре тоже ведут себя как векторы, только своеобразные — двумерные. Их принято называть 2-векторами.

Таким же образом строятся 3-векторы, как линейные комбинации внешних произведений трёх генераторов, 4-векторы, как внешнее произведение четырёх 1-векторов и так далее. Все однородные элементы внешней алгебры ранга k представляют собой -векторы, которые складываются по векторным правилам, и представляют собой подпространства размерности
. Неоднородные элементы внешней геометрической алгебры, то есть, суммы элементов различного ранга, называют мультивекторами. Наконец, базисный элемент наивысшего ранга (внешнее произведение всех генераторов) называют псевдоскаляром.
Тут стоит сделать замечание по поводу нуля, который является особым элементом алгебры. Его можно счесть скаляром, но в той же степени он может быть и произвольным -вектором, ведь любой вектор, умноженный на вещественный
из базового поля превращается в нулевой элемент алгебры. Если единица
представляет тривиальное, но не «пустое» пространство, в котором есть один элемент — точка, то нулевой элемент это по-настоящему пустое множество точек, вовсе не содержащее элементов, так что называть его пространством можно только с большой натяжкой.
Длина и направление k-векторов
Использование линейных комбинаций неявно подразумевает, что на подпространствах различной размерности можно ввести меру — длину, площадь, объём и метрику, позволяющую их вычислять или измерять. У прямой линии, в отличие от отрезка, длины нет, она бесконечна, но мы можем использовать формальную длину 1-вектора, который эту прямую определяет в качестве меры длины на ней, то есть, своеобразной линейки.
Если в двумерной внешней алгебре интерпретировать единичный элемент как выделенное начало координат, а базисные элементы
и
как единичные векторы, направленные вдоль выделенных ортогональных координатных осей
и
на плоскости, то число
будет соответствовать прямой с уравнением
. То же самое число, умноженное на какой-то вещественный коэффициент
будет представлять эту же прямую, но «вытянутую» или «сжатую», то есть, имеющую другую внутреннюю единицу длины. Так же можно рассуждать и в отношении меры 2-вектора, полученного с помощью внешнего произведения двух 1-векторов и представляющему некоторую плоскость. Произведение двух прямых
и
будет плоскостью
. Мерой площади на ней будет площадь параллелограмма
образованного отрезками, задающими единицы длины на 1-векторах
и
. Так же можно задать меру пространств больших размерностей.
Описанный подход приводит нас к геометрической интерпретации главного свойства внешнего произведения, быть равным нулю для пространств, имеющих общее подпространство, потому что в этом случае становится равной нулю мера результата. Действительно, два коллинеарных вектора образуют вырожденный параллелограмм с нулевой площадью. И параллелепипед, построенный из площадки и принадлежащего ей вектора тоже будет иметь нулевую меру. А поскольку любое ненулевое пространство можно представить в виде внешнего произведения нескольких одномерных базисных пространств, то получается, что два пространства могут образовать внешнее произведение только если среди их базисных векторов нет совпадающих или коллинеарных.
Длина, площадь и объёмы — это положительные величины, однако правила внешней алгебры таковы, что все эти меры для её элементов могут принимать как положительные, так и отрицательные значения. Кроме того, некоторая ненулевая мера появляется и у подпространства размерности , то есть у точки, и у всего пространства в целом.
К интерпретации знаков как ориентированию пространства можно подойти двумя разными, но неразрывно связанными друг с другом способами, которые можно назвать «внутренним» (intrinsic) и «внешним» (extrinsic) по отношению к объекту. Их ещё можно назвать «собственным» и «индуцированным».
Легче всего эту двойственность увидеть на примере прямой. Находясь внутри одномерного пространства, мы можем двигаться в двух противоположных направлениях. Это даёт нам естественную внутреннюю ориентацию прямой (при этом, нам совершенно неважно какое из них считать положительным, а какое отрицательным). Теперь обратим своё внимание не на прямую, а на окружающее её пространство. Существуют преобразования всего пространства, которые оставляют эту прямую неизменной: сдвиги, масштабирования, отражения или повороты. Этим движениям тоже можно приписать два направления по отношению к прямой. И их тоже можно использовать для ориентации этой прямой, но уже с помощью внешнего поля.

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

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

Именно как дивергенцию проще всего интерпретировать нормы скаляра (точки) и псевдоскаляра (вмещающего пространства геометрии).
Иногда для понимания или представления может оказаться проще внутренняя ориентация, иногда — внешняя. Эти два представления обладают разными свойствами, в частности, по-разному реагируют на зеркальные отражения, но для нас главное это то, что между ними можно построить взаимно-однозначное соответствие. Можно договориться, что положительный заряд «внутри» точки — это источник поля снаружи её, а отрицательный — сток. Можно условиться использовать правило правой руки или буравчика для связи между током и вихревым полем (а можно и левой руки либо антибуравчика, если хочется), можно договориться, что «правые тройки» векторов определяют «положительные» объёмы и т.д. При всей условности и произвольности этих правил мы можем, если надо, положиться на них, когда требуется объяснить кому-то как от внешней ориентации мы переходим к внутренней и наоборот.
Главное во всём этом то, что подпространства любой размерности могут иметь одну из двух ориентаций, а как именно её задавать не так уж и важно, лишь бы принцип был единым при решении конкретной задачи. С направлением 1-вектора всё традиционно и понятно. Ориентация 2-вектора задаётся порядком элементов в произведении: . Это можно интерпретировать либо внутренним образом, как направление вращения от первого множителя ко второму, либо внешним — как направление нормали. Главное, чтобы при использовании такой алгебры не менялось отношение порядка на множестве генераторов, тогда всё результаты будут интерпретированы однозначно, а знаки алгебра расставит сама. Ориентация элементарного объёма или гиперобъёма во внешней алгебре однозначно задаётся знаком подстановки, которую образуют индексы во внешнем произведении. Такой принцип даёт согласованную систему знаков по пространствам всех размерностей от нулевой (скаляра) до максимальной (псевдоскаляра).
Таким же формальным подходом широко пользуются в теории поля, в дифференциальной геометрии и тензорном исчислении. Для меня, как для большого путаника, это существенное облегчение, потому что вспомнить какую именно руку использовать, какие пальцы куда растопыривать и какой буравчик крутить, всегда было сущим мучением! А то куда направить векторное произведение, мне было проще формально вычислить через определитель, чем вспомнить. Алгебраический подход всё эти условности снимает, расставляя знаки подпространств автоматически, и в отличие от определителя, более простым способом: через знак подстановки (символ Леви-Чивиты).
Две алгебры по цене одной
Структура конечной алгебры Грассмана имеет очевидную симметрию. В базисе алгебры порядка есть один элемент нулевого ранга и один элемент
-ного ранга, а также по
элементов первого и
-го рангов. Количество элементов ранга
и
, будет равно числу сочетаний
и так далее. Эта симметрия носит комбинаторную природу, однако имеет глубокую геометрическую интерпретацию. Единичный элемент — это единственная общая точка, пространство низшей размерности. В то же время элемент наивысшего ранга — это пространство максимальной размерности, вмещающее геометрию. Оно, как и общая точка, единственное. Каждому из
независимых одномерных подпространств — прямых, соответствуют
подпространств, ортогональных этим прямым. Например, в трёхмерном пространстве каждой прямой можно сопоставить ортогональную ей плоскость, причём единственную, если и прямая, и плоскость, содержат начало координат. В двумерной геометрии ортогональным пространством к прямой будет другая прямая, а в 4D — некоторое трёхмерное подпространство.

В общем случае, каждому подпространству размерности
с некоторым внутренним базисом можно поставить в соответствие подпространство
размерности
, с базисом, независимым от базиса
. Такие ортогональные пространства, построенные с помощью всех возможных независимых компонент, называются дополнением друг друга. На иллюстрации показано подпространство
и дополнительные ему подпространства
во внешних алгебрах второго и третьего порядков. В обеих алгебрах внешнее произведение дополняющих друг друга элементов равно псевдоскаляру, представляющему вмещающее пространство:
. Элементы, дополнительные 1-векторам имеют размерность
и называются 1-антивекторами. Соответственно, дополнительным к k-вектору будет единственный
-антивектор, представляющий пространство размерности
, ортогональное пространству, образованному k-вектором.
В геометрической алгебре для элементов, представляющих подпространства и дополнения к ним, действует принцип двойственности, состоящий в том, что все утверждения и отношения выполняющиеся для элементов и операций алгебры, остаются верными после одновременной замены элементов на их дополнения и соответствующих операций на двойственные им. Обо всех этих операциях мы будем говорить отдельно, а пока стоит подчеркнуть, что для любой геометрической алгебры, построенной на базе алгебры Клиффорда существует двойственная геометрическая алгебра такой же размерности, отличающаяся геометрической интерпретацией элементов и операций алгебры Клиффорда. Я буду обозначать двойственные геометрические алгебры звёздочкой:
, но ещё раз подчеркну, что двойственность — это вопрос геометрической интерпретации, а не свойство алгебры.
Операции дополнения и регрессивное произведение
Наличие у подпространств ориентации заставляет нас задуматься о знаках элементов, представляющих дополнения. Звездочка, как геометрический оператор дополнения, относится только размерности подпространств и их базису, но ничего не говорит об их ориентации. А поскольку внешнее произведение антикоммутативно, имеет смысл различать два разных оператора дополнения: левое и правое
. Для базисных элементов эти дополнения определяются такими равенствами:
Во внешней алгебры правое и левое дополнения для базиса вычисляются таким образом:
В то же время, во внешней алгебре и в других алгебрах нечётного порядка эти два дополнения совпадают:
Операции дополнения линейны, это значит, что . Унарные операции дополнения являются обратными друг другу:
, но, в отличие от геометрического дополнения, они не отменяют сами себя. То есть, если для подпространств всегда верно, что
, то для произвольных элементов внешней алгебры, как правило,
. А как дополнения действуют на произведение?
Симметрия между пространствами и дополнениями к ним приводит к тому, что любую операцию во внешней алгебре можно «вывернуть на изнанку», заменив пространства их дополнениями. При этом внешнее произведение, которое, как мы видели, объединяет подпространства, действуя на дополнения, будет давать результат, дополнительный их пересечению. Так мы получаем операцию, двойственную внешнему произведению, которая называется регрессивным произведением и ожидаемо обозначается символом “”. Эти две операции связаны соотношениями Де Моргана:
Так же как и внешнее, регрессивное произведение линейно, антикоммутативно, имеет нейтральный элемент и дополняет подпространства до скаляра:
Внешнее произведение повышает ранг элемента в алгебре, регрессивное произведение должно повышать ранг антивектора, что геометрически соответствует понижению размерности пространства. Чтобы чётче увидеть его геометрический смысл, обратимся к иллюстрации.

Внешнее произведение двух прямых, представленных и
это плоскость
(она показана голубым). Дополнения к прямым
и
— это плоскости
и
им ортогональные. Прямую, ортогональную плоскости
можно выразить либо как дополнение
, либо как регрессивное произведение
, то есть, пересечение этих плоскостей. Таким образом, мы приходим к выводу, что регрессивное произведение, двойственное внешнему произведению, отыскивает общие подпространства для своих множителей, или их пересечение.
Небольшой пример
Я хочу проиллюстрировать этот раздел несложным примером геометрических вычислений и построений в проективной геометрической алгебре (о ней мы подробнее поговорим в следующей части). В проективной алгебре внешнее произведение двух точек представляет прямую, которая проходит через них, а двойственное внешнему регрессивное произведение двух прямых возвращает в качестве результата точку, в которой они пересекаются.
Этот пример демонстрирует упомянутую выше двойственность, присущую геометрическим алгебрам на примере хорошо известных теорем Менелая и Чевы.
Теорема Менелая гласит:
Три точки
,
и
лежащие на разных сторонах треугольника
лежат на одной прямой тогда и только тогда, когда выполняется следующее отношение для длин отрезков:
Вот соответствующие этой теореме программа и чертёж.
menelaus = do
a <- point [-5, 1] @ [id_ "A"]
b <- point [7, 7] @ [id_ "B"]
c <- point [2, -7] @ [id_ "C"]
d <- line [1,-2] [0,-2] @ [id_ "d"]
ab <- a ∨ b @ [id_ "c"]
ac <- a ∨ c @ [id_ "b"]
bc <- b ∨ c @ [id_ "a"]
a' <- bc ∧ d @ [id_ "A'"]
b' <- ac ∧ d @ [id_ "B'"]
c' <- ab ∧ d @ [id_ "C'"]
return $ norm (a ∨ b')/norm (b' ∨ c) *
norm (c ∨ a')/norm (a' ∨ b) *
norm (b ∨ c')/norm (c' ∨ a)

Проверим прямое утверждение теоремы:
λ> getResult menelaus
1
Одновременная замена двойственных категорий: прямая ⟷ точка, и пересекаться ⟷ соединять приводит к теореме Чевы, двойственной теореме Менелая:
Три прямые
![]()
и
соединяющие вершины треугольника
с точками
,
и
на противолежащих сторонах, проходят через одну точку тогда, когда выполняется следующее отношение для длин отрезков:
Получить чертёж для двойственной теоремы можно применив ко всему элементам чертежа теоремы Менелая оператор (правого) дополнения dual
:
ceva = mapSpace dual menelaus
main = do
writeSVG "menelaus.svg" menelaus
writeSVG "ceva.svg" ceva

λ> getResult ceva
1
Вычисление нормы во внешней алгебре
Для вычисления нормы вектора в стандартной векторной алгебре используется скалярное произведение вектора с самим собой. Как мы говорили в первой части, умножение в алгебре Клиффорда определяется билинейной формой , которая и имеет смысл скалярного произведения. Однако внешняя алгебра строится таким образом, что геометрическое произведение
-вектора на самого себя всегда равно нулю, то есть билинейная форма
тривиальна. В то же время, мы позволяем себе рассуждать о мерах
-векторов и метрике представляемых ими пространств, без которых понятие линейной комбинации становится не вполне ясным. Что же, мера и норма во внешней алгебре — это чистая формальность? Не совсем.
Как мы видели выше, при регрессивном перемножении -вектора и его дополнения получается скаляр, то есть, обыкновенное число, которое можно использовать как норму
-вектора. Давайте рассмотрим примеры её вычисления для
-векторов различного ранга во внешней алгебре
, используя таблицу умножения для регрессивного произведения в этой алгебре:
0-вектор:
1-вектор:
2-вектор (1-антивектор):
3-вектор (псевдоскаляр):
Во всех этих случаях аккуратные вычисления приводят к ожидаемым выражениям для квадрата нормы вектора. Норма 2-вектора вычисляется, как норма вектора, ортогонального плоскости, задаваемой 2-вектором. Можно показать, что для внешней алгебры любой размерности скаляр, который получается при вычислении регрессивного произведения -вектора со своим дополнением, будет положительным числом, обобщающим норму
-вектора, причём он будет соответствовать евклидовой метрике. Евклидовость это существенное свойство построенной нами внешней алгебры, вытекающее из её линейности. Когда мы оснастим внешние алгебры нетривиальным скалярным произведением, то нам станут доступными и неевклидовы метрики, но пока мы будем ограничимся евклидовыми геометрическими алгебрами.
В следующей статье мы не выходя за пределы внешней алгебры построим проективную геометрическую алгебру, в которой уже будет не одна единственная точка, а вполне полноценное, пригодное для черчения пространство.
Напоследок ещё одна картинка продемонстрирует двойственные элементы (точки и прямые в проективной алгебре) в виде симпатичной виньетки.

Конечно же, эту картинку стоит оживить!

Для особо любопытных приведу код, рисующий картинку
duals :: Animation ()
duals = animate 40 (0,2*pi) frame
where
frame x = chart `bg` "black" $ do
-- множество точек в форме виньетки,
-- заданной в полярных координатах
let n = 2000
pts = [ point [rx*sin (2*a),ry*cos (2*a)]
| a <- [0,2*pi/n..2*pi]
, let rx = 1+0.75*sin(7*a+x)
, let ry = 1+0.75*sin(7*a+2*x) ]
-- многоугольник, соединяющий точки
polyline pts <@ [ stroke_ "orange"
, opacity_ "1"
, stroke_width_ "2"]
-- двойственные точкам прямые
sequence_ [ dual p @ [opacity_ "0.1", stroke_ (col i)]
| (p,i) <- zip pts [0,2*pi/n..] ]
where
col i = pack $ printf "rgb(%.2f%%,50%%,%.2f%%)"
(100*cos i**2) (100*sin i**2)
main = runAnimation "duals.gif" duals