SingularValueDecompositionQR

Singular Value Decomposition, QR алгоритм. Данный алгоритм считается классическим алгоритмом SVD (lapack-функция GESVD).

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

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

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

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

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

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

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

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

Параметры

jobu

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

jobv

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

S

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

U

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

VT

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

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

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

Примечание

Расчёт зависит от значений параметров jobu и jobv.

При значении SVDZ_N левые (jobu) или правые (jobv) вектора не рассчитываются. Сингулярные значения рассчитываются всегда.

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

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

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

Смотри также

SingularValueDecompositionDC, SingularValueDecompositionQRPivot