Помните, что такое скалярное произведение векторов? Так вот, в удивительном мире геометрической алгебры, скалярных произведений целых четыре! Давайте раберёмся, зачем нам такое богатство, а в конце, как обычно, построим красивые картинки. На сей раз, полюбуемся на четырёхмерную сферу.
Продолжим наш неспешный разговор о геометических алгебрах, в которых вычисления производятся не с координатами точек или прямых, а с самими точками, прямыми, плоскостями и другими геометрическими объектами.
В прошлый раз мы рассмотрели афинную геометрическую алгебру Cl(2,0,0). В ней оказалось возможным заниматься полноценной векторной алгеброй на плоскости: находить линейные преобразования, превращающие один вектор в другой, масштабировать, отражать и поворачивать, векторы, а также находить проекцию одного вектора на другой с помощью скалярного произведения. Сегодня я предлагаю внимательнее приглядеться к этому самому скалярному произведению и понять, как его можно обобщить на мультивекторы (k-векторы и их неоднородные линейные комбинации).
Мы увидели что геометрическое произведение двух векторов раскладывается на сумму их скалярного и внешнего произведений:
Во многих введениях в геометрическую алгебру это отношение ошибочно ставится во главу угла, как определяющее. Однако оно носит частный характер, относится не ко всем алгебрам Клиффорда и принимает иной вид для перемножения бивекторов, или вектора и бивектора и так далее. Определять скалярное или внешнее произведение исходя из геометрического, также, как и наоборот, не стоит. Это операции различной природы, которые зависят от разных свойств генераторов и представляемых ими подпространств.
В самом общем случае, при перемножении однородных k-вектора и m-вектора в геометрической алгебре размерности n, должен получиться неоднородный мультивектор, содержащий базисные элементы разных рангов. Однако ранг элемента в таком произведении не может оказаться меньше |k − m| и больше k + m.
Давайте разберёмся откуда берутся эти ограничения. Раскрыв все скобки, мы, в конце концов, станем перемножать базисные элементы ранга k и m:
где αᵢ и βᵢ какие-то индексы. При этом может случиться так, что ни один из индексов в произведении не совпадёт и результатом станет базисный элемент максимально возможного ранга k + m. Однако для алгебры с максимальной размерностью n, такое несовпадение возможно, только если k + m > n. В противном случае как минимум k + m − n индексов должны будут совпасть. Это приводит к уточнённой верхней границе ранга произведения 2n − (k + m).
Элемент максимального ранга k + m совпадает с внешним произведением мультивекторов. И оно может оказать равным нулю, если k + m окажется больше максимально возможного ранга в алгебре.
Если же для какого-то i генераторы совпадут, то есть, αᵢ = βᵢ, то они согласно правилам геометрического умножения превратятся либо в 0, либо в ±1, и не войдут в произведение. В первом случае исчезнет весь моном целиком, а во втором — его ранг понизится на 2 по отношению к максимально возможному. В предельном случае все индексы одного элемента будут содержаться в другом, и все они в произведение не войдут, тогда ранг результата и будет равен |k − m|.
Это значит, например, что при перемножении 1-вектора и 2-вектора мы получим в качестве результата сумму 1-вектора, 2-вектора и 3-вектора, а произведение двух 2-векторов может, в принципе, содержать скаляр, 1-, 2-, 3- и 4-вектор, но если в алгебре всего 3 неисчезающих генератора, то максимально возможный ранг произведения будет равен 2×3 − 4 = 2. Например, в таком случае: e₁₂ e₂₃ = ±e₁₃.
Элементы минимального ранга в произведении двух однородных мультивекторов называют их внутренним произведением, и оно, как мы видим, не обязано быть скаляром. Только при перемножении однородных мультивекторов одинакового ранга, внутреннее произведение будет иметь ранг 0.
Строго говоря, скалярным произведением в геометрической алгебре называют не внутреннее произведение двух элементов алгебры, а скалярную часть их геометрического произведения, то есть, скалярный множитель при 1, который ещё называют следом мультивектора. Легко увидеть, что скалярное произведение отлично от нуля только для мультивекторов одинакового ранга.
Для вычисления внутреннего произведения не обязательно вычислять геометрическое произведение и выделять в нём элементы минимального ранга. Оно "наследует" от геометрического произведения линейность, а значит, и дистрибутивность относительно сложения. Это позволяет получить способ вычисления внутреннего умножения, определив лишь правила для генераторов алгебры. Они будут такими:
Где B — это билинейная квадратичная форма, о которой мы говорили в самом начале нашего рассказа, и которая, собственно, и определяет алгебру Клиффорда. Она для генераторов различной природы равна 0 или ±1. Сравните эти правила с теми, что использовались для вычисления внешнего произведения генераторов:
Внутреннее произведение обладает всеми свойствами произведения: ассоциативно, унитально и линейно. Скалярное произведение, к тому же, коммутативно для любых мультивекторов.
Тут стоит заметить, что в литературе, посвящённой геометрической алгебре, принято различать два внутренних произведения: левое и правое сокращения. Правое отлично от нуля только если ранг первого множителя не превышает ранга второго. Таким образом, оно сокращает правый множитель, а левое — наоборот, сокращает левый множитель в произведении. То внутреннее произведение, которое описалы мы, объединяет оба эти сокращения и его вполне достаточно для вводного материала, несложной практики и рисования картинок. Однако эти два несимметричных варианта внутреннего произведения оказываются гораздо удобнее для вывода формул и доказательства теорем в геометрической алгебре.
В поисках нормы
В векторной алгебре со скалярным произведением связано много важных концепций. В частности, евклидова норма, то есть длина вектора, вычисляется, как квадратный корень из скалярного произведения вектора с самим собой. Это определение можно обобщить и на k-векторы.
Давайте вычислим для примера квадраты произвольных 1-, 2-, и 3- векторов в алгебре Cl(4,0,0).
Видно, что коэффициенты при 1, то есть, скалярные произведения для этих мультивекторов, очень похожи на ожидаемые значения. Одна беда, в случае бивектора и тривектора они принимают отрицательное значение для любых вещественных коэффициентов, что для нормы весьма нежелательно. Нельзя ли что-то с этим сделать?
Напомню, что отрицательные знаки возникли из-за того, что квадрат бивектора и тривектора вычисляется таким образом:
Как видим, к смене знака приводит перестановка элементов. Это подводит нас к новой операции реверса или обращению порядка, которая является инволюцией (отменяет саму себя при повторном применении) и обычно обозначается тильдой:
По существу реверс сводится к умножению элемента на +1 или −1 в зависимости от его ранга. Смысл введения новой операции состоит в том, что произведение любого базисного элемента на самого себя, но с обращённым порядком будет всегда положительным.
В однородном k-векторе обращение порядка действует на все базисные элементы одного ранга так что это равносильно масштабированию вектора. А как мы помним, масштабирование k-вектора не меняет его геометрического смысла, так что обращение порядка влияет только на его ориентацию. С помощью этой операции мы можем универсально определить норму k-вектора таким образом:
чтобы под корнем было гарантировано неотрицательное число. Для разных k-векторов и в различных контекстах смысл нормы будет различным: для тех мультивекторов, что представляют прямые — это мера длины на ней, либо циркуляции поля вокруг прямой, для площадей — мера площади, или потока поля сквозь единичную площадку, для точки — нечто сродни её заряду и так далее.
Норма, как мы помним, нужна и для определения обратного элемента, который чаще всего присутствует в операции сопряжения. На практике сопряжение элемента x с единичным k-вектором y обычно вычисляется таким образом: yxỹ. Такой вид позволяет получить правильную ориентацию пространств при отражениях и поворотах.
Обращение порядка действует точно также как комплексное сопряжение, меняя знак того элемента, который при возведении в квадрат равен −1. И тут уместно вспомнить то, как вычисляется модуль комплексного числа: |z|² = zz* или как вычисляется поворот вектора v, вокруг оси заданной вектором (a, b, c), выраженный в алгебре кватернионов: hvh*, где h = sinθ + cosθ (ai + bj + ck), а сопряжение меняет знак мнимых единиц. Эти совпадения не случайны, ведь, как мы выяснили, геометрические алгебры полноценно включают в себя и обобщают алгебры комплексных чисел и кватернионов со всеми их свойствами.
Операция обращения порядка позволяет корректно менять местами множители в произведениях, что бывает необходимо для упрощения алгебраических выражений:
Учимся красиво проецировать
А какой геометрический смысл несёт в себе внутреннее произведение? В привычной векторной алгебре скалярное произведение позволяло вычислить проекцию одного вектора на другой. В геометрической алгебре внешнее произведение определено шире, не только для векторов, и может быть не только скаляром, но и представлять целое подпространство. Однако это подпространство всегда будет представлено мультивектором, ранг которого строго меньше ранга множителей.
Рассмотрим внешнее произведение двух базисных элементов алгебры (мономов), с наборами индексов α и β:
Выглядит страшновато, но если прочесть условия вслух то становится понятно, что произведение будет отлично от нуля только если индексы одного множителя целиком входят в множество индексов другого множителя. При этом в результат будут входить только те индексы, которые остаются после удаления меньшего набора индексов из большего. Например,
А теперь взглянем на это с точки зрения подпространств, которые представляют такие элементы. Сначала рассмотрим геометрическую алгебру, в которой ранг элемента соответствует размерности соответствующего подпространства. Тогда получается, что внутреннее произведение отлично от нуля если одно из перемножаемых пространств целиком содержится в другом, при этом совпадающие компоненты подпространств исчезают, а остаётся дополнение меньшего подпространства до большего. Таким образом, результатом будет подпространство, ортогональное множителю меньшей размерности, и принадлежащее множителю большей размерности.
Вот, например, как выглядит внутреннее произведение плоскости p и прямой a, лежащей в ней:
Если прямая не лежит на плоскости, то это значит, что она обладает компонентой, которую плоскость не содержит, и следовательно, их внутреннее произведение будет равно нулю.
При переходе в двойственную алгебру, в которой элемент меньшего ранга соответствует подпространству большей размерности, результат становится полезнее, поскольку он не будет принадлежать ни первому, ни второму множителю.
Тут необходимо несколько напрячь воображение. Рассмотрим в трёхмерной афинной геометрической алгебре внутреннее произведение 1-вектора (плоскости) p и 2-вектора (прямой) a, не лежащей в плоскости p. Результатом должен быть 1-вектор, то есть, некоторая плоскость. Она должна принадлежать дополнению прямой a и при этом не содержать ни одной компоненты плоскости p. Таким образом, мы приходим к выводу, что результатом будет плоскость, проходящая через прямую a и ортогональная плоскости p.
Рассуждая подобным образом, мы можем получить такие толкования внутренним произведениям объектов различающейся размерности в алгебрах:
Эти способы находить ортогональные подпространства очень устойчивы и не требуют отдельного рассмотрения особых случаев, например, если перемножаемые объекты лежат один в другом.
"Какое же это всё имеет отношение к проекциям?" — спросите вы. Непосредственное. Пересекая ортогональные подпространства, которые получаются при внутреннем произведении с множителями, мы можем получить искомые проекции и даже нечто большее — антипроекции!
Обратите внимание на то, что все формулы для объектов разных размерностей абсолютно одинаковы! Внутреннее произведение таким образом, создаёт своего рода пространство переноса множителя, ортогональное другому множителю. На практике вместо умножения используют деление для того, чтобы норма проекции была такой же, как при использовании стандартных векторных операций.
* * *
В качестве красивой иллюстрации для сегодняшней статьи я предлагаю полюбоваться проекциями вращающейся четырёхмерной сферы на некоторые грани четырёхмерного октаэдра, которые, как известно представляют собой трёхмерные пространства.
Для этого я задал параметризацию четырёхмерной сферы, и "намотал" на неё проволочный каркас. Дале всё стандартно для геометрической алгебры: с помощью оператора проекции я, вращая сферу, отображал на экране двумерную проекцию трёхмерной проекции четырёхмерной сферы на указанную грань. Всего-то!