- SingularValueDecompositionDC
- SingularValueDecompositionQR
- SingularValueDecompositionQRPivot
- SingularValueDecompositionBisect
- SingularValueDecompositionJacobiHigh
- SingularValueDecompositionJacobiLow
- SingularValueDecompositionBidiagDC
- SingularValueDecompositionBidiagBisect
- SingularValueDecompositionBidiagQR
SingularValueDecompositionJacobiHigh
Singular Value Decomposition — разложение по сингулярным значениям, алгоритм Jacobi high level (LAPACK-функция GEJSV).
Вычисления для типа matrix<double>
bool matrix::SingularValueDecompositionJacobiHigh(
|
Вычисления для типа matrix<float>
bool matrix::SingularValueDecompositionJacobiHigh(
|
Вычисления для типа matrix<complex>
bool matrix::SingularValueDecompositionJacobiHigh(
|
Вычисления для типа matrix<complexf>
bool matrix::SingularValueDecompositionJacobiHigh(
|
Параметры
joba
[in] Значение из перечисления ENUM_SVDJH_A, определяющее уровень точности расчёта SVD.
jobu
[in] Значение из перечисления ENUM_SVDJH_U, определяющее способ вычисления левых сингулярных векторов.
jobv
[in] Значение из перечисления ENUM_SVDJH_V, определяющее способ вычисления правых сингулярных векторов.
jobr
[in] Значение из перечисления ENUM_SVDJH_R, определяющее диапазон вычисляемых значений.
jobt
[in] Значение из перечисления ENUM_SVDJH_T, определяющее необходимость транспонирования матрицы в случае, когда он квадратная. Если матрица неквадратная, то этот параметр игнорируется.
jobp
[in] Значение из перечисления ENUM_SVDJH_P, определяющее возможность структурированных пертурбаций для удаления денормализованных значений.
S
[out] Вектор сингулярныx значений.
При work(1)/work(2) = единица: сингулярные значения A. Во время вычисления S содержит евклидовы нормы столбцов итерационных матриц в массиве a.
Для work(1)≠work(2): сингулярные значения A равны (work(1)/work(2)) * S(1:n). Такая факторизованная форма используется в случаях, когда σ_max(A) выходит за пределы диапазона представления чисел (overflow, переполнение) или если малые сингулярные значения были сохранены от потери точности (underflow) путем масштабирования входной матрицы A.
При jobr = 'R' некоторые сингулярные значения могут быть возвращены как точные нули, полученные путем "обнуления", если они ниже порога численного ранга или являются денормализованными числами.
U
[out] Матрица левых сингулярных векторов.
V
[out] Матрица правых сингулярных векторов.
work_results
[out] Вектор, состоящий из 7 статистик, полученных в результате расчёта.
work(1) = scale = work(2)/work(1) — коэффициент масштабирования, такой что scale*sva(1:n) — вычисленные сингулярные значения A. См. также описание S.
work(2) = work(1) — см. описание work(1).
work(3) = sconda — это оценка числа обусловленности столбца, уравновешенного A. Если joba = 'E' или 'G', sconda — это оченка sqrt(||(R**t * R)**(-1)||_1). Вычисляется с использованием ?pocon. Удовлетворяет неравенству n**(-1/4) * sconda ≤ ||R**(-1)||_2 ≤ n**(1/4) * sconda, где R — треугольный множитель из QR-разложения матрицы A. Если же R усечен и численный ранг оказывается строго меньше n, sconda возвращается как -1, что означает, что самые малые сингулярные значения могут быть утеряны.
Если требуется полное разложение по сингулярным значениям SVD, для анализа алгоритма полезны следующие два числа обусловленности. Для из использования нужно понимать особенности и детали метода.
work(4) — оценка числа обусловленности треугольного множителя в первом QR-разложении.
work(5) — оценка числа обусловленности треугольного множителя во втором QR-разложении.
Если jobt = 'T', вычисляются два дополнительных параметра. Для их использования необходимо понимать особенности и детали метода.
work(6) — энтропия матрицы A**t*A, равная энтропии Шеннона diag(A**t*A) / Trace(A**t*A), взятой как точка в симплексе вероятности.
work(7) — энтропия матрицы A*A**t.
Возвращаемое значение
Возвращает true в случае успеха, иначе false в случае ошибки.
Примечание
Количество строк матрицы не должно быть меньше количества столбцов.
Перечисление, определяющее уровень точности расчёта SVD.
Идентификатор |
Описание |
---|---|
SVDJHA_C |
Вычисление как в 'C', но с дополнительной оценкой числа обусловленности. Это дает более реалистичную границу погрешности. |
SVDJHA_E |
Вычисление как в SVDJHA_C, но с дополнительной оценкой числа обусловленности. Это дает более реалистичную границу погрешности. |
SVDJHA_F |
Более высокая точность, чем у SVDJHA_C. |
SVDJHA_G |
Вычисление как в SVDJHA_F, но с дополнительной оценкой числа обусловленности. |
SVDJHA_A |
Малые сингулярные значения считаются шумом, и матрица рассматривается как численно вырожденная по рангу. |
SVDJHA_R |
Аналогично SVDJHA_A, но с повышенной точностью. |
Перечисление, определяющее способ вычисления левых сингулярных векторов.
Идентификатор |
Описание |
---|---|
SVDJHU_U |
Возвращаются N столбцов матрицы U в массиве U. |
SVDJHU_F |
Возвращается полный набор из M левых сингулярных векторов в массиве U. |
SVDJHU_N |
Матрица U не вычисляется. |
Перечисление, определяющее способ вычисления правых сингулярных векторов.
Идентификатор |
Описание |
---|---|
SVDJHV_V |
Возвращаются N столбцов матрицы V в массиве V. |
SVDJHV_J |
В массиве V возвращаются N столбцов матрицы V, но они вычисляются как произведение вращений Якоби. |
SVDJHV_N |
V is not computed |
Перечисление, определяющее диапазон вычисляемых значений.
Идентификатор |
Описание |
---|---|
SVDJHR_N |
Не обнулять малые столбцы матрицы c*A. |
SVDJHR_R |
Ограниченный диапазон для sigma(c*A). Этот вариант рекомендуется. |
Перечисление, определяющее необходимость транспонирования матрицы в случае, когда он квадратная.
Идентификатор |
Описание |
---|---|
SVDJHT_T |
Транспонировать, если энтропийный тест указывает на возможную более быструю сходимость процесса Якоби. |
SVDJHT_N |
Не использовать транспонирование. Не делать предположений. |
Перечисление, определяющее возможность структурированных пертурбаций для удаления денормализованных значений.
Идентификатор |
Описание |
---|---|
SVDJHP_P |
Использовать пертурбацию. |
SVDJHP_N |
Не использовать пертурбацию. Do not perturb. |
Смотри также