По просьбам читателей канала, я начинаю небольшой цикл статей, посвящëнный геометрическим числам и алгебрам Клиффорда. Его можно считать естественным продолжением цикла "Изобретаем числа", в котором мы знакомились с разнообразной экзотикой: двойными, дуальными и гиперболическими числами. Теперь мы их смешаем, не взбалтывая так, чтобы числами можно было моделировать целые подпространства и их преобразования.
* * *
Геометрия — это ворота в науку, однако они столь низки и узки, что войти в них можно лишь будучи ребëнком.
Вильям К. Клиффорд
В математике, как и в любой другой сфере, тоже есть мода. Сухость, строгость, неотъемлемый традиционализм не мешают математикам искренне увлекаться новыми красивыми идеями, тенденциями, и, конечно же, следовать принципу "новое это хорошо забытое старое".
В наше десятилетие в среде физиков, специалистов по компьютерной графике, машинному зрению и распознаванию образов, а также у популяризаторов математики мы наблюдаем резкое повышение интереса к внешним и геометрическим алгебрам, известным также, как алгебры Клиффорда.
Использование алгебраических методов в геометрии восходит к началу XVII века, к работам Рене Декарта и Жирара Дезарга, подарившим нам координатный метод и основы проективной геометрии. В середине позапрошлого века работах Германа Грассмана появилось новое понятие внешняя алгебра, после этого Вильям Клиффорд определил геометрические числа и геометрические алгебры. В начале XX века Поль Дирак успешно применили их в разработке релятивистской теории электрона, они оказались полезны и в дифференциальной геометрии и в матфизике и в теории поля, однако до 1980-х годов этот раздел оставался лишь в числе специальных и факультативных в курсах физфака, мехмата. А уж прикладники-компьютерщики — законодатели мод в современной математике, о ней либо не знали вовсе, либо считали слишком абстрактной до начала нашего столетия.
И только, в 2001 году после работы Джона Селига, в которой на лаконичный язык геометрической алгебры была переведена евклидовая геометрия, на неё обратили внимание компьютерщики. В 2008 году вышла работа Микеля Родригеса, посвящённая применению геометрической алгебры для системы распознавания образов. Популяризации геометрических алгебр способствовал блестящий цикл статей Чарльза Гунна, показавший чисто практические аспекты их использования. А потом появились многочисленные блоги, ролики на YouTube и обучающие курсы. И вот мы уже слышим заявления о том, что надо включить геометрические алгебры в базовые курсы математики для всех студентов, а также что пора выбросить на помойку кватернионы, спиноры, координаты Плюккера, матрицы Паули и Дирака, а также векторное произведение, поскольку всё это вместе с комплексными числами и группами Ли появляется "само собой" даже в простейших геометрических алгебрах.
Подобная история случилась лет двадцать назад с теорией категорий с её функторами, монадами и леммой Йонэды, которая благодаря компьютерщикам (а именно, после одной статьи Филиппа Уодлера) из "абстрактной ерунды" превратилась в инструмент повседневной разработки программ в функциональной парадигме и основой теории типов в программировании.
Мода модой, но геометрическая алгебра мне кажется достаточно полезным инструментом, с которым имеет смысл познакомиться всякому, интересующемуся математикой, как прикладной, так и теоретической. В ней есть много красивых положений и стройных обобщений, которые, действительно позволяют существенно упростить описание движения твёрдого тела, проективных построений, релятивистских процессов, физических полей, уравнений матфизики и квантовой механики, конформных отображений и много чего ещё.
Мы увидим, как единый лаконичный и последовательный подход к выражению линейных подпространств с помощью мультивекторов позволяет получать эффектные общие выражения для их преобразований, независимые не только от системы координат или даже от размерности пространства, но и от выбранной геометрии (аффинной, проективной, гиперболической, эллиптической, геометрии пространства-времени Минковского и др.)
Конечно же, Дзен, не учебник, так что не ждите, пожалуйста, развёрнутого курса лекций. Вместо этого, я постараюсь поделиться тем, что меня самого очаровывает при работе с геометрической алгеброй.
Что же нам позволяет делать геометрическая алгебра?
В ней точки, прямые, плоскости и прочие линейные подпространства представляются объектами одного класса — мультивекторами, которые рассматриваются, как своеобразные числа, образующие алгебру с операциями сложения и обратимого геометрического умножения. Геометрические числа могут быть решениями алгебраических уравнений и аргументами различных функций (корней, экспонент, логарифмов и т. п.), представляя при этом геометрические объекты. Любые мультивекторы можно комбинировать между собой богатым набором комбинаторов: различными типами умножения: внешним, внутренним, скалярным, двумя сечениями, тремя видами инволюции, а также операциями, двойственными всём перечисленным выше. Эти комбинаторы не только корректно определены для любой геометрической алгебры, но и имеют геометрическое толкование, не зависящее от размерности геометрического пространства и конкретных координатных систем. Принцип двойственности, присущий проективной геометрии в полной мере проявляется и в геометрических алгебрах, играя и в них существенную роль.
Возможно, вы обратили внимание на то, что я говорю о геометрических алгебрах во множественном числе. Начиная со знаменитой эрлангенской программы Феликса Клейна, различные геометрии сами становятся объектом исследования и определяются топологией пространства и группой его преобразований, сохраняющих некий инвариант. Так вот, все базовые преобразования, которые по Клейну, и определяют геометрию: отражения, сдвиги, повороты, проекции, пересечения, прямые суммы, дополнения, инверсии и т. п. также выражаются через элементы и операции геометрической алгебры, то есть, через геометрические числа и их комбинаторы. Получается, что и объекты и их преобразования геометрическая алгебра представляет в совершенно единообразной форме!
Геометрических алгебр, действительно, много: одни отражают геометрию в векторном пространстве Rⁿ, другие — в более богатом пространстве Eⁿ, допускающем сдвиги. Есть вариант, добавляющий идеальные точки и прямые в проективном смысле. Существует геометрическая алгебра, включающая в качестве базовых объектов не только точки, прямые и плоскости, но и окружности, сферы и диполи, расширяя евклидовы изометрии конформными отображениями. Можно построить геометрическую алгебру для пространства Минковского, в котором объектами являются события и мировые линии, или для сферической геометрии. Самое замечательное то, что ключевые определения, операции и формулы во всех этих алгебрах остаются совершенно одинаковыми! Меняются базисные элементы алгебры и геометрические интерпретации геометрических чисел, как объектов и преобразований, но алгебраические законы остаются при этом универсальными.
Это то, что в программировании называется полиморфизмом: когда одна функция или процедура может корректно работать с различными типами данных. В математике так работают абстрактные алгебраические структуры: моноиды, группы, кольца, поля, модули, которые предоставляют единый интерфейс для работы с объектами самой разной природы: подстановками, вещественными или комплексными числами, вычетами или многочленами, линейными операторами и пространствами. Геометрические алгебры Клиффорда лаконично обобщают в себе целые геометрии!
Приведу простенький пример того, как производятся вычисления в двумерной проективной геометрической алгебре.
Пусть нам дан треугольник, с вершинами A, B и C однозначно определëнными в какой-то привычной двумерной декартовой системе координат. Давайте найдём для этого треугольника, прямую Эйлера, то есть, прямую, проходящую через его ортоцентр (точку пересечения его высот), циркумцентр (точку пересечения срединных перпендикуляров) и центроид (точку пересечения медиан)
1. Находим перпендикуляры, опущенные из точек A и B на противолежащие стороны:
a = (B ∨ C) · A, b = (A ∨ B) · B
2. Ортоцентром будет точка пересечения этих прямых:
O = a ∧ b.
3. Находим срединныe перпендикуляры к сторонам BC и AC:
a' = (B ∨ C) · (B + C)/2, b' = (A ∨ C) · (A + C)/2
4. Циркументр — это точка пересечения срединных перпендикуляров:
O' = a' ∧ b'
5. Находим прямую Эйлера, как прямую, проходящую через ортоцентр и центр описанной окружности:
е = O ∨ O'.
6. Для проверки, построим центроид треугольника, который должен попасть на прямую Эйлера:
O'' = (A + B + C)/3.
Результатом этих вычислений будет уравнение прямой в канонической форме: ax + by + c = 0, где коэффициенты a, b и c окажутся, в конечном счёте, выражены через координаты исходных точек. Однако всё указанные выше операции, определяются не через комбинации координат, а через обобщённые операции над мультивекторами (+, ∧, ∨, ·) и основаны на принципах, обескураживающих своей простотой. Вот как все эти объекты выглядят на чертеже:
А вот как эту же задачу можно решить для трёх точек A, B и С, расположенных в трёхмерном пространстве:
1. Находим плоскости, проходящие через вершины A и B, ортогональные противолежащим сторонам :
a = (B ∨ C) · A, b = (A ∨ C) · B,
2. Ортоцентром будет точка пересечения этих трëх плоскостей и плоскости треугольника (A ∨ B ∨ C):
O = a ∧ b ∧ (A ∨ B ∨ C).
3. Находим плоскости, проходящие через середины сторон треугольника и ортогональные им:
a' = (B ∨ C) · (B + C)/2, b' = (A ∨ C) · (A + C)/2
4. Циркумцентром будет точка пересечения этих трëх плоскостей и плоскости треугольника:
O' = a' ∧ b'∧ (A ∨ B ∨ C)
5. Прямая Эйлера соединяет эти две точки:
е = O ∨ O'.
6. И снова для проверки, построим центроид треугольника, который должен попасть на прямую Эйлера:
O'' = (A + B + C)/3.
Пространство и объекты изменились, однако принципы вычислений и формулы остались прежними! Вот как это построение выглядит на чертеже:
Примечательно, что даже если вершины треугольника A, B и C окажутся на одной прямой, метод вычисления прямой Эйлера не "сломается". Ортоцентр превратится в идеальную точку "на бесконечности", центр описанной окружности окажется на середине самой длинной стороны, а прямая Эйлера совпадёт с прямой, на которой расположились вершины вырожденного треугольника.
Для первого примера, пожалуй, достаточно, однако же, мы ещё не использовали отражений, поворотов, и сдвигов, измерений углов и расстояний, которые выражаются в геометрической алгебре не менее лаконично и универсально и без привлечения дополнительных инструментов, выходящих за рамки мультивекторов.
Замечу, что при построения всех чертежей для этой серии статей, я буду пользоваться собственной библиотекой для работы с геометрическими алгебрами для языка Haskell. Вот как выглядит программа, строящая рисунок, приведённый выше:
Как видите, программа просто повторяет мои выкладки, что весьма удобно. Эту библиотеку я написал для того, чтобы получше войти в материал. Она не сильно оптимизирована, в отличие от промышленных библиотек для компьютерной графики, зато достаточно лаконична и занимает всего 400 строк кода и главное, универсальна — позволяет работать в произвольной геометрической алгебре произвольной размерности.
* * *
В последующих статьях мы рассмотрим и основы построения геометрических алгебр, и примеры их применения.