SingularValueDecompositionBidiagDC

Singular Value Decomposition, алгоритм divide and conquer для бидиагональной матрицы (lapack-функция BDSDC).

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

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

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

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

Параметры

jobz

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

range

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

lower

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

upper

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

S

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

U

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

V

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

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

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

Примечание

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

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

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

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

Бидиагональная матрица — квадратная матрица с ненулевыми главной диагональю и одной из субдиагоналей.

 

Верхняя бидиагональная матрица

[[x, x, 0, 0, 0],
 [0, x, x, 0, 0],
 [0, 0, x, x, 0],
 [0, 0, 0, x, x],
 [0, 0, 0, 0, x]]

Нижняя бидиагональная матрица

[[x, 0, 0, 0, 0],
 [x, x, 0, 0, 0],
 [0, x, x, 0, 0],
 [0, 0, x, x, 0],
 [0, 0, 0, x, x]]

ENUM_SVDBIDIAG_Z

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

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

Описание

SVDJOBZ_V

Compute singular values and singular vectors.

SVDJOBZ_N

Compute singular values only.

ENUM_BLAS_RANGE

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

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

Описание

BLASRANGE_A

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

BLASRANGE_V

Вычисляются все сингулярные или собственные значения в полуоткрытом интервале (VL,VU).

BLASRANGE_I

Вычисляются особые или собственные значения с IL-го по IU-е.

 

Смотри также

SingularValueDecompositionDC, SingularValueDecompositionQR