大型非线性方程组求解器

计算科学 稀疏矩阵 图书馆 非线性方程
2021-12-17 13:25:25

我目前正在使用 R 包 nleqslv 来求解具有 300 个变量的非线性方程组。我需要用大约 50k 变量将其扩展到系统,自然这不会很好地扩展,因为雅可比会占用大约 30G 的 RAM,而我无法访问具有如此多 RAM 的机器。雅可比是一个稀疏矩阵,但 nleqslv 没有能力利用这个特性。

有哪些可用的求解器(最好是开源的)可以利用 jacobian 的稀疏性并适用于大型系统?

我四处搜索,发现了很多优化问题的软件,这并不完全适合我,因为我不愿意最小化系统的平方和。我总是可以破解 nleqslv 代码来使用稀疏矩阵,但首先我想知道现在有哪些可用的现成解决方案。

1个回答

PETSc 是一个求解器包,它具有与求解稀疏线性系统的多种不同方法的接口,以及许多不同的非线性方程求解器(将线性求解器用作子程序)。尽管涉及到框架,但它为您提供的灵活性是值得的。

利用稀疏性和可能的​​并行性(如果您可以适当地分解问题中的向量和矩阵)应该有助于缓解您提到的内存瓶颈,因为稀疏表示应该需要更少的内存,并且并行性应该使您能够跨多台机器使用内存, with 应该会增加可用于模拟运行的内存量。