SingularValueDecompositionDC

Singular Value Decomposition — разложение по сингулярным числам, алгоритм "разделяй и властвуй" (divide and conquer). Данный алгоритм считается наиболее быстрым среди других алгоритмов SVD (lapack-функция GESDD).

Вычисления для типа matrix<double>

bool  matrix::SingularValueDecompositionDC(
   ENUM_SVD_Z      jobz,     // способ вычисления левых и правых векторов
   vector&         S,        // вектор рассчитанных сингулярных значений
   matrix&         U,        // матрица рассчитанных левых векторов U
   matrix&         VT        // транспонированная матрица правых векторов VT
   );

Вычисления для типа matrix<float>

bool  matrix::SingularValueDecompositionDC(
   ENUM_SVD_Z      jobz,     // способ вычисления левых и правых векторов
   vectorf&        S,        // вектор рассчитанных сингулярных значений
   matrixf&        U,        // матрица рассчитанных левых векторов U
   matrixf&        VT        // транспонированная матрица правых векторов VT
   );

Вычисления для типа matrix<complex>

bool  matrix::SingularValueDecompositionDC(
   ENUM_SVD_Z      jobz,     // способ вычисления левых и правых векторов
   vector&         S,        // вектор рассчитанных сингулярных значений
   matrixc&        U,        // матрица рассчитанных левых векторов U
   matrixc&        VT        // транспонированная матрица правых векторов VT
   );

Вычисления для типа matrix<complexf>

bool  matrix::SingularValueDecompositionDC(
   ENUM_SVD_Z      jobz,                   // способ вычисления левых и правых векторов
   vectorf&        singular_values,        // вектор рассчитанных сингулярных значений
   matrixcf&       U,                      // матрица рассчитанных левых векторов U
   matrixcf&       VT                      // транспонированная матрица правых векторов VT
   );

Параметры

jobz

[in]  Значение из перечисления ENUM_SVD_Z, определяющее способ вычисления левых и правых сингулярных векторов.

S

[out]  Вектор сингулярныx значений.

U

[out]  Матрица левых сингулярных векторов.

VT

[out]  Матрица правых  сингулярных векторов.

Возвращаемое значение

Возвращает true в случае успеха, иначе false в случае ошибки.

Примечание

Расчёт зависит от значения параметра jobz.

При значении SVDZ_N левые и правые вектора не рассчитываются. Рассчитываются только сингулярные значения.

При значении SVDZ_A рассчитываются полные матрицы векторов U и VT.

При значении SVDZ_S рассчитываются усечённые матрицы векторов U и VT.

ENUM_SVD_Z

Перечисление, определяющее способ вычисления левых и правых сингулярных векторов.

Идентификатор

Описание

SVDZ_N

Столбцы U или строки VT не вычисляются

SVDZ_A      

Все M столбцов U или все N столбцов VT возвращаются в массивах U и VT

SVDZ_S

Первые min(M,N) столбцов U или первые min(M,N) столбцов VT возвращаются в массивах U и VT

Смотри также

SingularValueDecompositionQR, SingularValueDecompositionQRPivot