Открыть сервисСервис

Приведение матрицы к форме Хессенберга

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

Определение и виды

Матрица H размера n×n называется верхней матрицей Хессенберга, если для всех индексов i > j+1 выполняется условие h<sub>ij</sub> = 0. Иными словами, ненулевые элементы могут находиться только на главной диагонали, первой наддиагонали и выше. Нижняя форма Хессенберга определяется аналогично: h<sub>ij</sub> = 0 для всех j > i+1.

Верхняя форма используется чаще, так как она напрямую связана с QR-алгоритмом поиска собственных значений. Нижняя форма получается транспонированием верхней.

Методы приведения

Существуют два основных класса методов приведения матрицы к форме Хессенберга: на основе преобразований Гаусса (отражений Хаусхолдера) и на основе вращений Гивенса.

Метод отражений Хаусхолдера

Этот метод является наиболее распространённым благодаря своей численной устойчивости. На каждом шаге k (от 1 до n−2) строится матрица отражения (хаусхолдеровская матрица) P<sub>k</sub>, которая обнуляет все элементы под поддиагональю в k-м столбце. Преобразование выполняется по формуле:

A<sub>k+1</sub> = P<sub>k</sub><sup>T</sup> A<sub>k</sub> P<sub>k</sub>

При этом левое умножение обнуляет элементы в столбце, а правое — сохраняет уже полученные нули в строках. Сложность алгоритма составляет примерно (10/3)*n³ арифметических операций, что вдвое меньше, чем при приведении к полной треугольной форме.

Метод вращений Гивенса

Данный подход использует последовательность плоских вращений для обнуления отдельных элементов. Он требует большего числа операций (примерно (14/3)*n³), но обладает лучшими свойствами для разреженных матриц и удобен для параллельных вычислений. На практике применяется реже, чем метод Хаусхолдера.

Свойства и особенности

  • Подобие: Преобразование является преобразованием подобия, поэтому собственные значения исходной матрицы A и полученной матрицы H полностью совпадают.
  • Сохранение структуры: Если исходная матрица симметрична, то после приведения к форме Хессенберга она становится трёхдиагональной, что дополнительно упрощает дальнейшие вычисления.
  • Инвариантность: Форма Хессенберга не является единственной — она зависит от конкретного алгоритма и порядка обнуления элементов. Однако все такие формы связаны между собой диагональным подобием.

Применение

Основная область применения — численные методы линейной алгебры, в частности:

  • QR-алгоритм: Приведение к форме Хессенберга является обязательным предварительным шагом перед итерационным QR-алгоритмом для вычисления всех собственных значений матрицы. Это сокращает стоимость одной итерации с O(n³) до O(n²).
  • Решение матричных уравнений: В некоторых итерационных методах (например, метод Арнольди) форма Хессенберга используется для построения проекционного подпространства Крылова.
  • Матричные функции: Вычисление функций от матриц (экспонента, синус и др.) часто начинается с приведения матрицы к форме Хессенберга для ускорения вычислений.

Пример

Рассмотрим матрицу 4×4:

`` A = [ 4 1 2 3 1 5 0 1 2 0 6 2 3 1 2 7 ] ``

После приведения методом Хаусхолдера к верхней форме Хессенберга получается матрица вида:

`` H = [ 4.0 -3.74 0.00 0.00 -3.74 5.23 1.63 0.00 0.00 1.63 6.77 2.15 0.00 0.00 2.15 7.00 ] ``

Как видно, все элементы ниже первой поддиагонали равны нулю, а собственные значения матриц A и H идентичны.

Программная реализация

Приведение к форме Хессенберга реализовано во всех основных библиотеках численных методов, включая LAPACK (подпрограмма dgehrd), MATLAB (функция hess), NumPy (функция numpy.linalg.hessenberg в версиях 2.0+) и SciPy (функция scipy.linalg.hessenberg).

Источники

  • Голуб Дж., Ван Лоун Ч. Матричные вычисления. — М.: Мир, 1999.
  • Уилкинсон Дж. Х., Райнш К. Справочник алгоритмов на языке АЛГОЛ. Линейная алгебра. — М.: Машиностроение, 1976.
  • Деммель Дж. Вычислительная линейная алгебра. — М.: Мир, 2001.
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru