SingularValueDecompositionQRPivot

Singular Value Decomposition, алгоритм QR with pivoting (LAPACK-функция GESVDQ).

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

bool  matrix::SingularValueDecompositionQRPivot(
   ENUM_SVDQRP_A   joba,     // уровень точности расчёта
   ENUM_SVDQRP_P   jobp,     // использование переворота строк для расчёта
   ENUM_SVDQRP_R   jobr,     // использование треугольной матрицы R для расчёта
   ENUM_SVDQRP_U   jobu,     // способ вычисления левых векторов
   ENUM_SVDQRP_V   jobv,     // способ вычисления правых векторов
   vector&         S,        // вектор рассчитанных сингулярных значений
   matrix&         U,        // матрица рассчитанных левых векторов U
   matrix&         VT        // транспонированная матрица правых векторов VT
   );

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

bool  matrix::SingularValueDecompositionQRPivot(
   ENUM_SVDQRP_A   joba,     // уровень точности расчёта
   ENUM_SVDQRP_P   jobp,     // использование переворота строк для расчёта
   ENUM_SVDQRP_R   jobr,     // использование треугольной матрицы R для расчёта
   ENUM_SVDQRP_U   jobu,     // способ вычисления левых векторов
   ENUM_SVDQRP_V   jobv,     // способ вычисления правых векторов
   vectorf&        S,        // вектор рассчитанных сингулярных значений
   matrixf&        U,        // матрица рассчитанных левых векторов U
   matrixf&        VT        // транспонированная матрица правых векторов VT
   );

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

bool  matrix::SingularValueDecompositionQRPivot(
   ENUM_SVDQRP_A   joba,     // уровень точности расчёта
   ENUM_SVDQRP_P   jobp,     // использование переворота строк для расчёта
   ENUM_SVDQRP_R   jobr,     // использование треугольной матрицы R для расчёта
   ENUM_SVDQRP_U   jobu,     // способ вычисления левых векторов
   ENUM_SVDQRP_V   jobv,     // способ вычисления правых векторов
   vector&         S,        // вектор рассчитанных сингулярных значений
   matrixc&        U,        // матрица рассчитанных левых векторов U
   matrixc&        VT        // транспонированная матрица правых векторов VT
   );

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

bool  matrix::SingularValueDecompositionQRPivot(
   ENUM_SVDQRP_A   joba,                   // уровень точности расчёта
   ENUM_SVDQRP_P   jobp,                   // использование переворота строк для расчёта
   ENUM_SVDQRP_R   jobr,                   // использование треугольной матрицы R для расчёта
   ENUM_SVDQRP_U   jobu,                   // способ вычисления левых векторов
   ENUM_SVDQRP_V   jobv,                   // способ вычисления правых векторов
   vectorf&        singular_values,        // вектор рассчитанных сингулярных значений
   matrixcf&       u,                      // матрица рассчитанных левых векторов U
   matrixcf&       vt                      // транспонированная матрица правых векторов VT
   );

Параметры

joba

[in]  Значение из перечисления ENUM_SVDQRP_A, определяющее уровень точности расчёта SVD.

jobp

[in]  Значение из перечисления ENUM_SVDQRP_P, определяющее использование переворота строк в процессе расчёта.

jobr

[in]  Значение из перечисления ENUM_SVDQRP_R, определяющее необходимость транспонирования треугольной матрицы R, полученной в результате начальной QR-факторизации.

jobu

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

jobv

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

S

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

U

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

VT

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

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

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

Примечание

Количество строк матрицы не должно быть меньше количества столбцов.

Если рассчитываются и левые, и правые сингулярные векторы, то при установленном значении jobu=SVDQRPU_R значение jobv должно быть установлено в SVDQRPV_R.

ENUM_SVDQRP_A

Перечисление, определяющее уровень точности расчёта SVD.

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

Описание

SVDQRP_A

Запрошенная точность соответствует обратной ошибке, ограниченной эпсилоном. Это агрессивный уровень усечения.

SVDQRPA_M      

Аналогично SVDQRP_A, но усечение более мягкое. Это средний уровень усечения.

SVDQRPA_H

Требуется высокая точность.

ENUM_SVDQRP_P

Перечисление, определяющее использование переворота строк в процессе расчёта.

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

Описание

SVDQRPP_P

Строки A упорядочены в порядке убывания. Рекомендуется для числовой надежности.

SVDQRPP_N      

Нет поворота строк.

ENUM_SVDQRP_R

Перечисление, определяющее необходимость транспонирования треугольной матрицы R, полученной в результате начальной QR-факторизации.

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

Описание

SVDQRPR_T

После первоначальной повернутой QR-факторизации GESVD применяется к транспонированному R**T вычисленного треугольного множителя R.

SVDQRPR_N      

Треугольный множитель R задается как входные данные для GESVD.

ENUM_SVDQRP_U

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

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

Описание

SVDQRPU_A

Вычисляются все M левых сингулярных векторов.

SVDQRPU_S

Вычисляется min(M,N) левых сингулярных векторов.

SVDQRPU_R

Определяется числовой ранг NUMRANK и вычисляется только NUMRANK левых сингулярных векторов.

SVDQRPU_F

Возвращаются N левых сингулярных векторов.

SVDQRPU_N

Левые сингулярные векторы не вычисляются.

ENUM_SVDQRP_V

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

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

Описание

SVDQRPV_A

Все N правых сингулярных векторов вычисляются.

SVDQRPV_R

Числовой ранг NUMRANK определяется и вычисляются только NUMRANK правых сингулярных векторов.

SVDQRPV_N

Правые сингулярные векторы не вычисляются.

Смотри также

SingularValueDecompositionDC, SingularValueDecompositionQR