GSL 中的广义反函数

Generalized Inverse function in GSL

有没有使用GSL计算矩阵广义逆的函数? 就像在 R 中一样,我们有 ginv(X, tol = sqrt(.Machine$double.eps)).

没有。好像没有直接计算矩阵伪逆的例程(虽然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、armadillo 或类似的现代库)