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

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

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

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

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

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

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

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