【问题标题】:Limits on Complex Sparse Linear Algebra in PythonPython 中复杂稀疏线性代数的限制
【发布时间】:2026-01-30 00:05:01
【问题描述】:

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

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

【问题讨论】:

    标签: python matlab matrix linear-programming


    【解决方案1】:

    您的稀疏求解器可能比 A\b 慢,至少部分原因是 MATLAB 脚本的解释器开销。在内部,MATLAB 使用 UMFPACK 的多前沿求解器来处理 LU() 函数和 A\b 运算符(请参阅 UMFPACK manual)。

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

    ...高速实时求解线性优化问题?

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

    您可以通过本网站上的another post 了解 SciPy 中提供的 spsolve 和迭代求解器中 SuperLU 实现的性能。

    【讨论】: