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

Участник:Davletshuna Alexandra/Метод Якоби вычисления сингулярных чисел и векторов: различия между версиями

Материал из Алговики
Перейти к навигации Перейти к поиску
м (Davletshuna Alexandra переименовал страницу Участник:Davletshuna Alexandra в [[Участник:Давлетшина Александра, Зайцева Александра/Метод Якоби вычисления…)
Строка 14: Строка 14:
  
 
=== Общее описание алгоритма ===
 
=== Общее описание алгоритма ===
 +
'''Сингулярным разложением''' называется разложение прямоугольной вещественной или комплексной матрицы, имеющее широкое применение, в силу своей наглядной геометрической интерпретации, при решении многих прикладных задач. Сингулярное разложение матрицы А позволяет вычислять сингулярные числа данной матрицы, а также, левые и правые сингулярные векторы матрицы А:
 +
 +
• левые сингулярные векторы матрицы А — это собственные векторы матрицы <math>AA^*</math>;
 +
 +
• правые сингулярные векторы матрицы A — это собственные векторы матрицы <math>A^*A</math>.
 +
 +
Из многочисленных разложений матриц, наиболее удобным является сингулярное разложение матрицы в виде: <math>A=U\Sigma V^*</math>, где <math>U, V</math> – унитарные матрицы, а <math>\Sigma</math> – диагональная матрица с вещественными положительными числами на диагонали <ref>http://algorithms.parallel.ru/</ref>.
 +
 +
Диагональные элементы матрицы <math>\Sigma</math> называются сингулярными числами матрицы <math>A</math>, а столбцы матриц <math>U,V</math> левыми и правыми сингулярными векторами соответственно.
 +
 +
Алгоритм Якоби сингулярного разложения матрицы был предложен одним из первых в 1846 году. Он приводит прямоугольную матрицу к диагональной матрице с помощью последовательности элементарных вращений. Метод может найти все сингулярные значения с очень высокой точностью. Однако его производительность является довольно низкой, в сравнении с конкурирующими методами.
 +
 +
''Неявный''<ref>Дж. Деммель «Вычислительная линейная алгебра» (стр. 261-264)</ref> метод Якоби математически эквивалентен применению метода Якоби вычисления собственных значений к матрице <math>A = G^TG</math>.
 +
Это значит, что на каждом шаге вычисляется вращение Якоби <math>J</math>, с помощью которого матрица <math>G^TG</math> неявно пересчитывется в <math>J^TG^TGJ</math>; вращение выбрано так, чтобы пара внедиагональных элементов из <math>G^TG</math> обратилась в нули в матрице <math>J^TG^TGJ</math>. При этом ни <math>G^TG</math>, ни <math>J^TG^TGJ</math> не вычисляются в явном виде; вместо них вычисляется матрица <math>GJ</math>. Поэтому алгоритм называется ''методом односторонних вращений''.
  
 
=== Математическое описание алгоритма ===
 
=== Математическое описание алгоритма ===

Версия 08:12, 15 октября 2016



Метод Якоби вычисления сингулярных чисел и векторов
Последовательный алгоритм
Последовательная сложность [math]O(n^3)[/math]
Объём входных данных [math]\frac{n (n + 1)}{2}[/math]
Объём выходных данных [math]\frac{n (n + 1)}{2}[/math]
Параллельный алгоритм
Высота ярусно-параллельной формы [math][/math]
Ширина ярусно-параллельной формы [math][/math]


Авторы статьи: Давлетшина Александра (группа 619), Зайцева Александра (группа 601)

1 Свойства и структура алгоритма

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

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

• левые сингулярные векторы матрицы А — это собственные векторы матрицы [math]AA^*[/math];

• правые сингулярные векторы матрицы A — это собственные векторы матрицы [math]A^*A[/math].

Из многочисленных разложений матриц, наиболее удобным является сингулярное разложение матрицы в виде: [math]A=U\Sigma V^*[/math], где [math]U, V[/math] – унитарные матрицы, а [math]\Sigma[/math] – диагональная матрица с вещественными положительными числами на диагонали [1].

Диагональные элементы матрицы [math]\Sigma[/math] называются сингулярными числами матрицы [math]A[/math], а столбцы матриц [math]U,V[/math] левыми и правыми сингулярными векторами соответственно.

Алгоритм Якоби сингулярного разложения матрицы был предложен одним из первых в 1846 году. Он приводит прямоугольную матрицу к диагональной матрице с помощью последовательности элементарных вращений. Метод может найти все сингулярные значения с очень высокой точностью. Однако его производительность является довольно низкой, в сравнении с конкурирующими методами.

Неявный[2] метод Якоби математически эквивалентен применению метода Якоби вычисления собственных значений к матрице [math]A = G^TG[/math]. Это значит, что на каждом шаге вычисляется вращение Якоби [math]J[/math], с помощью которого матрица [math]G^TG[/math] неявно пересчитывется в [math]J^TG^TGJ[/math]; вращение выбрано так, чтобы пара внедиагональных элементов из [math]G^TG[/math] обратилась в нули в матрице [math]J^TG^TGJ[/math]. При этом ни [math]G^TG[/math], ни [math]J^TG^TGJ[/math] не вычисляются в явном виде; вместо них вычисляется матрица [math]GJ[/math]. Поэтому алгоритм называется методом односторонних вращений.

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

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

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

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

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

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

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

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

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

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

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

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

Метод Якоби нахождения сингулярных значений и векторов реализован в пакете LAPACK. В связи с тем, что алгоритм считается медленным, он не включен во многие известные пакеты.

3 Литература

1. Дж. Деммель Вычислительная линейная алгебра. Изд. Мир, 2001.

  1. http://algorithms.parallel.ru/
  2. Дж. Деммель «Вычислительная линейная алгебра» (стр. 261-264)