ComputeThinU VS ComputeFullU в Eigen JacobiSVD - PullRequest
0 голосов
/ 09 февраля 2020

Я пытаюсь решить линейное уравнение, используя JacobiSVD в Eigen. Для JacobiSVD есть два варианта декомпозиции: ComputeThinU и ComputeFullU. Их значения объясняются как

  • ComputeFullU: в JacobiSVD, чтобы указать, что квадратная матрица U должна быть вычислена.
  • ComputeThinU: в JacobiSVD, чтобы указать, что тонкая матрица U должна быть вычислено.

Что означает «тонкая матрица»? И как мне определить, какой вариант использовать?

1 Ответ

1 голос
/ 09 февраля 2020

если вы посмотрите на https://eigen.tuxfamily.org/dox/classEigen_1_1JacobiSVD.html, то в Подробное описание можно найти это

Вы можете запросить только тонкий U или V вычислено, что означает следующее. В случае прямоугольной матрицы angular n-на-p, позволяющей m быть меньшим значением среди n и p, существует только m сингулярных векторов; остальные столбцы U и V не соответствуют фактическим сингулярным векторам. Запрашивать тонкий U или V означает запрашивать только m первых столбцов, которые будут сформированы. Таким образом, U - матрица размером n × m, а V - матрица размером p × m. Обратите внимание на то, что для решения (наименьших квадратов) вам нужны только U и V.

Когда что использовать? Если вам нужны U и V во всей их красе, возьмите «Полный», если вам нужны только первые m столбцы для наименьших квадратов, тогда возьмите «Тонкий». С уважением, М.

...