我将不得不解决一个大型线性系统。我现在正在寻找一个“无矩阵”的求解器(所以我只需要指定一个矩阵向量乘积,而不是矩阵)。据我了解(我不是专家。)LAPACK 不提供此选项。
你能推荐任何图书馆吗?还是我实现这种无矩阵的方法根本不合理?
备注:我计划使用 C++,矩阵来自 PDE 系统的 FEM,但不是对称的。矩阵是稀疏的,但由于我计划自己提供矩阵向量乘积,并且生成的向量将是密集的,因此稀疏不应该在这里发挥作用——据我所知。
问候,迈克尔
我将不得不解决一个大型线性系统。我现在正在寻找一个“无矩阵”的求解器(所以我只需要指定一个矩阵向量乘积,而不是矩阵)。据我了解(我不是专家。)LAPACK 不提供此选项。
你能推荐任何图书馆吗?还是我实现这种无矩阵的方法根本不合理?
备注:我计划使用 C++,矩阵来自 PDE 系统的 FEM,但不是对称的。矩阵是稀疏的,但由于我计划自己提供矩阵向量乘积,并且生成的向量将是密集的,因此稀疏不应该在这里发挥作用——据我所知。
问候,迈克尔
对足够大的线性系统使用无矩阵方法对我来说听起来很合理。
您可能想看看 PETSc 或 Trilinos;这些是两个主要库,可用作许多不同数值方法(预处理器、稀疏线性求解器、可扩展非线性方程求解器、时间步进器、优化)的抽象层。它们还构建了抽象,使得将并行性合并到应用程序中比使用裸 MPI 调用更容易。
如果感兴趣,您还可以查看更高级别的抽象;有许多基于 PETSc 或 Trilinos 的有限元库。