# 30. Вычисление SVD.

Сингулярное разложение (Singular Value Decomposition, SVD) – определённого типа разложение прямоугольной матрицы , которое имеет широкое применение и позволяет вычислять сингулярные числа матрицы (они же корни собственных чисел), а также левые и правые сингулярные векторы матрицы (в том числе работает для прямоугольных и вырожденных матриц).

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

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

Теорема. Пусть – матрица полученная из заменой части диагональных элементов нулями: . Тогда .

Последнее равенство можно переписать в ещё более экономичном виде: , где матрица – та же матрица с первыми столбцами, – та же матрица с первыми строками, – та же диагональная матрица обрезанная до размера . Таким образом, при помощи SVD мы можем решать задачу сжатия информации (выделения главной информации, удаление шума).

Алгоритм SVD для матрицы :

1. Вычисляем матрицу .
2. Находим собственные значения матрицы (например, численный итеративный QR-алгоритм).
3. Находим сингулярные значения – диагональ сингулярной матрицы .
4. Находим собственные векторы матрицы . Столбцы матрицы – найденные векторы.
5. Находим левые сингулярные векторы как . Столбцы матрицы – найденные векторы (или из уравнения ).