Уровень алгоритма

Участник:Смирнова Александра/Нахождение собственных чисел квадратной матрицы методом QR разложения (3): различия между версиями

Материал из Алговики
Перейти к навигации Перейти к поиску
Строка 101: Строка 101:
  
 
==== Вещественный вариант QR-алгоритма ====
 
==== Вещественный вариант QR-алгоритма ====
 +
 +
Если вещественная матрица <math>A</math> имеет различные вещественные собственные значения, то, как было описано ранее, QR-алгоритм сходится к матрице с верхней треугольной формой, на диагонали которой находятся собственные значения. Однако вещественная матрица может иметь комплексные собственные значения. В данном случае алгоритм будет сходиться не к верхней треугольной матрице, а к блочной верхней треугольной матрице, которая на диагонали содержит блоки 1-го и 2-го порядка. Блоки 1-го порядка содержат различные вещественные собственные значения, блоки 2-го порядка соответствуют парам комплексных сопряженных собственных значений.
  
 
=== Вычислительное ядро алгоритма ===
 
=== Вычислительное ядро алгоритма ===

Версия 12:29, 14 октября 2016


Нахождение собственных чисел квадратной матрицы методом QR разложения
Последовательный алгоритм
Последовательная сложность N*O(n^3)
Объём входных данных n^2
Объём выходных данных n
Параллельный алгоритм
Высота ярусно-параллельной формы -
Ширина ярусно-параллельной формы -


Основные авторы описания: Смирнова А.С., Киямова А.


Задача нахождения собственных значений и собственных векторов для матрицы A заключается в поиске таких чисел \lambda, которые удовлетворяют уравнению:

Ax=\lambda x, при этом, числа \lambda называются собственными значениями, а вектора x - собственными векторами

Данная задача является одной из важнейших задач линейной алгебры. Собственные вектора и собственные значения применяются в различных областях науки: в аналитической геометрии, при решении систем интегральных уравнений, в математической физике. Однако не существует простых алгоритмов прямого вычисления собственных значений для матриц в общем случае, поэтому данная задача на практике решается численными методами. Одним из таких методов является QR-алгоритм.

1 ЧАСТЬ. Свойства и структура алгоритма

1.1 Общее описание алгоритма


QR-алгоритм — это численный метод в линейной алгебре, предназначенный для решения полной проблемы собственных значений, то есть отыскания всех собственных чисел и собственных векторов матрицы. Был разработан в конце 1950-х годов независимо В. Н. Кублановской(Россия) и Дж. Фрэнсисом(Англия). Открытию QR-алгоритма предшествовал LR-алгоритм, который использовал LU-разложение вместо QR-разложения. В настоящее время LR-алгоритм используется очень редко ввиду своей меньшей эффективности, однако он был важным шагом на пути к открытию QR-алгоритма.

Суть базового QR-алгоритма заключается в итерационном приведении матрицы A к некоторой подобной ей матрице A_N при помощи QR-разложения. Матрица A_N является правой верхней треугольной матрицей, а значит ее диагональ содержит собственные значения. В силу подобия матриц A и A_N их наборы собственных значений совпадают. Таким образом задача поиска собственных значений матрицы A сводится к задаче выведения матрицы A_N и поиска собственных значений для нее, что является тривиальной задачей.

Однако базовый QR-алгоритм может обладать очень низкой скоростью сходимости, поэтому существуют несколько способов ускорить его:

  • Перед итерациями привести матрицу A к подобной ей матрице A_H, которая будет иметь форму Хессенберга. Данный шаг позволит ускорить процесс QR-разложения
  • Использовать QR-алгоритм со сдвигами

В данной статье будет рассмотрен только базовый QR-алгоритм.

1.2 Математическое описание алгоритма


1.2.1 QR-разложение матрицы

Основой алгоритма является тот факт, что любую вещественную матрицу можно разложить на произведение двух матриц следующего вида:

A=QR, где Q - ортогональная матрица (Q^T=Q^{-1}), R - верхняя треугольная матрица

Данное разложение называется QR-разложением.

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

1.2.1.1 Метод Хаусхолдера (отражений) QR-разложения квадратной матрицы
Основная статья: Метод Хаусхолдера (отражений) QR-разложения квадратной матрицы

Суть метода Хаусхолдера заключается в последовательном приведении матрицы A к верхней треугольной форме при помощи домножения ее на так называемые матрицы отражения. Получившаяся треугольная матрица будет искомой матрицей R, а матрица Q будет равна произведению сопряженных матриц отражения.

На i-ом шаге задача i-ой матрицы отражения заключается в обнулении всех поддиагональных элементов i-го столбца матрицы A (при этом столбцы левее i-го не изменяются). Таким образом, алгоритм состоит из n шагов, на каждом из которых вычисляется очередная матрица отражения, после чего найденное отражение применяется к матрице, которая является результатом предыдущего шага.

Матрица отражения имеет вид E-\frac{1}{\gamma }vv^*, где вектор v вычисляется из текущего i-го столбца матрицы при помощи использования операции скалярного произведения векторов. Данное представление матриц отражения позволяет хранить их в виде одного вектора и сводит домножение матрицы отражения на текущую матрицу к арифметическим операциям над векторами (скалярное произведение и сложение векторов).

1.2.1.2 Метод Гивенса (вращений) QR-разложения квадратной матрицы
Основная статья: Метод Гивенса (вращений) QR-разложения квадратной матрицы

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

На каждом шаге задачей матрицы вращения является обнуление одного поддиагонального элемента. Вначале обнуляются все поддиагональные элементы 1-го столбца, затем 2-го и так далее до (n-1)-го. Таким образом, алгоритм состоит из \frac{n(n-1)}{2} шагов на каждом из которых вычисляется очередная матрица вращения, после чего она применяется к матрице, которая является результатом предыдущего шага.

Матрицы вращения T_{ij} по ствоей структуре очень близки к единичным матрицам, за исключением четырех элементов: элементы с номерами ii и jj содержат некоторое число-параметр c, элементы с номерами ij и ji содержат числа-параметры -s и s соответственно. Вычисление параметров c и s происходит на каждом шаге в зависимости от текущей матрицы и состоит из простых численных арифметических операций. Умножение матрицы вращения на текущую матрицу может быть представлено как последовательное изменение элементов с номерами ik и kk для всех столбцов k находящихся правее столбца i. Каждое такое изменение по своей структуре эквивалентно операции перемножения двух комплексных чисел.

1.2.2 QR-алгоритм нахождения собственных чисел

Пусть матрица A - матрица, для которой мы хотим найти собственные значения. Тогда итерационный процесс строится следующим образом:

  1. A_0=A
  2. Пусть имеется матрица A_k, тогда матрица A_{k+1} строится следующим образом:
  • Строится QR-разложение: A_k=Q_kR_k
  • Вычисляется A_{k+1}=R_kQ_k

Заметим, что A_{k+1}=R_kQ_k={Q_{k}^{-1}}Q_kR_kQ_k={Q_{k}^{-1}}A_kQ_k={Q_{k}^{T}}A_kQ_k

Таким образом матрицы A_{k+1} и A_{k} подобны для \forall k, а значит, в силу транзитивности подобия, все матрицы A_{k} подобны матрице A и имеют одинаковый набор собственных значений.

1.2.3 Сходимость алгоритма

Предположим, что для \forall m выполнены следующие условия:

1. A=X\Lambda X^{-1}, где \Lambda =\begin{bmatrix} \Lambda_1 & 0\\ 0 & \Lambda_2 \end{bmatrix}, \Lambda_1\in\mathbb{C}^{m\times m},\Lambda_2\in\mathbb{C}^{r\times r}


2. \left | \lambda_1 \right | \geq ...\geq \left | \lambda_m \right | \gt \left | \lambda_{m+1} \right | \geq ...\geq \left | \lambda_{m+r} \right | \gt 0 , где \{\lambda_1,...,\lambda_m\} = \lambda(\Lambda_1), \{\lambda_{m+1},...,\lambda_{m+r}\} = \lambda(\Lambda_2)


3. Ведущая подматрица порядка m в X^{-1} невырождена


Тогда при k \rightarrow \infty последовательность матриц A_k сходится к матрице с верхней треугольной формой.

Таким образом, на практике необходимо выполнять итерации до тех пор пока матрица A_k не станет треугольной (также можно продолжать выполнять их пока искомая матрица не будет найдена с некоторой заранее заданной точностью \varepsilon). Если итерации закончились на шаге N, то числа на диагонали матрицы A_N будут считаться собственными значениями матрицы A

1.2.4 Вещественный вариант QR-алгоритма

Если вещественная матрица A имеет различные вещественные собственные значения, то, как было описано ранее, QR-алгоритм сходится к матрице с верхней треугольной формой, на диагонали которой находятся собственные значения. Однако вещественная матрица может иметь комплексные собственные значения. В данном случае алгоритм будет сходиться не к верхней треугольной матрице, а к блочной верхней треугольной матрице, которая на диагонали содержит блоки 1-го и 2-го порядка. Блоки 1-го порядка содержат различные вещественные собственные значения, блоки 2-го порядка соответствуют парам комплексных сопряженных собственных значений.

1.3 Вычислительное ядро алгоритма


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

1. Вычисление QR-разложения матрицы: A_k=Q_kR_k. Существует несколько методов решения данной задачи:

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

2. Перемножение двух плотных матриц: A_{k+1}=R_kQ_k

1.4 Макроструктура алгоритма


Как уже было показано ранее, QR-алгоритм содержит в себе две макрооперации:

1.Вычисление QR-разложения матрицы: A_k=Q_kR_k.

2.Перемножение двух плотных матриц: A_{k+1}=R_kQ_k

1.5 Схема реализации последовательного алгоритма


Опишем необходимый для реализации цикл при помощи псевдокода:

A - исходная матрица
curA - текущая матрица, на основе которой будет вычисляться QR-разложение на каждом шаге
nextA - новая матрица, полученная после перемножения матриц R и Q 
triangular - функция, проверяющая, имеет ли матрица верхнюю треугольную форму.
difference - функция, проверяющая, что элементы двух матриц, стоящие на одинаковых местах, различаются не более чем на eps (данная функция нужна чтобы проверять не только сходимость матрицы к верхней треугольной форме, но и сходимость ее ненулевых элементов).
curA = A
nextA = A
while ( not (triangular(nextA) & difference(curA,nextA,eps)) )
{
    curA = nextA
    findQRdecomposition(curA,Q,R)
    nextA = R*Q
}

1.6 Последовательная сложность алгоритма


Подсчитаем сложность одной итерации QR-алгоритма (расчет сложностей для QR-разложения и перемножения матриц представлен в статьях, посвященных данным алгоритмам)

  1. QR-разложение матрицы
  2. Перемножение двух плотных матриц имеет сложность n^3
  3. Проверка матрицы на верхнюю треугольную форму состоит из набора сравнений каждого поддиагонального элемента с нулем (таких элементов \frac{n(n-1)}{2}) и набора логических операций "И" между результатами сравнений (таких операций будет \frac{n(n-1)}{2}-1)
  4. Сравнение новой матрицы с предыдущей состоит из операций вычитания и сравнения для каждой пары ненулевых соответствующих элементов (таких пар будет \frac{n(n+1)}{2}), а также из набора логических операций "И" между результатами сравнений (таких операций будет \frac{n(n+1)}{2}-1)

Итого, в сумме получаем O(n^3) - сложность алгоритма на каждой итерации. Если алгоритм остановился на итерации с номером N, то общая сложность алгоритма будет равна N*O(n^3)

1.7 Информационный граф


На рисунке ниже изображен информационный граф QR-алгоритма. Вершины данного графа обозначают следующее:

  • QR - операция QR-разложения матрицы
  • *M - операция перемножения матриц
  • Triang - операция проверки матрицы на верхнюю треугольную форму
  • Dif - операция проверки различия элементов двух матриц не более чем на некоторое заданное число
Информационный граф QR-алгоритма

Подробные графы операций QR-разложения (Метод Хаусхолдера (отражений), Метод Гивенса (вращений)) и перемножения матриц можно найти в статьях, посвященных этим алгоритмам. Далее рассмотрим информационные графы операций Triang и Dif.

1.8 Ресурс параллелизма алгоритма



1.9 Входные и выходные данные алгоритма


Входные данные:

квадратная вещественная плотная матрица A: A \in \R^{n \times n}

Объем входных данных:

n^2 (необходимо хранить все элементы матрицы)

Выходные данные:

собственные значения матрицы A

Объем выходных данных:

n (квадратная матрица размера n \times n имеет ровно n собственных значений при этом некоторые из них могут быть комплексными)

1.10 Свойства алгоритма


2 ЧАСТЬ. Программная реализация алгоритма

2.1 Масштабируемость алгоритма и его реализации



2.2 Существующие реализации алгоритма


3 Литература