Участница:Ekaterina.ivkina/Метод Якоби вычисления сингулярных чисел и векторов
| Метод Якоби вычисления сингулярных чисел и векторов | |
| Последовательный алгоритм | |
| Последовательная сложность | [math]\displaystyle{ }[/math] |
| Объём входных данных | [math]\displaystyle{ }[/math] |
| Объём выходных данных | [math]\displaystyle{ }[/math] |
| Параллельный алгоритм | |
| Высота ярусно-параллельной формы | [math]\displaystyle{ }[/math] |
| Ширина ярусно-параллельной формы | [math]\displaystyle{ }[/math] |
Свойства и структура алгоритма
Общее описание алгоритма
Сингулярное разложение было первоначально разработано в дифференциальной геометрии при изучении свойств билинейных форм учеными Эудженио Бельтрами и Камилем Жорданом независимо в 1873 и 1874 годах соответственно. Первое доказательство сингулярного разложения для прямоугольных и комплексных матриц было осуществлено математиками Карлом Эскартом и Гэйлом Янгом в 1936 году.
Сингулярное разложение (Singular Values Decomposition, SVD) является удобным методом при работе с матрицами. Cингулярное разложение показывает геометрическую структуру матрицы и позволяет наглядно представить имеющиеся данные. Сингулярное разложение используется при решении самых разных задач — от приближения методом наименьших квадратов и решения систем уравнений до сжатия и распознавания изображений. Используются разные свойства сингулярного разложения, например, способность показывать ранг матрицы и приближать матрицы данного ранга. Так как вычисления ранга матрицы — задача, которая встречается очень часто, то сингулярное разложение является довольно популярным методом.
Сингулярным разложением матрицы [math]\displaystyle{ G (n \times n) }[/math] называется разложение вида [math]\displaystyle{ G = U \Sigma V^T }[/math] , где [math]\displaystyle{ U, V }[/math] - унитарные матрицы [math]\displaystyle{ n \times n }[/math], [math]\displaystyle{ \Sigma }[/math] - диагональная матрица [math]\displaystyle{ n \times n }[/math] с вещественными положительными числами на главной диагонали. Столбцы матриц [math]\displaystyle{ U, V }[/math] называются соответственно левыми и правыми сингулярными векторами, а значения на диагонали матрицы [math]\displaystyle{ \Sigma }[/math] - сингулярными значениями матрицы [math]\displaystyle{ G }[/math].
Одним из методов нахождения сингулярного разложения матрицы является метод Якоби. Метод Якоби был предложен Карлом Густавом Якоби Якоби в 1846 году и представляет собой итерационный алгоритм вычисления собственных значений и собственных векторов симметричной матрицы. Для вычисления собственных значений необходимо неявно применить метод Якоби к симметричной матрице [math]\displaystyle{ A = G^T G }[/math]. На каждом шаге вычисляется вращение Якоби [math]\displaystyle{ J }[/math], с помощью которого матрица [math]\displaystyle{ G^TG }[/math] неявно пересчитывется в [math]\displaystyle{ J^TG^TGJ }[/math]; вращение выбрано так, чтобы пара внедиагональных элементов из [math]\displaystyle{ G^TG }[/math] обратилась в нули в матрице [math]\displaystyle{ J^TG^TGJ }[/math]. При этом ни [math]\displaystyle{ G^TG }[/math], ни [math]\displaystyle{ J^TG^TGJ }[/math] не вычисляются в явном виде; вместо них вычисляется матрица [math]\displaystyle{ GJ }[/math]. Поэтому алгоритм называется методом односторонних вращений.
Математическое описание алгоритма
Исходные данные: Матрица [math]\displaystyle{ G }[/math] размера [math]\displaystyle{ (n \times n) }[/math] над полем вещественных или комплексных чисел.
Вычисляемые данные:
- [math]\displaystyle{ \sigma_i }[/math] - сингулярные числа матрицы [math]\displaystyle{ G }[/math],
- [math]\displaystyle{ U }[/math] - матрица левых сингулярных векторов,
- [math]\displaystyle{ V }[/math] - матрица правых сингулярных векторов.
Основные формулы метода:
[math]\displaystyle{ \sigma_i = \parallel G'(:,i)\parallel_2 }[/math] (2-я норма [math]\displaystyle{ i }[/math]-го столбца в [math]\displaystyle{ G' }[/math]).
[math]\displaystyle{ U = [u_1, \dots, u_n] }[/math], где [math]\displaystyle{ u_i = G'(:,i)/\sigma_i }[/math].
[math]\displaystyle{ V = J }[/math], где [math]\displaystyle{ J }[/math] - накопленное произведение вращений Якоби.
В формулах выше матрица [math]\displaystyle{ G' }[/math] получается многократным применением одностороннего вращения Якоби к исходной матрице [math]\displaystyle{ G }[/math].
Основные формулы процедуры одностороннего вращения Якоби:
Пусть [math]\displaystyle{ a_{ij} }[/math] - элемент, расположенный в [math]\displaystyle{ i }[/math]-ой строке и [math]\displaystyle{ j }[/math]-ом столбце матрицы [math]\displaystyle{ G^TG }[/math].
[math]\displaystyle{ \tau = (a_{jj} - a_{kk})/(2 \dot a_{jk}) }[/math]
[math]\displaystyle{ t = sign(\tau)/(|\tau|+\sqrt{1+\tau^2}) }[/math]
[math]\displaystyle{ c = 1/\sqrt{1+t^2} }[/math]
- Приведение матрицы [math]\displaystyle{ G^TG }[/math] к диагональному виду методом односторонних вращений Якоби:
Вычислительное ядро алгоритма
Макроструктура алгоритма
Схема реализации последовательного алгоритма
Последовательная сложность алгоритма
Информационный граф
Ресурс параллелизма алгоритма
Входные и выходные данные алгоритма
Свойства алгоритма
Программная реализация алгоритма
Особенности реализации последовательного алгоритма
Локальность данных и вычислений
Возможные способы и особенности параллельной реализации алгоритма
Масштабируемость алгоритма и его реализации
Динамические характеристики и эффективность реализации алгоритма
Выводы для классов архитектур
Существующие реализации алгоритма
Литература
<references \>