Python 中复杂稀疏线性代数的限制

Limits on Complex Sparse Linear Algebra in Python

我正在为具有对称结构和不对称值的非常大 (100,000 x 100,000) 非常稀疏 (0.01% 填充) 复杂 (a+b*i) 矩阵的线性规划和矩阵操作设计数值算法原型。我已经愉快地使用 MATLAB 七年了,但一直收到切换到 Python 的建议,因为它是开源的。

我知道有许多不同的 Python 数值包可用,但是 Python 对处理这些类型的矩阵和高速实时解决线性优化问题有什么限制吗? Python 是否有一个稀疏复数矩阵求解器,其速度可与 MATLAB 的反斜杠 A\b 运算符相媲美? (我写过高斯和 LU 代码,但 A\B 总是比我尝试过的任何其他代码快至少 5 倍,并且与矩阵大小成线性比例。)

您的稀疏求解器可能比 A\b 慢,至少部分原因是 MATLAB 脚本的解释器开销。在内部,MATLAB 将 UMFPACK 的多边求解器用于 LU() 函数和 A\b 运算符(参见 UMFPACK manual)。

您应该 scipy.sparse package with scipy.sparse.linalg 尝试使用各种可用的求解器。特别是,spsolve() 函数可以选择调用 UMFPACK 例程而不是内置的 SuperLU 求解器。

... solving linear optimization problems in real time at high speed?

由于时间限制,您可能需要考虑迭代求解器而不是直接求解器。

您可以从本网站的 another post 了解 SciPy 中可用的 spsolve 和迭代求解器中 SuperLU 实现的性能。