c++ - SVD 在 C/C++ 中解决 harwell-boeing 稀疏 a.x=b 系统?

标签 c++ linear-algebra sparse-matrix numerical-methods svd

有人知道用于 C++ 的稀疏 SVD 求解器吗?我的问题涉及一些条件不佳的矩阵,这些矩阵可能已将列/行归零。我的数据存储在 uBLAS 矩阵中,它是 Harwell-Boeing 稀疏格式。

我在查找时遇到了一些问题:

SVD 求解器

  1. 可以对稀疏矩阵进行运算的 SVD 求解器。 Lapack 好像做不到这个?我想将稀疏矩阵传递给函数和稀疏矩阵输出。
  2. 一种重新组合结果的方法...这样我就可以从 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/

相关文章:

c++ - 将模板类型与常量数值进行比较

c++ - 使用 C++ 和 Qt 链接到网络驱动器

c++ - 字符串转换中的十六进制值

c++ - Eigen中逆矩阵的计算出错

python - scipy.sparse 矩阵的逐点运算

c++ - g++ -D flag 将定义添加到目标文件

c++ - 密集对称矩阵的特征有效类型

矩阵反码(c、c++、fortran 或 tksolver)

data-structures - count-min 草图是否比典型的稀疏矢量格式占用更少的空间?

python - scipy.sparse 矩阵的逐元素幂