- SingularValueDecompositionDC
- SingularValueDecompositionQR
- SingularValueDecompositionQRPivot
- SingularValueDecompositionBisect
- SingularValueDecompositionJacobiHigh
- SingularValueDecompositionJacobiLow
- SingularValueDecompositionBidiagDC
- SingularValueDecompositionBidiagBisect
- SingularValueDecompositionBidiagQR
SingularValueDecompositionJacobiLow
Singular Value Decomposition, алгоритм Jacobi low level (lapack-функция GESVJ). В некоторых случаях вычисляет малые сингулярные значения и их сингулярные векторы гораздо более точно, чем другие подпрограммы SVD.
Вычисления для типа matrix<double>
bool matrix::SingularValueDecompositionJacobiLow(
|
Вычисления для типа matrix<float>
bool matrix::SingularValueDecompositionJacobiLow(
|
Вычисления для типа matrix<complex>
bool matrix::SingularValueDecompositionJacobiLow(
|
Вычисления для типа matrix<complexf>
bool matrix::SingularValueDecompositionJacobiLow(
|
Параметры
jobu
[in] Значение из перечисления ENUM_SVDJL_U, определяющее способ вычисления левых сингулярных векторов.
jobv
[in] Значение из перечисления ENUM_SVDJL_V, определяющее способ вычисления правых сингулярных векторов.
ctol
[in] Порог сходимости, если jobu=SVDJLU_C. При других значениях jobu параметр игнорируется.
mv
[in] Количество рассчитываемых строк матрицы V, если jobv=SVDJLV_A. При других значениях jobv параметр игнорируется.
S
[out] Вектор сингулярныx значений.
В зависимости от значения scale = work(1), где scale — коэффициент масштабирования:
Если scale = 1, S(1:n) содержит вычисленные сингулярные значения матрицы a. В процессе вычислений массив sva содержит евклидовы нормы столбцов итерационных матриц в массиве a.
Если scale ≠ 1, сингулярные значения матрицы a вычисляются как scale*S(1:n). Такая факторизованная форма используется, если некоторые сингулярные значения a могут переполниться (overflow) или потеряться из-за недостаточной точности (underflow).
U
[out] Матрица левых сингулярных векторов.
V
[out] Матрица правых сингулярных векторов (нетранспонированная).
work_results
[out] Вектор, состоящий из 7 статистик, полученных в результате расчёта.
work(1) = scale — коэффициент масштабирования, такой что scale*S(1:n) — вычисленные сингулярные значения A. См. также описание S.
work(2) — количество ненулевых вычисленных сингулярных значений.
work(3) — количество вычисленных сингулярных значений, превышающих порог потери точности (underflow).
work(4) — число итераций вращений Якоби, необходимых для численной сходимости.
work(5) = max_{i.NE.j} |COS(A(:,i),A(:,j))| в последнем цикле. Полезно в случаях, когда ?gesvj не сошёлся, так как позволяет оценить, можно ли использовать результат, а также применимо для пост-фактум анализа.
work(6) — наибольшее абсолютное значение среди синусов углов вращений Якоби в последнем цикле. Может быть полезно для пост-фактум анализа.
Возвращаемое значение
Возвращает true в случае успеха или false, если произошла ошибка.
Примечание
Количество строк матрицы не должно быть меньше количества столбцов.
Перечисление, определяющее способ вычисления левых сингулярных векторов.
Идентификатор |
Описание |
---|---|
SVDJLU_U |
Левые сингулярные векторы, соответствующие ненулевым сингулярным значениям, вычисляются и возвращаются в ведущих столбцах матрицы A |
SVDJLU_C |
Аналогично SVDJLU_U, но с возможностью управления уровнем численной ортогональности вычисленных левых сингулярных векторов. |
SVDJLU_N |
Матрица U не вычисляется. |
Перечисление, определяющее способ вычисления правых сингулярных векторов.
Идентификатор |
Описание |
---|---|
SVDJLV_V |
Матрица V вычисляется |
SVDJLV_A |
Вращения Якоби применяются к матрице V размером MV на N. |
SVDJLV_N |
Матрица V не вычисляется. |
Смотри также