SingularValueDecompositionBisect

Singular Value Decomposition — разложение по сингулярным значениям, алгоритм bisection (lapack-функция GESVDX).

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

bool  matrix::SingularValueDecompositionBisect(
   ENUM_SVD_VECTORS    jobv,     // уровень точности расчёта
   ENUM_BLAS_RANGE     range,    // подмножество вычисляемых сингулярных значений
   double              lower,    // нижняя граница подмножества
   double              upper,    // верхняя граница подмножества
   vector&             S,        // вектор рассчитанных сингулярных значений
   matrix&             U,        // матрица рассчитанных левых векторов U
   matrix&             VT        // транспонированная матрица правых векторов VT
   );

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

bool  matrix::SingularValueDecompositionBisect(
   ENUM_SVD_VECTORS    jobv,     // уровень точности расчёта
   ENUM_BLAS_RANGE     range,    // подмножество вычисляемых сингулярных значений
   double              lower,    // нижняя граница подмножества
   double              upper,    // верхняя граница подмножества
   vectorf&            S,        // вектор рассчитанных сингулярных значений
   matrixf&             U,        // матрица рассчитанных левых векторов U
   matrixf&            VT        // транспонированная матрица правых векторов VT
   );

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

bool  matrix::SingularValueDecompositionBisect(
   ENUM_SVD_VECTORS    jobv,     // уровень точности расчёта
   ENUM_BLAS_RANGE     range,    // подмножество вычисляемых сингулярных значений
   double              lower,    // нижняя граница подмножества
   double              upper,    // верхняя граница подмножества
   vector&             S,        // вектор рассчитанных сингулярных значений
   matrixc&            U,        // матрица рассчитанных левых векторов U
   matrixc&            VT        // транспонированная матрица правых векторов VT
   );

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

bool  matrix::SingularValueDecompositionBisect(
   ENUM_SVD_VECTORS    jobv,               // уровень точности расчёта
   ENUM_BLAS_RANGE     range,              // подмножество вычисляемых сингулярных значений
   double              lower,              // нижняя граница подмножества
   double              upper,              // верхняя граница подмножества
   vectorf&            singular_values,    // вектор рассчитанных сингулярных значений
   matrixcf&           u,                  // матрица рассчитанных левых векторов U
   matrixcf&           vt                  // транспонированная матрица правых векторов VT
   );

Параметры

jobv

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

range

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

lower

[in]  Нижняя граница подмножества сингулярных значений, задаётся в зависимости от значения параметра range.

upper

[in]  Верхняя граница подмножества сингулярных значений, задаётся в зависимости от значения параметра range.

S

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

U

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

VT

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

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

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

Примечание

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

При значении BLASRANGE_A все сингулярные значения вычисляются, при этом параметры lower и upper игнорируются.

При значении BLASRANGE_V вычисляются только те сингулярные значения (и их векторы), которые попадают в диапазон вещественных значений, заданных параметрами lower и upper.

При значении BLASRANGE_I вычисляются только те сингулярные значения (и их векторы), которые попадают в диапазон целочисленных индексов, заданных параметрами lower и upper. Например, при параметрах lower=0 и upper=2 вычисляются только первые три сингулярные значения.

ENUM_SVD_VECTORS

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

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

Описание

SVDVECTORS_N

Вычисляются только сингулярные значения, без векторов.

SVDVECTORS_U

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

SVDVECTORS_V

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

SVDVECTORS_UV

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

ENUM_BLAS_RANGE

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

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

Описание

BLASRANGE_A

Будут найдены все сингулярные или собственные значения.

BLASRANGE_V

Будут найдены все сингулярные или собственные значения в полуоткрытом интервале (VL,VU].

BLASRANGE_I

Будут найдены сингулярные или собственные значения с IL-го по IU-е

Смотри также

SingularValueDecompositionDC, SingularValueDecompositionQR, SingularValueDecompositionQRPivot