Перейти к содержанию

QR-алгоритм

Материал из Мегавики — свободной энциклопедии

QR-алгоритм — это численный метод в линейной алгебре, предназначенный для решения полной проблемы собственных значений, то есть отыскания всех собственных чисел и собственных векторов матрицы. Был разработан в конце 1950-х годов независимо В. Н. Кублановской и Дж. Фрэнсисом[англ.].

Алгоритм[править]

Пусть A — вещественная матрица, для которой мы хотим найти собственные числа и векторы. Положим A0=A. На k-м шаге (начиная с k = 0) вычислим QR-разложение Ak=QkRk, где Qk — ортогональная матрица (то есть QkT = Qk−1), а Rk — верхняя треугольная матрица. Затем мы определяем Ak+1 = RkQk.

Заметим, что

Ak+1=RkQk=Qk1QkRkQk=Qk1AkQk=QkTAkQk,

то есть все матрицы Ak являются подобными, то есть их собственные значения равны.

Пусть все диагональные миноры матрицы A не вырождены. Тогда последовательность матриц Ak при k, сходится по форме к клеточному правому треугольному виду, соответствующему клеткам с одинаковыми по модулю собственными значениями.[1]

Для того, чтобы получить собственные векторы матрицы, нужно перемножить все матрицы Qk.

Алгоритм считается вычислительно устойчивым, т. к. производится ортогональными преобразованиями подобия.

Доказательство для симметричной положительно определённой матрицы[править]

Будем считать, что собственные числа положительно-определённой матрицы A упорядочены по убыванию:

λ1>λ2>...>λn>0.

Пусть

Λ=diag(λ1,...,λn),

а S — матрица, составленная из собственных векторов матрицы A. Тогда, матрица A может быть записана в виде спектрального разложения

A=SΛST.

Найдём выражение для степеней исходной матрицы через матрицы Qk и Rk. С одной стороны, по определению QR-алгоритма:

Ak=A1k=(Q1R1)k=Q1(R1Q1)k1R1=Q1A2k1R1.

Применяя это соотношение рекурсивно, получим:

Ak=Q1...QkRk...R1

Введя следующие обозначения:

Sk=Q1...Qk,
Tk=Rk...R1,

получим

Ak=SkTk.

С другой стороны:

Ak=SΛkST.

Приравнивая правые части последних двух формул, получим:

SΛkST=SkTk.

Предположим, что существует LU-разложение матрицы ST:

ST=LU,

тогда

SΛkLU=SkTk.

Умножим справа на обратную к U матрицу, а затем — на обратную к Λk:

SΛkL=SkTkU1,
SΛkLΛk=SkTkU1Λk.

Можно показать, что

ΛkLΛkdiag(l11,...,lnn)=L.

При k без ограничения общности можно считать, что на диагонали матрицы L стоят единицы, поэтому

SkTkU1ΛkS.

Обозначим

Pk=TkU1Λk,

причём матрица Pk является верхнетреугольной, как произведение верхнетреугольных и диагональных матриц.

Таким образом, мы доказали, что

SkPkS.

Из единственности QR-разложения следует, что если произведение ортогональной и треугольной матрицы сходится к ортогональной матрице, то треугольная матрица сходится к единичной матрице. Из сказанного следует, что

Sk=Q1...QkS.

То есть матрицы Sk сходятся к матрице собственных векторов матрицы A.

Так как

Ak+1=QkTAkQk=...=(QkT...Q1T)A1(Q1...Qk)=(Q1...Qk)TA(Q1...Qk),

то

Ak+1=SkTASk.

Переходя к пределу, получим:

limkAk=limkAk+1=STAS=STSΛSTS=Λ.

Итак, мы доказали, что QR-алгоритм позволяет решить полную проблему собственных значений для симметричной положительно-определённой матрицы.

Реализация QR-алгоритма[править]

При определенных условиях последовательность матриц Ak сходится к треугольной матрице, разложению Шура матрицы A. В этом случае собственные числа треугольной матрицы располагаются на ее диагонали, и задача нахождения собственных чисел считается решенной. В тестах на сходимость не практично требовать точных нулей в нулевой части матрицы, но можно воспользоваться теоремой о кругах Гершгорина, задающей пределы ошибок.

В исходном состоянии матрицы (без дополнительных преобразований) стоимость итераций относительно высока. Стоимость алгоритма можно уменьшить, сначала приведя матрицу A к форме верхней матрицы Хессенберга (стоимость получения которой методом, основанном на преобразовании Хаусхолдера, оценивается как 103n3+O(n2) арифметических операций), и затем используя конечную последовательность ортогональных преобразований подобия. Данный алгоритм чем-то похож на двухсторонюю QR-декомпозицию. (В обычной QR-декомпозиции матрица отражений Хаусхолдера умножается на исходную только слева, тогда как в случае использования формы Хессенберга матрица отражений умножается на исходную и слева, и справа.) Нахождение QR-декомпозиции верхней матрицы Хессенберга оценивается как 6n2+O(n) арифметических операций. Из-за того, что форма матрицы Хессенберга почти верхнетреугольная (у неё только один поддиагональный элемент не равен нулю), удается сразу снизить число итераций требуемых для схождения QR-алгоритма.

В случае, если исходная матрица симметричная, верхняя матрица Хессенберга также симметричная и поэтому является трехдиагональной. Этим же свойством обладает вся последовательность матриц Ak. В этом случае стоимость процедуры оценивается как 43n3+O(n2) арифметических операций с использованием метода, основанного на преобразовании Хаусхолдера. Нахождение QR-разложения симметричной трехдиагональной матрицы оценивается как O(n) операций.

Скорость сходимости зависит от степени разделения собственных чисел, и в практической реализации в явном или неявном виде используюся «сдвиги» для усиления разделения собственных чисел и для ускорения сходимости. В типичном виде для симметричных матриц QR-алгоритм точно находит одно собственное число (уменьшая размерность матрицы) за одну или две итерации, что делает этот подход как эффективным, так и надежным.

Реализация QR-алгоритма в неявном виде[править]

В современной вычислительной практике QR-алгоритм реализуется с использованием его неявной версии, что упрощает добавление множественных «сдвигов». Исходно матрица приводится к форме верхней матрицы Хессенберга A0=QAQT, так же как и в явной версии. Затем, на каждом шаге первая колонка Ak преобразуется через малоразмерное преобразование подобия Хаусхолдера к первой колонке p(Ak) (или p(Ak)e1), где p(Ak) — это полином степени r, который определяет стратегию «сдвигов» (обычно p(x)=(xλ)(xλ¯), где λ и λ¯ — это два собственных числа остаточной подматрицы Ak размера 2×2, это так называемый неявный двойной сдвиг). Затем последовательные преобразования Хаусхолдера размерности r+1 производятся с целью вернуть рабочую матрицу Ak к форме верхней матрицы Хессенберга.

Примечания[править]

  1. Численные методы / Н. С. Бахвалов, Н. П. Жидков, Г. М. Кобельков. — 3-е изд. — М.: БИНОМ, Лаборатория знаний, 2004. — С. 321. — 636 с. — ISBN 5-94774-175-X.

Ссылки[править]