有人知道用于 C++ 的稀疏 SVD 求解器吗?我的问题涉及一些条件不佳的矩阵,这些矩阵可能已将列/行归零。我的数据存储在 uBLAS 矩阵中,它是 Harwell-Boeing 稀疏格式。
我在查找时遇到了一些问题:
SVD 求解器
- 可以对稀疏矩阵进行运算的 SVD 求解器。 Lapack 好像做不到这个?我想将稀疏矩阵传递给函数和稀疏矩阵输出。
- 一种重新组合结果的方法...这样我就可以从 x=b(A^-1) 中读出 xs。我希望这是 x=(b)(v.(d^-1).(u^t))
我希望从 GSL 中重新创建以下两个步骤
gsl_linalg_SV_decomp_jacobi (gsl_matrix * A, gsl_matrix * V, gsl_vector * S)
gsl_linalg_SV_solve (const gsl_matrix * U, const gsl_matrix * V, const gsl_vector * S, const gsl_vector * b, gsl_vector * x)
我也不知道如何用 C++ 包装 FORTRAN 库。 哪里/有任何 PROPACK c/c++ 绑定(bind)?
编辑 1: 我在使用 PROPACK 时遇到了一些麻烦。 PROPACK 是否输出稀疏矩阵?它似乎将 V 输出为“V(LDV,KMAX): DOUBLE PRECISION array.”这意味着它没有?
最佳答案
SVDLIBC是一个带有 partial support for the Harwell-Boeing 的 C 库格式。我对这个库不熟悉,但表面上看起来符合你的要求。
关于c++ - SVD 在 C/C++ 中解决 harwell-boeing 稀疏 a.x=b 系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6577188/