是否有任何函数使用GSL计算矩阵的广义逆?
与R一样,我们有ginv(X, tol = sqrt(.Machine$double.eps))
。
答案 0 :(得分: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
。
在申请之前,必须通过例程gsl_linalg_SV_decomp
找到SVD。您提到的容差因子tol
可以通过循环遍历奇异值S
并将小于tol
的值设置为零来合并。
(此外,这里有个人建议:放弃gsl并切换到Eigen,犰狳或类似的现代图书馆)