SingularValueDecompositionBidiagDC

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

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

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

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

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

Параметры

jobz

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

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.

 

Смотри также

SingularValueDecompositionDC, SingularValueDecompositionQR