小编Sni*_*rey的帖子

求解多个线性稀疏矩阵方程:“numpy.linalg.solve”与“scipy.sparse.linalg.spsolve”

我必须求解 x 的大量“Ax=B”类型的线性矩阵方程,其中 A 是一个稀疏矩阵,主要填充主对角线,B 是一个向量。

\n\n

我的第一种方法是通过 numpy.linalg.solve 使用密集的 numpy 数组来实现此目的,并且它可以很好地处理 (N,n,n) 维数组,其中 N 是线性矩阵方程的数量,n 是方阵维度。我首先将它与迭代所有方程的 for 循环一起使用,这实际上相当慢。但后来意识到,您也可以将 (N,n,n) 维矩阵直接传递给 numpy.linalg.solve ,而无需任何 for 循环(顺便说一下,我在阅读的文档中没有找到)。这已经大大提高了计算速度(详细信息见下文)。

\n\n

但是,因为我有稀疏矩阵,所以我还查看了 scipy.sparse.linalg.spsolve 函数,它与相应的 numpy 函数执行类似的操作。使用 for 循环迭代所有方程比 numpy 解决方案快得多,但似乎不可能将 (N,n,n) 维数组直接传递给 scipy\xc2\xb4s spsolve。

\n\n

这是我到目前为止所尝试的:

\n\n

首先,我计算一些虚构的 A 矩阵和带有随机数的 B 向量以用于测试目的,包括稀疏和密集:

\n\n
import numpy as np\nfrom scipy import sparse\nfrom scipy.sparse.linalg import spsolve\n\nnumber_of_systems = 100 #corresponds to N in the text\nnumber_of_data_points = 1000 #corresponds to n in the text\n\n#calculation of sample matrices (dense and sparse)\nA_sparse …
Run Code Online (Sandbox Code Playgroud)

python numpy linear-algebra scipy sparse-matrix

6
推荐指数
1
解决办法
2428
查看次数

标签 统计

linear-algebra ×1

numpy ×1

python ×1

scipy ×1

sparse-matrix ×1