2015-06-09 5 views

ответ

2

Нет. Кажется, что нет никакой программы для прямого вычисления псевдоинверсивной матрицы (хотя here вы можете найти дискуссию о том, как ее можно получить).

Однако явное псевдообратное требование редко требуется. Вместо этого gsl предоставляет подпрограмму

int gsl_linalg_SV_solve (const gsl_matrix * U, const gsl_matrix * V, const gsl_vector * S 
         , const gsl_vector * b, gsl_vector * x) 

см. Документацию here.

Это решает линейную систему A x = b, что эквивалентно применению псевдо-обратной A^+ на b и выходы x = A^+ b.

Перед применением SVD необходимо найти с помощью процедуры gsl_linalg_SV_decomp. Допустимый множитель tol можно включить путем обхода особых значений S и установки значений, меньших tol, на ноль.

(Далее, это личное предложение: отбросьте gsl и переключитесь на Eigen, armadillo или сопоставимые современные библиотеки)

 Смежные вопросы

  • Нет связанных вопросов^_^