- Как работает бесплатформенная система ориентации? - Внутре у ней кватернионка...
Давно хотел написать, два года как минимум, а тут "припёрло" - на работе засел за очередную систему ориентации, с меня алгоритм, программный код для БЦВМ будут писать мои коллеги, и очень хочется написать "методичку", не слишком толстую, но чтобы можно было понять, что же там происходит, чтобы это не было на уровне "магии".
У меня тут будет два момента, которые вы вряд ли встретите где-то ещё. Первый - относительно простое доказательство без заскока в общую алгебру (в нём не будет ничего сложнее собственных чисел матрицы), что система гиперкомплексных чисел с двумя мнимыми единицами не может содержать деления и для описания поворотов непригодна. Здесь я сужу по себе - когда на 2-м курсе мы это дело проходили и упомянули между делом, что "математики доказали - только у действ. чисел, комплексных и у кватернионов может быть деление" - мне было очень интересно узнать, как они это сделали, но при взгляде на доказательство теоремы Фробениуса энтузиазм куда-то рассеивался.
Второй - довольно-таки наглядное объяснение (но может, не вполне строгое), почему кватернион поворота на угол φ вокруг оси n имеет вид Λ = cos(φ/2) + nsin(φ/2)
там же я предлагаю всё-таки использовать запись Exp(φn) = cos(φ) + nsin(φ), которую математики упорно отвергают. У них есть на то свои основания, но по-моему, эта запись позволяет "прочувствовать", что там творится.
Ожидается 3 части, начнём!
История вопроса
Считается, что кватернионы придумал Уильям Роуэн Гамильтон в 1843 году, хотя Олинд Родриг пришел к тем же формулам для описания поворотов в 1840 году (см. Параметры Родрига-Гамильтона, они же параметры Родрига-Эйлера), и конечно же, их можно встретить в неопубликованных трудах Гаусса, где-то неподалёку от алгоритма быстрого преобразования Фурье, которое Гаусс вывел ещё до самой работы Фурье о гармонических рядах! Но не будем искать справедливости (дело безнадёжное), а опишем каноническую историю, как пришел к кватернионам Гамильтон...
Гамильтон черпал вдохновение из комплексных чисел - насколько замечательно они описывают поворот на плоскости! Можно сказать, именно за это их свойство комплексным числам нашлось столько применений в науке и технике. Описания колебательных процессов предельно упростились, когда амплитуду и фазу колебаний можно было изобразить одним комплексным числом и оперировать ими в обычных формулах.
А вот описание поворотов в пространстве оставляло желать лучшего… Как ни вводи углы (Эйлера, Крылова), а выкладки остаются неподъёмными - жуткое нагромождение синусов и косинусов повсюду, буквально ни одной линейной операции, и ко всему прочему - обязательно присутствуют особые точки, где математика вообще перестаёт нормально работать, выдавая бесконечности там, где «ничто не предвещало» - "шарнирные замки", "складывание рамок", "gimbal lock" - это всё названия одного и того же явления.
И Гамильтон десять лет пытался построить систему, похожую на систему комплексных чисел, но с двумя мнимыми единицами. Тогда, как ему казалось, вместо комплексной плоскости у нас будет комплексное пространство, и каждое число в этом пространстве будет описывать определенный поворот. И точно так же, как с комплексными числами, композиция поворотов будет аналогична произведению соответствующих чисел.
Но как он ни пытался, ничего путного не получалось. В ретроспективе мы можем довольно легко показать, что это невозможно. Мы знаем из опыта, что для любого поворота в пространстве найдётся обратный поворот, который приведет систему в исходное состояние. И если поворот в одну сторону должен соответствовать умножению на некоторое (гиперкомплексное) число, то поворот в обратную сторону - делению.
Однако в алгебре чисел с двумя мнимыми единицами, независимо от заложенного базиса (как они умножаются друг на друга), не может существовать операции деления такой, чтобы для любых чисел A и B≠0 существовало единственное число C, такое что BC = A. Покажем это. Запишем наше гиперкомплексное число в виде вектора:
Умножение его на некоторое число b будет равносильно умножению на матрицу, просто исходя из линейности операции умножения: ba = Ma Матрица M будет выражаться через компоненты b: M = b1M1 + b2M2 + b3M3 Где M1, M2, M3 - “базисные” матрицы. Вообще говоря, эти три матрицы вместе образуют тензор, и можно всё это записать компактно (ba)k = Mijkbiaj, но это может осложнить понимание. (Скажем прямо: автор до сих пор побаивается тензоров.)
Матрицы M1, M2, M3, разумеется, должны быть линейно независимыми (в противном случае из трёх компонентов числа будут фактически использоваться лишь одно или два). Второе требование к этим матрицам - комбинируя их, мы должны иметь возможность получить тождественное преобразование, ведь это частный случай поворотов - поворот на нулевой угол:
Но вернёмся к умножению на произвольное число b, что описывается матрицей M. Запишем характеристическое уравнение для неё:
Понятно, что f(λ) представляет собой кубическую параболу, f(λ)=-λ3 + bλ2 + cλ + d Она будет стремиться к ∓∞ при стремлении λ к ±∞, а значит (раз её ветви устремлены одна вверх, другая вниз) будет хотя бы одно действительное собственное значение λ1, которое обратит f(λ1) в ноль. Как мы помним из линейной алгебры, найдётся собственный вектор c, такой, что Mc = λ1c. И наконец, из нашего требования, что одному из чисел e будет соответствовать тождественное преобразование, мы можем породить новое число g = b - λ1e, которому будет соответствовать матрица Mg = M - λ1E, так что Mgc = 0. Мы обнаружили, что взяв любую наперед заданную алгебру гиперкомплексных чисел с двумя мнимыми единицами, мы всегда найдём в ней пары ненулевых чисел, которые при перемножении дадут 0, а следовательно, мы не можем ввести операцию деления, выполняющуюся для всех чисел.
Фробениус доказал более общую теорему, согласно которой существует всего 3 алгебры, где соблюдается ассоциативность умножения и в то же время введена операция деления. Это действительные числа ℝ, комплексные числа ℂ и кватернионы ℍ (от Hamilton). Других ввести попросту невозможно. Впрочем, если отказаться от ассоциативности, то будут ещё октонионы (они же октавы), для которых тоже введено деление.
Однажды Гамильтон гулял вдоль канала у себя в Дублине, когда его осенило. «Эврика!» - возможно, воскликнул он, после чего совершил акт вандализма и нацарапал на перилах моста надпись:
i2 = j2 = k2 = ijk = -1
Эта надпись и определяет, что такое кватернион. Как оказалось, двух мнимых единиц слишком мало для счастья, их нужно три, i,j,k, и вот тогда получившееся четырёхкомпонентное число - кватернион - будет замечательно описывать поворот в пространстве!
Первоначальная надпись уже стерлась (возможно, её намерено убрали, не поняв тонкой математической души), но уже позже в этом месте повесили памятную табличку, она приведена в начале поста.
UPD. Гораздо более простое доказательство, что "двух мнимых единиц не хватает" но не столь полное, приведено здесь.
В следующий раз мы выпишем правила сложения, умножения и деления кватернионов, а также введем запись из скалярной и векторной части.