где c = cosθ и s = грехθ появляются на перекрестках яй и j-ые строки и столбцы. То есть для фиксированного я>j, ненулевые элементы матрицы Гивенса имеют вид:
Продукт г(я, j, θ)Икс представляет собой вращение против часовой стрелки векторИкс в (я, j) самолет θ радианы, отсюда и название вращения Гивенса.
Основное использование вращений Гивенса в числовая линейная алгебра это ввести нули[требуется разъяснение] в векторах или матрицах. Этот эффект может, например, использоваться для вычисления QR-разложение матрицы. Одно преимущество перед Преобразования домовладельцев состоит в том, что их можно легко распараллелить, а во-вторых, часто для очень разреженных матриц они имеют меньшее количество операций.
Стабильный расчет
Когда матрица вращения Гивенса, г(я, j, θ), умножает другую матрицу, А, слева, G A, только строки я и j из А под действием. Таким образом, мы ограничимся следующей задачей против часовой стрелки. Данный а и б, найти c = cosθ и s = грехθ такой, что
где длина вектора .Явный расчет θ редко бывает необходимо или желательно. Вместо этого мы напрямую ищем c и s. Очевидным решением было бы
Однако расчет для р может переполнение или переполнение. Альтернативная формулировка, позволяющая избежать этой проблемы (Голуб и Ван Лоан 1996, §5.1.8) реализован как гипотеза работают на многих языках программирования.
Следующий код Фортрана представляет собой минималистичную реализацию вращения Гивенса для действительных чисел. Если входные значения 'a' или 'b' часто равны нулю, код может быть оптимизирован для обработки этих случаев, как представлено Вот.
Кроме того, как обнаружил Эдвард Андерсон, улучшая ЛАПАК, численное рассмотрение, о котором раньше не замечали, - это непрерывность. Для этого нам потребуется р быть позитивным.[2] Следующее MATLAB/GNU Octave код иллюстрирует алгоритм.
функция[c, s, r] =givens_rotation(а, б)еслиб==0;c=знак(а);если(c==0);c=1.0;% В отличие от других языков, знаковая функция MatLab возвращает 0 на входе 0.конец;s=0;р=пресс(а); elseif а == 0;c=0;s=знак(б);р=пресс(б); elseif абс (а)> абс (б);т=б/а;ты=знак(а)*sqrt(1+т*т);c=1/ты;s=c*т;р=а*ты; ещет = а / б;ты=знак(б)*sqrt(1+т*т);s=1/ты;c=s*т;р=б*ты;конец;
В IEEE 754копия (х, у) функция, обеспечивает безопасный и дешевый способ скопировать знак y к Икс. Если это недоступно, |Икс| ⋅sgn (y), с использованием пресс и sgn functions, является альтернативой, как описано выше.
Треугольная форма
Учитывая следующие 3×3 Матрица:
выполнить две итерации вращения Гивенса (обратите внимание, что используемый здесь алгоритм вращения Гивенса немного отличается от приведенного выше), чтобы получить верхний треугольная матрица чтобы вычислить QR-разложение.
Чтобы сформировать желаемую матрицу, мы должны обнулить элементы (2,1) и (3,2). Сначала выбираем элемент (2,1) к нулю. Используя матрицу вращения:
У нас есть следующее матричное умножение:
где
Вставляя эти значения для c и s и выполнение матричного умножения выше дает А2:
Теперь мы хотим обнулить элемент (3,2) чтобы завершить процесс. Используя ту же идею, что и раньше, у нас есть матрица вращения:
Нам представляется следующее матричное умножение:
где
Вставляя эти значения для c и s и выполнение умножения дает нам А3:
Эта новая матрица А3 - верхняя треугольная матрица, необходимая для выполнения итерации QR-разложение. Q теперь формируется с использованием транспонирования матриц вращения следующим образом:
Выполнение этого матричного умножения дает:
Это завершает две итерации вращения Гивенса и вычисление QR-разложение теперь можно сделать.
Вращения Гивенса в алгебрах Клиффорда
В Алгебры Клиффорда и его дочерние структуры вроде геометрическая алгебра вращения представлены бивекторы. Повороты Гивенса представлены внешним произведением базисных векторов. Для любой пары базисных векторов Бивекторы вращения Гивенса:
Когда повороты выполняются в правильном порядке, значения углов поворота финального кадра будут равны Углы Эйлера финального кадра в соответствующем соглашении. Например, оператор превращает основу пространства в раму с углами крена, тангажа и рыскания в Конвенция Тейта – Брайанаz-Икс-y (соглашение, согласно которому линия узлов перпендикулярна z и Y топоры, также называемые Y-ИКС'-Z ″).
Смысл композиции двух вращений Гивенса г ∘ ж - оператор, который сначала преобразует векторы с помощью ж а затем г, будучи ж и г вращения вокруг одной оси основы пространства. Это похоже на эквивалентность внешнего вращения для углов Эйлера.
Таблица составленных вращений
В следующей таблице показаны три поворота Гивенса, эквивалентные различным соглашениям об углах Эйлера с использованием внешней композиции (композиции вращений вокруг базисных осей) активные вращения и правило правой руки для положительного знака углов.
Обозначения были упрощены таким образом, что c1 означает потому чтоθ1 и s2 означает грехθ2). Субиндексы углов - это порядок, в котором они применяются, используя внешний состав (1 для собственного вращения, 2 для нутации, 3 для прецессии)
Поскольку вращения применяются только в порядке, обратном Таблица углов Эйлера поворотов, эта таблица такая же, но поменять местами индексы 1 и 3 в углах, связанных с соответствующей записью. Запись вроде zxy означает сначала применить y вращение, то Икс, и наконец z, в осях основания.
Все композиции предполагают правильное соглашение об умножении матриц, что дает следующие результаты.
^В матрица вращения непосредственно ниже не вращение Гивенса. В матрица непосредственно ниже соответствует правилу правой руки и является этой обычной матрицей, которую можно увидеть в компьютерной графике; однако вращение Гивенса - это просто матрица, как определено в Матричное представление раздел выше и не обязательно соблюдает правило правой руки. Приведенная ниже матрица на самом деле представляет собой вращение Гивенса на угол -.
Нажмите, WH; Теукольский С.А.; Феттерлинг, штат Вашингтон; Фланнери, BP (2007), «Раздел 11.3.1. Метод Гивенса», Числовые рецепты: искусство научных вычислений (3-е изд.), Нью-Йорк: Издательство Кембриджского университета, ISBN978-0-521-88068-8