Python中复稀疏线性代数的极限



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

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

可能您的稀疏求解器比Ab慢,至少部分原因是由于MATLAB脚本的解释器开销。MATLAB内部使用UMFPACK的多正面求解器来求解LU()函数和Ab算子(参见UMFPACK手册)。

您应该尝试scipy.sparse包和scipy.sparse.linalg,以获得可用的求解器分类。特别地,spsolve()函数有一个选项来调用UMFPACK例程,而不是内置的SuperLU求解器。

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

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

您可以从本网站的另一篇文章中了解SuperLU在spsolve和SciPy中可用的迭代求解器中的实现性能。

最新更新