В соответствии с, http://arma.sourceforge.net/docs.html#part_c , Armadillo поддерживает следующие функции:
eig_sym
eig_gen
eigs_sym
eigs_gen
svd
svd_econ
Но, похоже, нет такой функции, как «svds_econ», которая работает с «разреженной» матрицей и возвращает единичные значения и векторы.
Есть ли способ достичь этой функциональности в Armadillo?
Разреженный SVD может быть вычислен косвенно. Например, сначала рассчитать X ‘* X или же X * X», и затем передайте полученную матрицу eigs_sym (). Другой способ состоит в том, чтобы сначала построить разреженную матрицу, такую как [нули (м, м) Х; X ‘нули (n, n)], где м а также N указать количество строк и столбцов в Икс.
Вы также можете масштабировать Икс по его 1-норме заранее, чтобы увеличить стабильность.
Начиная с версии 5.0, броненосец имеет СВД () функция для получения ограниченного числа сингулярных значений и сингулярных векторов.